前言:
公司项目太多,老大要求把项目中的某个模块打成aar包以供别的项目直接使用,然后就在网上查找资料,悲催的是网上的资料千篇一律(可能是我没有查找到吧),然后就和同事摸索着前进.aar介绍就不说了,网上一搜有很多.下面正式进入aar打包的步骤
一:生成aar的步骤
1.用android studio新建一个工程,然后在工程下新建一个Module,新建Module时候选择Android Library:
2.选择Module类型为android library
3.接下来一路next,最后生成了一个mylibrary的module
二:关于打aar包的那些问题
1.关于butterKnife
butterknife当前版本是8.4.0,已经提供了对library project的支持,github主页的使用步骤总结一下就是
1.1. To use Butter Knife in a library, add the plugin to your buildscript:
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.jakewharton:butterknife-gradle-plugin:8.4.0'
}
}
1.2. and then apply it in your module:
apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'
dependencies {
compile 'com.jakewharton:butterknife:8.4.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.4.0'
}
1.3. Now make sure you use R2 instead of R inside all Butter Knife annotations.
class PersonInfoActivity extends Activity {
@BindView(R2.id.username) EditText username;
@BindView(R2.id.userage) EditText userage;
}
但是按照这个步骤操作后并没有效果,用@BindView的地方提示NullPointerException,用@onClick的标注的点击事件,点击后也没有反应,解决方案:
修改1.1为>>
buildscript {
repositories {
jcenter()
mavenCentral()
}
dependencies {
classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
classpath ‘com.jakewharton:butterknife-gradle-plugin:8.4.0’
}
}
修改步骤1.2为>>
apply plugin: ‘com.android.library’
apply plugin: ‘com.jakewharton.butterknife’
apply plugin: ‘android-apt’
dependencies {
compile ‘com.jakewharton:butterknife:8.4.0’
apt ‘com.jakewharton:butterknife-compiler:8.4.0’
}
最后还需要在引用aar包的项目中的module的build.gradle添加依赖,否则点击事件也是无效的
compile ‘com.jakewharton:butterknife:8.4.0’
annotationProcessor ‘com.jakewharton:butterknife-compiler:8.4.0’
2.关于switch case
@OnClick({R2.id.username, R2.id.userage})
public void onClick(View view) {
switch (view.getId()) {
case R2.id.username:
finish();
break;
case R2.id.userage:
break;
}
}
这样写点击事件也是无效的,如果换成if else也是不可以的,只能写成这样
@OnClick(R2.id.username)
public void username(){
}
@OnClick(R2.id.userage)
public void userage(){
}
3.看下图
如果想让确定按钮点击事件响应只能这样
wheelView = View.inflate(this, R.layout.tiku_wheelview, null);
certain.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
}
4.图片名称,布局文件名称都是不能和要引用此aar包项目的图片名称,布局文件名称一样,否则项目中的文件会直接覆盖掉aar包中的资源文件名称