1. ホーム
  2. android

[解決済み] build.gradleに鍵屋の情報を入れずにAPKを署名する

2022-04-28 01:04:02

質問

署名プロセスをセットアップして、キーストアパスワードとキーパスワードが一致するようにしようとしています。 はありません。 に保存され、プロジェクトの build.gradle ファイルを作成します。

現在、私は以下のように build.gradle :

android {
    ...
    signingConfigs {
        release {
            storeFile file("my.keystore")
            storePassword "store_password"
            keyAlias "my_key_alias"
            keyPassword "key_password"
        }
    }

    buildTypes {
        release {
            signingConfig signingConfigs.release            
        }
    }
}

全く問題なく動作しますが はいけません。 に値を入れる。 storePasswordkeyPassword を私のリポジトリに追加しました。私は storeFilekeyAlias のどちらかです。

を変更する方法はありますか? build.gradle 外部ソース(私のコンピュータにのみ存在するファイルなど)からパスワードを取得するようにするには?

そしてもちろん、改変された build.gradle は、他のどのコンピューターでも(たとえそのコンピューターがパスワードにアクセスできないとしても)使用できるはずです。

私はAndroid StudioとMac OS X Mavericsを使用していますが、問題ないでしょうか?

解決方法は?

Groovyのいいところは、Javaのコードを自由に混ぜることができることで、キー/バリュー・ファイルを読み込むには、かなり簡単に java.util.Properties . おそらく、慣用的なGroovyを使ったもっと簡単な方法があるのでしょうが、それでもJavaはかなりシンプルです。

を作成します。 keystore.properties ファイル (この例では、プロジェクトのルートディレクトリにある settings.gradle しかし、好きな場所に置くことができます。

storePassword=...
keyPassword=...
keyAlias=...
storeFile=...

これを build.gradle :

allprojects {
    afterEvaluate { project ->
        def propsFile = rootProject.file('keystore.properties')
        def configName = 'release'

        if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) {
            def props = new Properties()
            props.load(new FileInputStream(propsFile))
            android.signingConfigs[configName].storeFile = file(props['storeFile'])
            android.signingConfigs[configName].storePassword = props['storePassword']
            android.signingConfigs[configName].keyAlias = props['keyAlias']
            android.signingConfigs[configName].keyPassword = props['keyPassword']
        }
    }
}