These are step by step I do in Ubuntu 16.04 LTS
Step 1: Create keystore using keytool from JDK.
- Navigate to $JDK$/bin directory
- Execute command:
./keytool -genkey -v -keystore vocabulary_note.keystore -alias vocabulary_note -keyalg RSA -keysize 2048 -validity 10000
Explanation:
./keytool : execute keytool program
vocabulary_note.keystore: name of keystore, you can choose any name
vocabulary_note: alias of keystore, you can choose any name.
Enter password and complete other steps.
Step 2: Generate unsigned apk file.
Open Android studio:
Run -> Edit configurations ...
Create a new Gradle task with following information:
Name: unsignApp
Gradle project: choose your project module
Tasks: assemble
In Run menu, select the configuration you've just created.
After running it you will see file unsigned apk file in your $android_studio_path$/$app_name$
Change the name to whatever you want and move it to keytool folder
For instance I change it name to vocabulary_note.apk
The keystore, unsigned apk, keytool, jarsigner files should in same folder.
Step 3: Create signed apk file.
Execute command:
./jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore vocabulary_note.keystore vocabulary_note.apk vocabulary_note
Explanation:
./jarsigner: run jarsigner program to create signed apk file from unsigned apk. vocabulary_note.keystore: name of keystore, you can choose any name
vocabulary_note: alias of keystore, you can choose any name.
P/S
When using another third party modules, maybe you would face with another issue:
Just add these command to the proguard-rules.pro file with the appropriate class you don't want Android studio warn you.
-keepattributes SourceFile,LineNumberTable -keep class com.parse.*{ *; } -dontwarn com.parse.** -dontwarn com.squareup.picasso.** -keepclasseswithmembernames class * { native <methods>; }
Hope it help !
That's it ^_^