AAR打包
配置sourceSet
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
java.srcDirs = ['src']
resources.srcDirs = ['src']
aidl.srcDirs = ['src']
renderscript.srcDirs = ['src']
res.srcDirs = ['res']
assets.srcDirs = ['assets']
jniLibs.srcDirs = ['libs']
}
}
里面的路径需要根据工程实际的路径进行编写。
如果需要把so库也打进AAR中,把so库所在的armeabi文件夹放入libs目录下(具体的目录剋自己调节),并需要配置jniLibs.srcDirs = [‘libs’],划重点,这里的libs目录,是根据实际的位置来定。有些可能是src/main/jniLibs.
打开gradle面板,点击:Lib:assembleRelease即可,最后在build文件夹中生成。
可以把aar文件拖进AS,检查里面是否有所需要的类。
AAR引用
需要指定aar文件的目录flatDir
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
//此处是打出的APK支持什么架构的CPU
ndk {
abiFilters "armeabi"
}
}
repositories {
flatDir {
dirs 'libs', '../xxx/libs', '../../../xxx/libs' //这里代表目录
dirs project(':VideoLib').file('libs') //这里代表要引入子库中的aar
}
}
}
然后在dependencies依赖中指明需要的依赖
dependencies {
implementation fileTree(include: ['*.jar','*.aar'], dir: 'libs') //这里也指明要加载全部aar
implementation(name: 'ShortcutBadger-release', ext: 'aar') //单独指明要加载哪个aar
implementation project(':VideoLib') //指明要加载VideoLib模块中libs的aar
}
模块中若包含有aar,对此模块打包时,并不会包含子aar,因此app引入时,也可以同时导入这两个aar,进行编译。
清除 aar 缓存
terminal 进入项目根目录
cd .idea/libraries
rm Gradle__xxxx_aar.xml
AndroidStudio 点击 左上角 SyncProject 和 SyncFile 按钮