android - 如何用根库打包子项目库

标签 android maven gradle

我在 Maven 存储库中托管了一些 Android 库项目。所有这些库都是根库项目的子项目。我正在努力做到这一点,以便我的根库项目可以收集所有子项目的源和输出,以作为单个库分发。

我已经成功将根项目和子项目发布到maven,但是当发布根项目时,它在打包aar 时排除了子项目。

结构:

Root
  \--subproject1
  \--subproject2

这是我的 gradle fragment :

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':subproject1')
    compile project(':subproject2')
}

configurations {
    published
}

subprojects.each { subproject -> evaluationDependsOn(subproject.path)}
task sourceJar(type: Jar) {
    dependsOn subprojects.tasks['sourceJar']
    subprojects.each { subproject ->
        from subproject.configurations.published.allArtifacts.files.collect {
            zipTree(it)
        }
    }
    classifier "sources"
}

artifactoryPublish {
    dependsOn sourceJar
}

artifacts {
    published sourceJar
}

由于 sourceJar 中的 dependsOn,我的子项目与此根项目同时发布到我的 maven 存储库(这是我想要的并且很好)。然而,根项目在打包时不会将这些子项目作为根 AAR 的一部分包含在内。

如何配置我的根项目以打包其中的所有子项目?

最佳答案

我能够使用来自 Github 的这个库找到解决方案:
https://github.com/adwiv/android-fat-aar

库将允许您在打包最终库时嵌入子项目,就像这样(注意 embedded 符号):

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    embedded project(':subproject1')
    embedded project(':subproject2')
}

关于android - 如何用根库打包子项目库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35760366/

相关文章:

java - Maven 2.2.1 无法使用 m2eclipse 构建 EAR 项目

spring-boot - 找不到 kafka-clients-test.jar (org.apache.kafka :kafka-clients:0. 10.2-kafka-2.2.0)

android - 如何将可绘制的矢量转换为PNG文件?

android - SDK 21 以下的 NoClassDefFoundError

Android Activity 堆积在后台导致 OutOfMemory 错误

android - 在android中不使用压缩方法将位图转换为字节数组

spring - 无法执行目标 org.maven.plugins :maven-compiler-plugin:3. 8.1:compile (default-compile) on project (target 11)

java - 使用 Maven/Proguard 分别混淆两个 JAR

gradle - Android Gradle插件中是否有包含bundleDebug和bundleRelease的 anchor 任务?

android - 无法使用 Android Studio 1.2 和 Gradle 1.2.2 加载类 OutputFileTask