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

6

我希望将所有apk文件发布到各个应用商店,因此我必须为每个apk使用productFlavor:

build.gradle

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

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

输出

appname_red_debug.apk
appname_red_release.apk
appname_yellow_debug.apk
appname_yellow_release.apk

我知道上面的代码可以改变apk文件的名称。但是当我生成签名的apk时,我只能选择一个productFlavor。这样,结果只特定于那个productFlavor

: 更新

如何在命令行使用assembleRelease一次生成所有apk文件?有谁知道这方面的知识吗?


2
你应该使用Gradle Wrapper来同时组装release版本和获取所有apk。 - Nishant Srivastava
等一下!好的!让我试试。 - kimkevin
1
Android Studio 默认支持它。如果您可以看到列表,您可以选择它。检查我的下面的答案。 - Viral Patel
1
从未尝试过,抱歉,但我现在很好奇想知道。如果你找到了答案,请在这里留下评论。如果我找到了答案也会这样做。 - Viral Patel
@Virus现在得到了答案!看看吧~ - kimkevin
显示剩余4条评论
2个回答

12

在选择构建类型后,您始终可以从列表中选择多个口味以生成签名的apk。 对于给定的构建类型,它将为所有选定的口味生成apk。 我已经做过这几次了。

那么,您会问:选择一个口味,按Ctrl + A选择所有口味或按住Ctrl并选择所需的多个口味

这是我现在正在执行的截图(口味名称被遮盖):

enter image description here

更新: 我进一步探索后发现,与其他工具不同,此处无法通过拖动鼠标选择多个项目。这就是造成所有混淆的原因,我认为谷歌应该启用这种选择方式,否则该功能可能会被许多用户闲置。

我也是这样做的,从这个窗口生成了多个apk文件,但上传到play商店时,它显示已使用不同证书进行签名。我所有的flavor都有不同的密钥库文件。你能帮忙吗? - Atif Rehman

8

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

 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);

1
这是我想要的,虽然我找到了其他方法,但我很喜欢它。非常感谢! - kimkevin
1
不错,但是这样生成签名的 APK,签名配置需要预先配置好吗?只是好奇,因为我从来没有尝试过。 - Viral Patel
2
@Virus 你可以在你的build.gradle脚本中配置签名配置。例如,请查看https://dev59.com/z5Dea4cB1Zd3GeqPi_jz#33646119或https://dev59.com/KmAf5IYBdhLWcg3wylQd#24264879。 - Gabriele Mariotti

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接