背景
做sdk的时候,需要把自己的demo等模块打包成aar,供对方调用。因此,记录总结一下用AS打包aar以及使用的过程
步骤
修改gradle文件
打开模块的gradle文件,修改如下:
// apply plugin: 'com.android.application'
apply plugin: 'com.android.library'
android {
..
defaultConfig {
// applicationId "com.example.songzeceng.firstjd"
...
}
...
}
...
}
把最上面的application改成library,再把applicationId去掉,这样我们的工程就能作为库来使用了
打包
改完gradle后,就能直接通过gradle命令打包成aar了,但一定要是release版的
不过我们不需要敲命令,点击界面左上角的gradle,再点击assembleRelease就可以了
而后,就会在模块名\build\outputs\aar目录下找到生成的aar了
使用
首先要把生成的aar拷到目标项目的lib文件夹里
而后在目标模块的gradle文件里,加上对它的依赖
dependencies {
...
implementation files('libs/app-release.aar')
}
同步之后,就可以使用aar的内容了
遇到的坑
java.lang.NoSuchFieldError: No field xxx of type I in class Lcom/xxxx/module/R$id; or its superclasses
原因:aar和目标模块中存在同名的布局文件
解决方法:修改两个布局文件的名字,使之不重复
结语
本地依赖aar只适用于gradle3及以上的版本,gradle3以下只能本地依赖jar,方法过程参见文章安卓开发学习之用Android Studio打包项目成jar