每个风格和构建类型的签名配置必须不同

ben*_*eni 11 android gradle

我在同一个 Android Studio 项目中有两个不同的应用程序。我有两种口味“flavor1”和“flavor2”,具有三种不同的构建类型“staging”、“debug”和“release”

问题是我需要为每个应用程序使用不同的密钥存储。

现在我有了这个,但它只能使用相同的密钥存储进行签名。

signingConfigs {
    release {
        def Properties props = new Properties()
        def propFile = new File('./signing.properties')
        if (propFile.canRead()) {
            props.load(new FileInputStream(propFile))

            if (props != null && props.containsKey('STORE_FILE')
                    && props.containsKey('STORE_PASSWORD')
                    && props.containsKey('KEY_ALIAS')
                    && props.containsKey('KEY_PASSWORD')) {
                android.signingConfigs.release.storeFile = file(props.getProperty('STORE_FILE'))
                android.signingConfigs.release.storePassword = props.getProperty('STORE_PASSWORD')
                android.signingConfigs.release.keyAlias = props.getProperty('KEY_ALIAS')
                android.signingConfigs.release.keyPassword = props.getProperty('KEY_PASSWORD')
            } else {
                println 'signing.properties found but some entries are missing'
                android.buildTypes.release.signingConfig = null
            }
        } else {
            println 'signing.properties not found'
            android.buildTypes.release.signingConfig = null
        }
    }
} 

buildTypes {
    staging {
        debuggable true
        signingConfig android.signingConfigs.debug
    }
    debug {
        debuggable true
        signingConfig android.signingConfigs.debug
    }
    release {
        debuggable false
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
        signingConfig signingConfigs.release
        minifyEnabled false
    }
}
Run Code Online (Sandbox Code Playgroud)

bid*_*h.r 6

您可以创建特定于风味的签名配置:

一个例子:

   signingConfigs {
        flavor1Release {
            storeFile file('home/keys/flavor1keystore.keystore')
            storePassword 'keystorePassword'
            keyAlias 'alias'
            keyPassword 'aliasPassword'
        }
        flavor2Release {
            storeFile file('home/keys/flavor2keystore.keystore')
            storePassword 'keystorePassword2'
            keyAlias 'alias2'
            keyPassword 'aliasPassword2'
        }
   }
Run Code Online (Sandbox Code Playgroud)

然后根据您的喜好,选择正确的签名配置:

  productFlavors {
        def flavor1SigningVariable = signingConfigs.flavor1Release
        def flavor2SigningVariable = signingConfigs.flavor2Release

        flavor1 {
            signingConfig flavor1SigningVariable
        }
        flavor2 {
            signingConfig flavor2SigningVariable
        }
 }
Run Code Online (Sandbox Code Playgroud)

  • 这段代码也会生成用于调试的签名 apk 吗?如果我只想在构建类型为发布时签名 apk,该怎么办?@biddulph.r (4认同)