在Android Studio中将两个模块包含在AAR内

3
我有一个图书馆的项目结构,其中lib1依赖于lib2,具体如下:
/
/lib1/
/lib1/build.gradle
/lib2/
/lib2/build.gradle
/build.gradle
/settings.gradle

我正在构建一个名为lib1aar 文件以便分发。在添加lib2 这个依赖之前,一切正常。但是现在当我尝试运行使用我的aar的应用程序时,会出现VerifyError
无论是lib1 还是lib2 都不在maven或其他地方提供。
是否可能将lib2包含在lib1aar文件中?

你有研究过传递依赖吗? - Nishant Srivastava
它是否适用于aar生成,即使我没有使用任何Maven存储库来发布我的库?我无法测试,因为我更改了库的结构。 - Gaëtan
1个回答

1
如果您查看AAR格式规范,您会发现有一个位置可以放置lib jars。
Android Tools网站。

The 'aar' bundle is the binary distribution of an Android Library Project.

The file extension is .aar, and the maven artifact type should be aar as well, but the file itself a simple zip file with the following entries:

 /AndroidManifest.xml (mandatory) 
 /classes.jar (mandatory)
 /res/ (mandatory) 
 /R.txt (mandatory) 
 /assets/ (optional)
 /libs/*.jar (optional)
 /jni/<abi>/*.so (optional)
 /proguard.txt (optional)
 /lint.jar (optional)

These entries are directly at the root of the zip file.

The R.txt file is the output of aapt with --output-text-symbols.

如果你能将lib2打包成一个jar文件,你可以把它放在/libs/lib2.jar中,作为你的lib1.aar文件的一部分。虽然Android Gradle插件可能无法原生处理这种情况,但尝试将AAR放在/libs目录下可能是值得的。如果确实如此,你可以编写一些自定义Gradle任务,在构建时解压它并将其放置在正确的位置。
无论哪种方式,这都是非标准行为,最好分别打包和交付两者。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接