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

时间:2015-02-11 07:09:41

标签: android android-studio android-gradle android-library

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

/
/lib1/
/lib1/build.gradle
/lib2/
/lib2/build.gradle
/build.gradle
/settings.gradle

我正在构建aar lib1文件,我可以分发。在我添加lib2依赖项之前,它运行正常。但是,当我尝试运行使用VerifyError的应用程序时,我得到aar

maven或其他地方都没有lib1lib2

是否可以在lib2 lib1中加入aar

1 个答案:

答案 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任务来解压缩它并在构建时将其放置在正确的位置。

无论哪种方式,这都是非标准行为,最好单独打包和交付。