I have made an app project in React Native, and I want to build its apk. I am following the official documentation as shown here https://reactnative.dev/docs/signed-apk-android.
It says that I must first generate a private signing key using keytool
. I have followed the instructions for windows. Here is the terminal output:
PS C:Program FilesJavajdk1.8.0_271bin> keytool -genkeypair -v -storetype PKCS12 -keystore my-upload-key.keystore -alias my-key-alias -keyalg RSA -keysize 2048 -validity 10000
Enter keystore password:
Re-enter new password:
What is your first and last name?
[Unknown]: My Name
What is the name of your organizational unit?
[Unknown]: Myself
What is the name of your organization?
[Unknown]: OrgName
What is the name of your City or Locality?
[Unknown]: CityName
What is the name of your State or Province?
[Unknown]: StateName
What is the two-letter country code for this unit?
[Unknown]: XY
Is CN=My Name, OU=Myself, O=OrgName, L=CityName, ST=StateName, C=XY correct?
[no]: yes
Generating 2,048 bit RSA key pair and self-signed certificate (SHA256withRSA) with a validity of 10,000 days
for: CN=My Name, OU=Myself, O=OrgName, L=CityName, ST=StateName, C=XY
[Storing my-upload-key.keystore]
PS C:Program FilesJavajdk1.8.0_271bin>
Immediately after this, the documentation says I must enter the generated keystore password and key password into this file
Place the
my-upload-key.keystore
file under theandroid/app
directory in your project folder.Edit the file
~/.gradle/gradle.properties
orandroid/gradle.properties
, and add the following (replace*****
with the correct keystore password, alias and key password),MYAPP_UPLOAD_STORE_FILE=my-upload-key.keystore MYAPP_UPLOAD_KEY_ALIAS=my-key-alias MYAPP_UPLOAD_STORE_PASSWORD=***** MYAPP_UPLOAD_KEY_PASSWORD=*****
Later, in android/app/build.gradle
, I am to add this:
signingConfigs {
release {
storeFile file(MYAPP_UPLOAD_STORE_FILE)
storePassword MYAPP_UPLOAD_STORE_PASSWORD
keyAlias MYAPP_UPLOAD_KEY_ALIAS
keyPassword MYAPP_UPLOAD_KEY_PASSWORD
}
}
I believe the "storePassword" is the "keystore password" which I created earlier when i was prompted by keytool, but I do not remember ever seeing or generating a "keyPassword".
Perhaps this is a banal question, but how do I find my "keyPassword"? Even other tutorial websites seem to assume the user already has it or knows it. Is the "keyPassword" something that I must create right now?
2
Answers
In Android Studio go Build -> Generate Signed Bundle / Apk.
You will see button Create New on second step.
There you will be able to create key with password
You can also create the key using command line:
Then you need to add the key inside android/app folder and add the keystore name inside android/app/build.gradle file, in the signingConfigs configuration.