我想创造一个超级/脂肪aar。我有一个库(libA)依赖于另一个库(libB),我想将它们捆绑在一起,最好使用gradle。然后将在app中使用这种超级/脂肪。
最初我查看了两个类似的gradle插件,shadowJar和fataar,但由于版本不兼容,他们是不行的。为此,我在gradle文件中创建了自定义配置并添加了依赖项:
configurations { privateLibs }
privateLibs ('libB.1.0.0@aar') {
transitive=true
}
compile configurations.privateLibs.asFileTree
然后我可以运行gradle install来生成libA-1.0.0.aar。
当我检查libA.aar并使用
查看它的内容时jar tvf libA-1.0.0.aar
我可以在libs文件夹下看到列出的LibB:
BST 2018 libs/libB-1.0.0.aar
我现在创建了一个应用程序,将我的新库libA-1.0.0.aar作为本地依赖项。稍后它将通过外部存储库解决。
implementation files('libs/libA-1.0.0.@aar')
该应用程序已编译并似乎已准备好运行。但是,当我尝试在Android模拟器中运行应用程序时,它会抛出一条错误消息:
error: cannot access ExampleClass class file for com.sample.ExampleClass
ExampleClass是在libB中创建的类,在libA中实现。尽管libA在libA aar的libs文件夹中可用,但似乎libA不了解libB。这里的构建步骤是错误的吗?这应该以另一种方式完成吗?提前谢谢!