我的库有以下项目结构,其中lib1
取决于lib2
:
/
/lib1/
/lib1/build.gradle
/lib2/
/lib2/build.gradle
/build.gradle
/settings.gradle
我正在构建aar
lib1
文件,我可以分发。在我添加lib2
依赖项之前,它运行正常。但是,当我尝试运行使用VerifyError
的应用程序时,我得到aar
。
maven或其他地方都没有lib1
或lib2
。
是否可以在lib2
lib1
中加入aar
?
答案 0 :(得分:0)
如果您查看AAR格式规范,您会看到有一个可以放置lib jars的位置。
来自Android Tools网站。
'aar'包是Android库的二进制分发版 项目
文件扩展名为.aar,maven工件类型应为aar 同样,但文件本身是一个简单的zip文件,具有以下内容 输入:
/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)
这些条目直接位于zip文件的根目录。
R.txt文件是带有--output-text-symbols的aapt的输出。
如果您可以将lib2
打包为jar文件,则可以将其放在/libs/lib2.jar
生成的lib1.aar
文件中。可能值得尝试将AAR放在/libs
目录中,尽管android gradle插件可能无法原生处理。如果是这样,您可以执行一些自定义gradle任务来解压缩它并在构建时将其放置在正确的位置。
无论哪种方式,这都是非标准行为,最好单独打包和交付。