在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)