Android Studio如何从多个库项目中打包单个AAR?

Rah*_*ain 57 android gradle android-studio android-gradle-plugin

我正在构建android库项目,它依赖于另一个内部库项目.

我想知道是否有办法打包单个AAR库,其中已包含内部库.我想只与我的应用程序开发人员共享一个AAR库包.

这是我的build.gradle文件当前的样子,但目前它们生成单独的AAR文件,并且两者都需要包含在Application的build.gradle中.由于应用程序是由另一家公司构建的,我们需要与它们共享最终的AAR文件,而不是完整的库项目.

----- internalLib -------- >>>>>>>>>>

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion '18.1.1'
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
}
Run Code Online (Sandbox Code Playgroud)

----- externalLib --------

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.7.+'
    }
}
apply plugin: 'android-library'

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 18
    buildToolsVersion '18.1.1'
}

dependencies {
    compile 'com.android.support:support-v4:18.0.0'
    compile project(':internalLib')
}
Run Code Online (Sandbox Code Playgroud)

Xav*_*het 35

没有组合库的机制.这有点复杂,因为您可能想要控制哪些依赖项被合并(例如,您可能不希望在那里包含support-v4).您还需要合并资源和Android清单.

此时除非您确定资源在两个res文件夹之间没有冲突(例如,您可以在一个lib中使用strings_a.xml而在另一个lib中使用strings_b.xml),否则无法轻易入侵某些内容.这样你就可以通过将两个res文件夹复制到同一个位置来"合并"它们(而不是在android res级别进行合并).

对于Manifest来说,它会更复杂,但可以使用一些自定义代码.

为此提供内置机制对我们的优先级非常低,所以不要期望它很快就会出现.

  • 又过了一年,仍然没有适当的方法来建立一个可以收集子图书馆代码,资源和本地图书馆的图书馆AAR.希望Google能尽快解决这个问题. (27认同)
  • @XavierDucrohet现在2015年中期,我们仍然无法从多个图书馆项目中创建单个aar文件? (19认同)
  • 自那个答案已经过去了4年......而且合并AAR仍然没有官方支持...... (12认同)
  • 仍然对此有答案吗? (4认同)
  • 有人弄清楚这个问题了吗? (4认同)
  • 现在有一个Manifest合并和资源合并.除了依赖关系之外还有什么东西可以使这个请求变得复杂吗?或者有关于此的消息吗? (2认同)