I'm working on a react native app on windows. To be able to generate a signed release apk I've added MYAPP_RELEASE_STORE_PASSWORD=*** and MYAPP_RELEASE_KEY_PASSWORD=*** to my /projectname/android/gradle.properties file (Like it says so here). Now I wonder if I should add the file to gitignore to prevent it from being uploaded to github, or is there a way to store the password in a different file?
- 1,340
- 2
- 15
- 32
-
1Check this link in the documentation: http://stackoverflow.com/documentation/android-gradle/5249/configure-signing-settings#t=201702081442045666847 There are a lot of way to handle the file which stores the password. – Gabriele Mariotti Feb 08 '17 at 14:42
3 Answers
I found the solution for storing the passwords in a separate file here: Sign APK without putting keystore info in build.gradle
In build.gradle add:
// Load keystore
def keystorePropertiesFile = rootProject.file("keystores/release.keystore.properties");
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
And a bit further down:
signingConfigs {
release {
storeFile file(keystoreProperties['MYAPP_RELEASE_STORE_FILE'])
storePassword keystoreProperties['MYAPP_RELEASE_STORE_PASSWORD']
keyAlias keystoreProperties['MYAPP_RELEASE_KEY_ALIAS']
keyPassword keystoreProperties['MYAPP_RELEASE_KEY_PASSWORD']
}
}
And then add release.keystore.properties to the .gitignore file defined like so:
MYAPP_RELEASE_STORE_FILE=x
MYAPP_RELEASE_STORE_PASSWORD=y
MYAPP_RELEASE_KEY_ALIAS=z
MYAPP_RELEASE_KEY_PASSWORD=t
(Sorry for answering my own question, I hate doing that..)
- 2,352
- 5
- 24
- 33
- 1,340
- 2
- 15
- 32
-
1So what is the content inside `keystores/release.keystore.properties` ? Is it these? MYAPP_RELEASE_STORE_FILE=myapp-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=myapp-key-alias MYAPP_RELEASE_STORE_PASSWORD=password MYAPP_RELEASE_KEY_PASSWORD=password – vzhen Dec 31 '17 at 12:06
You can add that information to your super gradle.properties file on ${HOME}/.gradle/gradle.properties and it should be ready for you.
You can also rename those properties on the app/build.gradle and use different ones for different projects if required.
For example, my project FOO has
112 release {
113 storeFile file(FOO_RELEASE_STORE_FILE)
114 storePassword FOO_RELEASE_STORE_PASSWORD
115 keyAlias FOO_RELEASE_KEY_ALIAS
116 keyPassword FOO_RELEASE_KEY_PASSWORD
117 }
And on my ${HOME}/.gradle/gradle.properties I have:
1 FOO_RELEASE_STORE_FILE=foo-release-key.keystore
2 FOO_RELEASE_KEY_ALIAS=foo.android
3 FOO_RELEASE_STORE_PASSWORD=******************
4 FOO_RELEASE_KEY_PASSWORD=***************
- 6,683
- 7
- 44
- 63
-
But the issue with this is that when you use windows ´${HOME}/.gradle/gradle.properties´ doesn't seem to exist (described also on the linked blogpost). – Niels Feb 08 '17 at 14:58
You can create ${HOME}/.gradle/gradle.properties, as it doesn't exist by default, at least on Windows.
Put the key there exactly as you would in your project gradle.properties. You can see the order of precedence here.
- 13
- 3