生成 AAR 包
在Android Studio Terminal 窗口输入以下命令:
把 monitor
换成你子模块的名称,不出意外的话 就会在下面目录生成相应aar文件
注意:如果你的Java运行环境是Java 8 则在老一点的AS上 可以运行打包成功,在较新一点的AS上会打包报错,主要是新的AS要求的环境变量 都Java 11 以上了,可以考虑配个环境,再打包或者使用较旧的AS如 2021版本的。
🆗,到这里没什么压力
这时你会发现aar包并不大,甚至只有几十kb,如果你的子moudle 没使用第三方依赖的话,你会发现使用时没什么问题,如果有第三方依赖的话,它还是不大,甚至编译期也不会报错 ,但你运行时就会报错依赖找不到。
其实你在打aar包的时候并没有把第三方库 打包进去,这还搞个🔨
不要慌,继续往下看👇
将远程依赖打包进aar中
介绍下我们的主角:fat-aar-android
链接如下
https://github.com/kezong/fat-aar-android?tab=readme-ov-file
一个gradle插件,它可以将依赖项合并到最终的aar文件中,并与agp3 .+一起工作
由于作者不维护了最终支持版本为 AGP 3.0 - 7.1.0
,和 Gradle 4.9 - 7.3
在新项目上会报错,这不是重点,还是有大佬fork版本呢
下面这个库还在继续维护,gradle 版本大于 4.9 - 7.3
可以使用这个库
https://github.com/aasitnikov/fat-aar-android
我照着使用文档搞的,好像报错了,就按着example
代码写的,好家伙,源码的和说明文档的写法不一样,懵了,就试着搞了一下,编译通过🤭,如过你照着使用文档弄,可以通过的话就忽略下面代码把!
Step 1: 将下面的代码段添加到root build
中:
就是你项目的根build.gradle
文件,不是app
下的哦
这个文件原本只有 plugins
块,把 buildscript
放进去就行
Step 2: 添加插件 在你想要打包的子Moudle 的build.gradle
中 添加 id 'com.kezong.fat-aar'
也有可能你项目是这种写法:apply plugin: 'com.kezong.fat-aar'
都一样
Step 3: Embed 依赖 就是把你引入的第三方依赖 从 implementation xxx
换成 embed xxx
效果如下:
然后运行上面 生成 AAR 包 的指令,就会看下像下面的打印
然后 BUILD SUCCESSFUL 你会发现aar包 比原来胖了一圈,不出意外你就可以拿着aar包 愉快地玩耍了
当然,不出意外是不可能的,导入, 运行, 啪! 又报错🤦♂️
看log又是相关类找不到。我不是都打包进去了吗?怎么还找不到!
以上面 'com.arthenica:ffmpeg-kit-full:6.0-2'
举例
如果要在项目中依赖的话,确实没什么问题,因为它如果依赖了别的文件的话,会自动下载的,而打包成aar文件它就不会下载了,这时候就缺少了相关文件,怎么办呢?分析吧
打开External Libraries文件夹,可以看到 多了 exception-java
和 exception-common
这两个库
把这两个库 像上面Step 3 那样 放进去就行了,然后再回到最初 生成 AAR 包
关机 跑路 一气呵成 emm... 跑题了😆
编译 运行 啪!成了😁,特,属予作文以记之。