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を使ってプロパティの有無を判定した
参考: