簡體   English   中英

在 Gradle 中包含 Android 密鑰庫屬性文件,僅在發布變體中

[英]Including Android keystore properties file in Gradle, only in release variant

我一直在遵循本指南,以允許從專用文件加載我的 Android 密鑰庫屬性的秘密。

基本上, build.gradle文件包含:

def keystorePropertiesFile = rootProject.file("testandroidpacketcapture/keystore.properties");
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {
    // ...

    signingConfigs {
        debug {
            storeFile file('debug.keystore')
            storePassword 'android'
            keyAlias 'androiddebugkey'
            keyPassword 'android'
        }
        release {
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
        }
    }

只要keystore.properties文件存在,這就有效。 但是對於調試版本,或者對於無法訪問密鑰庫的開發人員,我想讓這種屬性加載成為可選的。

如何僅根據該文件是否可用來定義該變量?

我只能在文件exists() ,但是storeFile中的file()調用仍然會失敗,因為它沒有定義。

如果默認值不存在,您可以使用getProperty(key, default)方法定義默認值。

所以,在上面,使用:

def keystorePropertiesFile = rootProject.file("testandroidpacketcapture/keystore.properties");
def keystoreProperties = new Properties()
if (keystorePropertiesFile.exists()) {
    keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

在下面,使用:

release {
  storeFile file(keystoreProperties.getProperty('storeFile', 'release.keystore'))
  storePassword keystoreProperties.getProperty('storePassword')
  keyAlias keystoreProperties.getProperty('keyAlias')
  keyPassword keystoreProperties.getProperty('keyPassword')
}

這會將默認的release.keystore傳遞給該屬性,如果您實際上沒有構建發布 APK,這並不重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM