Sometime we want to analyze certain app that reside in your phone (an Android one), the way to extract this .APK (via the CLI) is using this commands (first you need to connect your android via USB with developer mode activated):
adb shell pm list packages
This list all the packages names of your installed APKs
select your desire package name (in the example: com.sgt.myapp) and run:
adb shell pm path com.sgt.myapp
This command will return a path like: adb pull /data/app/com.sgt.myapp-1.apk. So with this information, run:
adb pull /data/app/com.sgt.myapp-1.apk
Now you have you APK in your computer.
Another useful command is:
adb shell dumpsys package com.sgt.myapp | grep versionName
that return the version name
To generate an .APK to upload to Google Play Console, you need to “sign” the binary. So, keytool command is the way:
keytool -genkey -v -keystore app_name.keystore -alias app_name -keyalg RSA -keysize 2048 -validity 10000
Before generate the keystore, you need to answer this questions:
- What is your first and last name?
- What is the name of your organizational unit?
- What is the name of your organization?
- What is the name of your City or Locality?
- What is the name of your State or Province?
- What is the two-letter country code for this unit?
You need to give a password for this file. Finally, the app_name.keystore is generated.
Assuming we are building an ionic app, here are the commands
sudo ionic cordova build android --release --prod
to compile, and generate the non-signed .APK file: android-armv7-release-unsigned.apk
sudo chmod 777 ./platforms/android/build/outputs/apk
to give full permission to the destination folder (to write the new file)
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 -keystore app_name.keystore ./platforms/android/build/outputs/apk/android-armv7-release-unsigned.apk app_name
sign the .APK
/Users/miguel/Library/Android/sdk/build-tools/27.0.0/zipalign -vf 4 ./platforms/android/build/outputs/apk/android-armv7-release-unsigned.apk ./platforms/android/build/outputs/apk/app_name.apk
generate the new app_name.APK file signed. You need to have the Android SDK tools installed.
adb install -r ./platforms/android/build/outputs/apk/app_name.apk
send (copy) the binary (.APK file) to your phone (via USB)
Just in case you need to see the console.log directly from you terminal. It will show you everything happening in your phone.