日々精進

新しく学んだことを書き留めていきます

local.propertiesにsigningConfigsを格納する

build.gradleやgradle.propertiesはSCMにコミットするのでパスワード等は書きたくない。 なのでlocal.propertiesにsigningConfigsの情報を格納することにした。

コードは以下。

signingConfigs {
    // 署名情報はlocal.propertiesに記述すること。
    Properties localProperties = new Properties()
    localProperties.load(project.rootProject.file('local.properties').newDataInputStream())

    release {
        if (localProperties.getProperty("keyStore")) {
            storeFile file(localProperties.getProperty("keyStore"))
        }
        if (localProperties.getProperty("storePassword")) {
            storePassword localProperties.getProperty("storePassword")
        }
        if (localProperties.getProperty("keyAlias")) {
            keyAlias localProperties.getProperty("keyAlias")
        }
        if (localProperties.getProperty("keyPassword")) {
            keyPassword localProperties.getProperty("keyPassword")
        }
    }
}

注意点は以下。 * project.getPropertyではlocal.propertiesで定義したプロパティは取得出来ない。上記コードのようにlocal.propertiesを取得するコードを書く必要がある * Properties#hasPropertyはなぜかnullを返すので使えない。代わりにgetPropertyを使ってプロパティの有無を判定した

参考: