Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save AlirezaChegini/42779e633e9e28330e7bba407aacb40c to your computer and use it in GitHub Desktop.
Save AlirezaChegini/42779e633e9e28330e7bba407aacb40c to your computer and use it in GitHub Desktop.
Make an android app debugabble and reinstall
#!/bin/sh
# Make an android app debugabble and reinstall
set -ex
DNAME="CN=Ross Patterson, OU=me, O=rpatterson.net, L=San Francisco, ST=CA, C=US"
PACKAGE_RE='^package:(/data/app/([^-]+)-.+==/(.+.apk))=.+'
MANIFEST_RE='(<application [^>]+)>'
export PATH=$HOME/Android/Sdk/platform-tools:$PATH
app="$1"
storepasswd=$(pwgen 16 1)
package_listing=$(adb shell pm list packages -f -3 | grep "$app")
apk_path=$(echo "$package_listing" | sed -En "s|$PACKAGE_RE|\1|p")
package_name=$(echo "$package_listing" | sed -En "s|$PACKAGE_RE|\2|p")
apk_basename=$(echo "$package_listing" | sed -En "s|$PACKAGE_RE|\3|p")
adb pull "$apk_path" "$package_name.apk"
apktool d -f -o "$package_name" "$package_name.apk"
mv "$package_name/AndroidManifest.xml" "$package_name/AndroidManifest.bak.xml"
sed -E "s|$MANIFEST_RE|\1 android:debuggable=\"true\">|" \
"$package_name/AndroidManifest.bak.xml" > "$package_name/AndroidManifest.xml"
apktool b -o "$package_name.apk" "$package_name"
keytool -genkey -v \
-keystore "$package_name.keystore" -storepass "$storepasswd" \
-alias "${app}_debuggable" -keyalg RSA -keysize 2048 -validity 10000 \
-dname "$DNAME"
jarsigner -verbose -sigalg SHA1withRSA -digestalg SHA1 \
-keystore "$package_name.keystore" -storepass "$storepasswd" \
"$package_name.apk" "${app}_debuggable"
adb shell cmd package uninstall -k "$package_name"
adb install -r "$package_name.apk"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment