Android Studio:如何为所选的buildType一次为所有productFlavors生成多个APK或签名的APK?

时间:2015-12-22 05:59:29

标签: android android-gradle apk build.gradle android-productflavors

我想让所有apk文件发布到所有商店,所以我必须为每个apk使用div

的build.gradle

productFlavor

输出

buildTypes {
        release {
           ...
        }
        debug {
           ...
        }
    }

    productFlavors {
        red {
           ...
        }
        yellow {
           ...
        }
    }

我知道上面的代码可以改变apk的文件名。但是当我生成签名的apk时,我只能选择一个appname_red_debug.apk appname_red_release.apk appname_yellow_debug.apk appname_yellow_release.apk 。这样,结果仅针对productFlavor

更新

如何使用assembleRelease在commend行上一次制作所有apk文件?有没有人知道这个?

2 个答案:

答案 0 :(得分:11)

在选择构建类型后生成签名的apk时,您始终可以从列表中选择多种口味。它将为给定的构建类型生成所有选定flavor的apks。我已多次这样做了。

如何,你问?选择一种风味并按 Ctrl + A 选择所有风味或按Ctrl并选择多种风味想。

这是我现在正在做的截图(味道名称被掩盖):

enter image description here

更新: 我进行了更多探索,并注意到拖动鼠标选择多个项目并不像其他工具一样。这就是造成所有混淆的原因,我认为谷歌应该采用这种方式进行选择,否则许多用户可能仍未使用该功能。

答案 1 :(得分:6)

如果您想使用命令行,可以使用以下命令之一:

 All buildVariants
 - ./gradlew assemble

 All flavors for a buildType
 - ./gradlew assembleDebug
 - ./gradlew assembleRelase

 All buildTypes for a flavor
 - ./gradlew assembleRed
 - ./gradlew assembleYellow

 Only a buildVariant
- ./gradlew assembleRedDebug
- ./gradlew assembleRedRelease    
- ./gradlew assembleYellowDebug
- ./gradlew assembleYellowRelease

您也可以使用

更改apk名称
project.ext.set("archivesBaseName", "....");

例如

project.ext.set("archivesBaseName", "myApp."+ defaultConfig.versionName);