android - Android gradlew.bat assembleRelease选择启动包

标签 android gradle android-studio-2.3

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

更新

我终于找到了一个包含Gradle和Ant的解决方案(虽然很麻烦,但是可以用)。基本上,我想在我的100种White Label口味的基础上,使用版本前缀,然后将其复制到不包含该版本的交付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可以做到这一点。

最佳答案

您不能专门这样做,但是可以解决该问题并通过一些脚本魔术来解决。

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

gradlew.bat assembleIronRelease

因此,您可以编写一个脚本,该脚本将通过各种口味的循环运行,如果失败,它将告诉您哪个失败。然后,您可以修复错误,然后再次启动脚本,告诉它以X flavor 开始(不过您必须编写逻辑告诉它从哪里开始)。

关于android - Android gradlew.bat assembleRelease选择启动包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46589818/

相关文章:

java - Sqlite如何创建带有外键的表

android - 从桌面以移动方式查看网站

java - 运行 Android Studio 时遇到问题

java - 升级 firebase-crash 导致构建 apk 时出错

java - Cobertura 无法检测

java - Gradle-将依赖项与 Artifact 中的其他项目一起使用

Android 模拟器在 Ubuntu 17.04 上运行速度极慢

android - 多个dex文件定义 Landroid/support/v4/accessibilityservice/AccessibilityServiceInfoCompat$AccessibilityServiceInfoVersionImpl;

Android Gradle 模块依赖

java - 从修改覆盖中解决 ConcurrentModificationException