如何在具有不同SIGN凭证的终端中构建APK

时间:2019-05-29 19:54:43

标签: android android-gradle build.gradle apk

我有可以具有signingConfigs的build.gradle,但是我想忽略此设置并使用其他凭据。我不想编辑或替换build.gradle中的值。

gradle是否具有与gradle assemble -storeFile='PATH' -storePassword='password' -keyAlias='alias' -keyPassword='password'类似的命令?

如果无法与其他signingConfigs创建签名的apk,是否可以创建未签名的apk?

2 个答案:

答案 0 :(得分:0)

没有gradle build命令来进行符号配置。 根据您在问题中提到的要求,您有两种选择。

1。编辑build.gradle以创建多个构建样式,并为每个构建样式提供不同的签名细节。

    android {
    signingConfigs {
        abc {
            keyAlias 'abc'
            keyPassword 'yyy'
            storeFile file('keystore/astro.keystore')
            storePassword 'zzz'
        }
        xyz {
            keyAlias 'xxx'
            keyPassword 'xxx'
            storeFile file('keystore/sample.keystore')
            storePassword 'xxx'
        }
        //add another block for new customer
    }}
  1. 使用不同的签名配置创建密钥库属性文件的多个副本,并且当您要使用keystore.properties文件的一个特定副本时,将其重命名为“ keystore.properties”。

    def keystorePropertiesFile = rootProject.file("keystore.properties")

https://developer.android.com/studio/publish/app-signing#secure-shared-keystore

答案 1 :(得分:0)

我建议您使用 solution reported by @Ranjan。它是更清洁的标准解决方案。

但是,如果您想使用命令行命令,则可以在gradle脚本的AddressNet变量中访问通过-P参数传递给gradle的所有属性。 您可以执行以下操作:

project

,然后在您的gradle assembleRelease -PmyKeyPassword='xxx' -PmyStorePassword='xxx' -PmyKeyAlias='xxx' -PmyStoreFile='...xxx.keystore' 中进行定义。

build.gradle

请注意,因为如果您未在gradle命令中指定键,则它可能会导致错误(我认为不太好)。 您可以通过检查参数(使用signingConfigs { release { storeFile project.mystoreFile storePassword project.myStorePassword keyAlias project.myKeyAlias keyPassword project.myKeyPassword } } 方法并在project.hasProperty(xxx)中定义默认值来缓解问题。

类似的东西:

build.gradle