打包aar 嵌套引用本地 aar

APP主程序需要引用mylibrary的aar,而mylibrary库引用了mylibrary2。不管APP主程序是否调用到mylibrary2,打包的时候,都必须把mylibrary2引用进去。因为将mylibrary打包成aar的时候,并不会把它所引用的aar一起打包进去。

mylibrary2执行一个日志打印。

打包aar 嵌套引用本地 aar

mylibrary执行一个日志打印后,调用mylibrary2中Test.class中show()方法。

打包aar 嵌套引用本地 aar
mylibrary中,build.gradle中引用mylibrary2的aar文件。

打包aar 嵌套引用本地 aar

这里要注意下,module引用aar,repositories下提供搜索的目录需要指定当前module的libs,不然会引起NoClassFoundError。也就是引用不到,找不到aar文件了上使用到的类文件。

打包aar 嵌套引用本地 aar

上图就是app中build.gradle屏蔽了引入mylibrary2的aar后执行报错。打包aar 嵌套引用本地 aar

主程序my application下app中代码段

打包aar 嵌套引用本地 aar

主要是执行mylibrary中Test的show()方法。对应build.gradle

打包aar 嵌套引用本地 aar

这样子。就可以跑起来。

看下External Libraries中mylibrary的内容

打包aar 嵌套引用本地 aar

没有打包出来aar。

总结就是:所有module或者aar上引用到的第三方库,尽管app主目录没有引用,也要引用进去。