在Android Studio的AAR中包含两个模块

在Android Studio的AAR中包含两个模块,android,android-studio,android-gradle-plugin,android-library,Android,Android Studio,Android Gradle Plugin,Android Library,我的库有以下项目结构,其中lib1依赖于lib2: / /lib1/ /lib1/build.gradle /lib2/ /lib2/build.gradle /build.gradle /settings.gradle 我正在构建一个aar文件lib1,可以分发。在添加lib2依赖项之前,它工作得很好。但是现在,当我尝试运行使用我的aar的应用程序时,我得到了一个VerifyError 无论是lib1还是lib2都不能在maven或其他地方使用 是否可以在lib1aar中包含lib2?如果您

我的库有以下项目结构,其中
lib1
依赖于
lib2

/
/lib1/
/lib1/build.gradle
/lib2/
/lib2/build.gradle
/build.gradle
/settings.gradle
我正在构建一个
aar
文件
lib1
,可以分发。在添加
lib2
依赖项之前,它工作得很好。但是现在,当我尝试运行使用我的
aar
的应用程序时,我得到了一个
VerifyError

无论是
lib1
还是
lib2
都不能在maven或其他地方使用


是否可以在
lib1
aar
中包含
lib2

如果您查看aar格式规范,您将看到有一个放置lib jar的位置

从网站

“aar”包是Android库的二进制发行版 项目

文件扩展名是.aar,maven工件类型应该是aar 同样,但该文件本身是一个简单的zip文件,包含以下内容 参赛作品:

/AndroidManifest.xml(必需)
/classes.jar(必需)
/res/(强制性)
/R.txt(必填)
/资产/(可选)
/libs/*.jar(可选)
/jni/*.so(可选)
/proguard.txt(可选)
/lint.jar(可选)
这些条目直接位于zip文件的根目录下

txt文件是aapt的输出,带有--output文本符号

如果您可以将
lib2
打包为一个jar文件,那么您可以将它放在生成的
lib1.aar
文件中的
/libs/lib2.jar
。可能值得尝试将AAR放在
/libs
目录中,尽管android gradle插件可能无法在本机处理此问题。如果是这样的话,您可以执行一些定制的gradle任务来解包它,并在构建时将其放置在正确的位置


无论哪种方式,这都是非标准行为,最好将两者分开打包和交付。

您是否研究了可传递依赖关系?当我不使用任何Maven存储库发布我的库时,它是否适用于aar生成?我无法测试,因为我更改了库的结构。
 /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)