android - 如何在 Gradle 中包含不同版本的不同 apk 中的 jar 列表?

标签 android android-gradle-plugin build.gradle

我的任务是通过 gradle 构建获得 dailyDebug、dailyRelease、standardDebug 和 standardRelease apk 文件。每个 apk 应包含具有不同版本和类型的常见应用程序列表,例如 dailyDebug 应包含具有最新集成版本和类型:debug 的 jar1 以及具有版本 01.05.02 和类型:release 的 standardRelease。

在 build.gradle 中,我有以下构建类型:

buildTypes {
        debug {
            signingConfig null
        }
        debugDaily {
            signingConfig null
        }
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig null
        }
        releaseDaily {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
            signingConfig null
        }
}

这是每个 apk 中应该包含的 jar 列表。

 "jar1:latest.integration:release"
 "jar2:latest.integration:release"
 "jar3:latest.integration:release"
 "jar4:latest.integration:release"
 "jar5:latest.integration:release"

最简单的解决方案之一是像这样进行大量复制粘贴:

dependencies {
    debugApk "jar1:01.02:debug"
    debugApk "jar2:02.03:debug"
    debugApk "jar3:05.12:debug"
    debugApk "jar4:01.32:debug"
    debugApk "jar5:02.01:debug"

    releaseApk "jar1:01.02:release"
    releaseApk "jar2:02.03:release"
    releaseApk "jar3:05.12:release"
    releaseApk "jar4:01.32:release"
    releaseApk "jar5:02.01:release"

    debugDailyApk "jar1:latest.integration:debug"
    debugDailyApk "jar2:latest.integration:debug"
    debugDailyApk "jar3:latest.integration:debug"
    debugDailyApk "jar4:latest.integration:debug"
    debugDailyApk "jar5:latest.integration:debug"

    releaseDailyApk "jar1:latest.integration:release"
    releaseDailyApk "jar2:latest.integration:release"
    releaseDailyApk "jar3:latest.integration:release"
    releaseDailyApk "jar4:latest.integration:release"
    releaseDailyApk "jar5:latest.integration:release"
}

我正在寻找一个通用的解决方案,因为 jar 列表会越来越大,将来很难维护。

提前谢谢你,这是这里的第一篇文章:)

最佳答案

我找到了解决方案并想与您分享。 所以在build.gradle中添加了2个函数:

def getDailyPackages(type){
         String[] packages = [
                    "jar1:latest.integration:${type}"
                    "jar2:latest.integration:${type}"
                    "jar3:latest.integration:${type}"
                    "jar4:latest.integration:${type}"
                    "jar5:latest.integration:${type}"]
            return packages
        }

def getStandardPackages(type) {
        String[] packages = [
                "jar1:${jar1VersionName}:${type}",
                "jar2:${jar2VersionName}:${type}",
                "jar3:${jar3VersionName}:${type}",
                "jar2:${jar4VersionName}:${type}",
                "jar3:${jar5VersionName}:${type}",]
        return packages
    }

Jar 版本名称在 ext 部分声明:

ext {
    jar1VersionName = '1.02'
    jar2VersionName = '1.03'
    jar3VersionName = '1.04'
    jar4VersionName = '1.05'
    jar5VersionName = '1.06'
}

最后用相应的类型调用它们:

dependencies {
    debugApk(getStandardPackages("debug"))
    releaseApk(getStandardPackages("release"))
    debugDailyApk(getDailyPackages("debug"))
    releaseDailyApk(getDailyPackages("release"))
}

希望这篇文章对您有所帮助:)

关于android - 如何在 Gradle 中包含不同版本的不同 apk 中的 jar 列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43135357/

相关文章:

java - Android:OpenGL-ES 游戏图像 (HUD)

android - 哪里可以下载 Honeycomb Gallery 示例应用程序?

将 Java 代码转换为 Kotlin 后,Android Studio XML 自动完成无法正常工作

kotlin - 如何使用 build.gradle.kts 添加覆盖率报告 (JaCoCo) 到 kotest?

java - 在Eclipse中的Lombok中使用@ Slf4j时出现编译错误

android - E/SQLiteLog﹕ (1) near "TABLEaccount": syntax error

android - 下拉按钮的 flutter 设置状态不更新值

android - Gradle 3实现Aar依赖

Android 导入的 AAR 如何与原始 AAR 项目保持同步?

android - android gradle 构建配置文件中的 "Missing Time"