Android 如何使用不同的签名凭据在终端中构建apk

Android 如何使用不同的签名凭据在终端中构建apk,android,android-gradle-plugin,build.gradle,apk,Android,Android Gradle Plugin,Build.gradle,Apk,我有build.gradle,它可以有签名配置,但我想忽略此设置并使用其他凭据。我不想编辑或替换build.gradle中的值 gradle是否具有与gradle assemble-storeFile='PATH'-storePassword='password'-keyalis='alias'-keyPassword='password'相同的命令 如果无法使用其他签名配置创建已签名的apk,是否可以创建未签名的apk?没有采用签名配置的gradle build命令。 根据您在问题中提到的要求

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

gradle是否具有与
gradle assemble-storeFile='PATH'-storePassword='password'-keyalis='alias'-keyPassword='password'
相同的命令


如果无法使用其他
签名配置创建已签名的apk,是否可以创建未签名的apk?

没有采用签名配置的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
    }}
  • 使用不同的签名配置创建keystore属性文件的多个副本,如果要使用keystore.properties文件的一个特定副本,请将其重命名为“keystore.properties”

    def keystorePropertiesFile=rootProject.file(“keystore.properties”)


  • 我建议您使用。它是清洁剂和标准溶液

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

    gradle assembleRelease -PmyKeyPassword='xxx' -PmyStorePassword='xxx' -PmyKeyAlias='xxx' -PmyStoreFile='...xxx.keystore'
    
    signingConfigs {
           release {
             storeFile project.hasProperty('myStoreFile') ? project.myStoreFile : 'default'
             //..
           }
    }
    
    然后在
    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.mystoreFile
          storePassword project.myStorePassword
          keyAlias project.myKeyAlias
          keyPassword project.myKeyPassword
       }
    }
    
    诸如此类:

    gradle assembleRelease -PmyKeyPassword='xxx' -PmyStorePassword='xxx' -PmyKeyAlias='xxx' -PmyStoreFile='...xxx.keystore'
    
    signingConfigs {
           release {
             storeFile project.hasProperty('myStoreFile') ? project.myStoreFile : 'default'
             //..
           }
    }
    

    @Gabriele,多亏了你,现在我知道了使用“gradlew”的命令行参数选项格拉德卢,救命。