大家如果使用过 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 目录
示例。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.