关于aar打包那些事儿

本文详细介绍如何使用Android Studio创建并打包aar文件,解决在使用ButterKnife等库时遇到的问题,并提供了一些实用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言:
公司项目太多,老大要求把项目中的某个模块打成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包中的资源文件名称

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值