golb

Android

Extract the APK from your device

With APK Extractor app

With adb - https://developer.android.com/tools/adb

apktools

apktool can extract the .apk file into a directory with the resources and the classes

java -jar apktool.jar d APP_NAME.apk

dex2jar

dex2jar can transform the .apk into a .jar file viewable by jd-gui

# download the latest release
# extract the zip file
d2j-dex2jar.sh APP_NAME.apk

jd-gui

jd-gui can view the .jar file generated by dex2jar

java -jar jd-gui.jar APP_NAME-dex2jar.jar

jadx

jadx can decompile the .apk file and view the source code

jadx -d out_folder APP_NAME.apk
jadx-gui # open the APK inside

Get signatures of the APK

apksigner verify --print-certs example.apk

Android keystore and keytool

The keystore is often a PKCS12 keystore type

# list the keys
keytool -keystore ~/path/to/keystore -list

# export the certificate
keytool -keystore ~/path/to/keystore -exportcert -alias key_alias -file exported_certificate.der

# convert JKS to PKCS12
keytool \
    -importkeystore \
    -srckeystore ~/path/to/keystore \
    -destkeystore PRIVATE_KEYSTORE.p12 \
    -srcstoretype JKS \
    -deststoretype PKCS12 \
    -srcstorepass $STORE \
    -deststorepass key_out \
    -srcalias key_alias \
    -destalias key_alias \
    -srckeypass $KEY \
    -destkeypass key_out \
    -noprompt

# export private key
openssl pkcs12 -in PRIVATE_KEYSTORE.p12 -nodes -nocerts -out private.key
# check the private.key file

Waydroid

sudo waydroid init
waydroid session start
waydroid app install app.apk

waydroid show-full-ui

# stop
waydroid session stop

# if you are running x11, use weston to have wayland interface
weston --socket=mysocket
# then do the command inside the weston terminal

https://docs.waydro.id/usage/install-on-desktops

Manually install SDK

Choose version

10406996 = 11.0
9862592  = 10.0
9477386  = 9.0
9123335  = 8.0
8512546  = 7.0
export ANDROID_SDK_ROOT=$HOME/.android/sdk
curl https://dl.google.com/android/repository/commandlinetools-linux-9477386_latest.zip -o file.zip
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/
unzip file.zip -d $ANDROID_SDK_ROOT/
mv $ANDROID_SDK_ROOT/cmdline-tools/ $ANDROID_SDK_ROOT/temp
mkdir -p $ANDROID_SDK_ROOT/cmdline-tools/latest
mv $ANDROID_SDK_ROOT/temp/* $ANDROID_SDK_ROOT/cmdline-tools/latest
SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager
touch $ANDROID_SDK_ROOT/repositories.cfg

# accept licenses
yes | $SDKMANAGER --licenses


$SDKMANAGER --list
$SDKMANAGER tools platform-tools
# install correct version
$SDKMANAGER 'platforms;android-10'
$SDKMANAGER 'build-tools;28.0.3'
$SDKMANAGER "system-images;android-29;default;x86"


# emulator avd
$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/avdmanager create avd -n TestAVD -k "system-images;android-29;default;x86" --device "pixel_4"
# to delete it
$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/avdmanager delete avd -n TestAVD

$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/avdmanager list avd

$ANDROID_SDK_ROOT/emulator/emulator -avd TestAVD


# android stuff
export ANDROID_SDK_ROOT=$HOME/.android/sdk
export ANDROID_HOME=$HOME/.android/sdk/
export SDKMANAGER=$ANDROID_SDK_ROOT/cmdline-tools/latest/bin/sdkmanager
export ANDROID_NDK_HOME=$HOME/.android/sdk/ndk/