Sign APK without putting keystore info in build.gradle

后端 未结 12 960
栀梦
栀梦 2020-11-28 17:51

I am trying to setup signing process so that keystore password and key password are not stored in the project\'s build.gradle file.

Cur

12条回答
  •  执笔经年
    2020-11-28 18:25

    For the ones looking to put their credentials in an external JSON file and read that from the gradle this is what I did:

    my_project/credentials.json:

    {
        "android": {
            "storeFile": "/path/to/acuity.jks",
            "storePassword": "your_store_password",
            "keyAlias": "your_android_alias",
            "keyPassword": "your_key_password"
        }
    }
    

    my_project/android/app/build.gradle

    // ...
    signingConfigs {
            release {
    
                def credsFilePath = file("../../credentials.json").toString()
                def credsFile = new File(credsFilePath, "").getText('UTF-8')
                def json = new groovy.json.JsonSlurper().parseText(credsFile)
                storeFile file(json.android.storeFile)
                storePassword = json.android.storePassword
                keyAlias = json.android.keyAlias
                keyPassword = json.android.keyPassword
            }
            ...
            buildTypes {
                release {
                    signingConfig signingConfigs.release //I added this
                    // ...
                }
            }
        }
    // ...
    }
    

    The reason I chose a .json file type, and not a .properties file type (as in the accepted answer), is because I wanted to also store other data (other custom properties I needed) to that same file (my_project/credentials.json), and still have gradle parse the signing information from within that file as well.

提交回复
热议问题