大家如果使用过 android 打包的 aar 文件,就会知道 android 打包生成的 aar 文件里面不包含依赖的库,app 模块使用 aar 文件时还得重新导入 aar 文件依赖的库,如果 aar 文件还依赖了一个本地 aar,那么 app 模块使用的时候还得把这个本地 aar 文件拷贝到 libs 目录。
如果不想将 aar 发布到 maven 库的话,这个特性或者缺陷在公司合作中会显得很不舒服,这里有一些关于这个问题的讨论: 讨论 1 讨论 2
曾经也有人发布过解决方案, 可惜作者不再维护,在 android gradle 3.0 以上基本不能用.
于是我开发了此插件,能将依赖库直接打包进 aar 文件,app 模块在使用 aar 文件时无需再重新引入依赖库: https://github.com/cpdroid/fat-aar
以上,请大家多多拍砖,多多指教~
以下是用法
在根目录的 build.gradle 文件里面添加如下语句:
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.cpdroid:fat-aar:1.0.0'
}
}
在 library 工程的 build.gradle 里面添加如下语句:
apply plugin: 'com.android.library'
apply plugin: "com.cpdroid.fat_aar"
确保 'com.cpdroid.fat-aar' 在'com.android.library'后面
用关键字 "embedded" 替代 "implementation" 或者 "compile" 就可以把依赖的库打包进你的 aar 文件:
embedded fileTree(dir: 'libs', include: ['*.aar'])
embedded project(':moduleA')
embedded 'com.gongwen:marqueelibrary:1.1.3'
运行 gradle 任务, 一般来说是 "assembleRelease", 把生成的 aar 文件复制进 app 模块的 libs 目录
示例。
1
wang23412 OP 本来想把用法折叠起来,奈何 github 上的折叠方式在这里不起作用,请问 V2EX 怎么折叠代码
|
2
a1024a 2019-10-25 02:48:45 +08:00
大神,nb.....
|