2017-10-05 41 views
0

我有一个Android Studio应用程序,现在有近100个与它关联的“productFlavors”,当然全部在build.gradle中定义。我想从命令行构建它们,因为在IDE中一次构建它们将是一场噩梦。当我在使用命令行gradlew.bat assembleRelease构建它们的过程中遇到错误时,出现了我的问题。一旦我解决了这个错误,我想在失败的时候开始构建(可能有50个版本),而不是在开始阶段。 Gradle有没有办法做到这一点?用Ant我不得不将它们评论出来,我希望Gradle有一个更好的方法,因为结构在文件中更加复杂。Android gradlew.bat assembleRelease选择开始包

UPDATE

我终于与涵盖摇篮和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.APK63-WhiteLabel2.APK,然后将其复制到各自部署的目录为WhiteLabel1.APKWhiteLabel2.APK

我想,如果你是聪明的你可以使这个参数运行你想要的,但Android Studio在这方面做得相当不错。

回答

1

你不能专门做到这一点,但你可以解决这个问题,并用一些脚本魔法来解决它。

如果你有一个叫做Release构建类型,一种叫做Iron的味道,你可以运行:

gradlew.bat assembleIronRelease 

所以,你可以写,将通过所有口味的循环中运行一个脚本,如果失败它会告诉你哪一个失败。然后您可以修复错误,并再次启动脚本,告诉它从X flavor开始(但您必须编写逻辑来告诉它从哪里开始)。

+0

这是一个Gradle脚本或其他类型的脚本吗? –

+0

使用我可以编写一个Ant脚本来触发Gradle脚本,其中包含上面列出的所有功能,并带有失败逻辑? –

+0

我最终使用了一个Ant脚本,除了构建Gradle之外还做了几件事情。 –