【问题标题】:How is possible build apk in terminal with different SIGN credentials如何在具有不同 SIGN 凭据的终端中构建 apk
【发布时间】:2019-05-29 19:54:43
【问题描述】:

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

gradle 有没有像gradle assemble -storeFile='PATH' -storePassword='password' -keyAlias='alias' -keyPassword='password' 这样的命令?

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

【问题讨论】:

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


    【解决方案1】:

    没有采用签名配置的 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

    【讨论】:

      【解决方案2】:

      我建议您使用solution reported by @Ranjan。它是更清洁的标准溶液。

      但是,如果您想使用命令行命令,通过-P 参数在命令行中传递给 gradle 的所有属性都可以在您的 gradle 脚本中的 project 变量中访问。 你可以这样做:

      gradle assembleRelease -PmyKeyPassword='xxx' -PmyStorePassword='xxx' -PmyKeyAlias='xxx' -PmyStoreFile='...xxx.keystore'
      

      然后在你的build.gradle中定义。

      signingConfigs {
         release {
            storeFile project.mystoreFile
            storePassword project.myStorePassword
            keyAlias project.myKeyAlias
            keyPassword project.myKeyPassword
         }
      }
      

      请注意,因为如果您未在 gradle 命令中指定键(在我看来不太好),可能会导致错误。 您可以通过检查参数(使用project.hasProperty(xxx) 方法)并在build.gradle 中定义默认 值来缓解问题。

      类似的东西:

      signingConfigs {
             release {
               storeFile project.hasProperty('myStoreFile') ? project.myStoreFile : 'default'
               //..
             }
      }
      

      【讨论】:

      • @Gabriele,多亏了你,现在我知道了使用 'gradlew' 的命令行参数选项。 'gradlew --help'。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      相关资源
      最近更新 更多