【问题标题】:Android gradlew.bat assembleRelease choose starting packageAndroid gradlew.bat assembleRelease 选择启动包
【发布时间】:2017-11-09 07:52:55
【问题描述】:

我有一个 Android Studio 应用程序,它现在有近 100 个与之关联的“productFlavors”,当然所有这些都在 build.gradle 中定义。我想从命令行构建它们,因为在 IDE 中一次构建它们将是一场噩梦。当我在使用命令行gradlew.bat assembleRelease 构建它们的过程中遇到错误时,就会出现我的问题。一旦我修复了错误,我想在故障点开始构建(可能构建了 50 种口味),而不是从一开始。有没有办法用 Gradle 做到这一点?使用 Ant 我不得不将它们注释掉,我希望 Gradle 有更好的方法,因为文件中的结构要复杂得多。

更新

我最终选择了一个包含 Gradle 和 Ant 的解决方案(很糟糕,但它确实有效)。基本上,我想在我的 100 种白标风味的基础上构建版本前缀,然后将其复制到没有版本的交付 APK。为此,我的 ANT 脚本如下所示:

#!/bin/sh
DEPLOY_DIR=C:/AndroidBuilds/MyCompany.Build
VERSION="63"

NAME="WhiteLabel1"
DEPLOY_FOLDER="whitelabel1"
APK_NAME=$NAME$".apk"
gradlew assemble$NAME
cp $DEPLOY_DIR/$DEPLOY_FOLDER/$VERSION"-"$APK_NAME $DEPLOY_DIR/$DEPLOY_FOLDER/$APK_NAME

NAME="WhiteLabel2"
DEPLOY_FOLDER="whitelabel2"
APK_NAME=$NAME$".apk"
gradlew assemble$NAME
cp $DEPLOY_DIR/$DEPLOY_FOLDER/$VERSION"-"$APK_NAME $DEPLOY_DIR/$DEPLOY_FOLDER/$APK_NAME

这会生成 2 个 APK,63-WhiteLabel1.APK 和 63-WhiteLabel2.APK,然后将它们复制到各自的部署目录中,分别为 WhiteLabel1.APK 和 WhiteLabel2.APK

我想如果你够聪明的话,你可以让它接受参数来运行你想要的参数,但是 Android Studio 在这方面做得相当不错。

【问题讨论】:

    标签: android gradle android-studio-2.3


    【解决方案1】:

    您不能专门这样做,但您可以解决此问题并使用一些脚本魔术来解决它。

    如果您有一个名为 Release 的构建类型和一个名为 Iron 的风格,您可以运行:

    gradlew.bat assembleIronRelease
    

    因此,您可以编写一个脚本,该脚本将在所有类型的循环中运行,如果失败,它会告诉您哪个失败了。然后您可以修复错误,并再次启动脚本,告诉它以 X 风格开始(但您必须编写逻辑来告诉它从哪里开始)。

    【讨论】:

    • 是 Gradle 脚本还是其他类型的脚本?
    • 使用我可以编写一个 Ant 脚本来触发 Gradle 脚本,上面列出了我所有的风格,并带有失败的逻辑?
    • 我最终选择了一个 Ant 脚本,它除了 gradle 构建之外还做了几件事。
    猜你喜欢
    • 1970-01-01
    • 2012-04-28
    • 2017-07-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多