It is sometimes helpful to pull an APK from a working device so you can install it on a different device. These commands should work on an emulator, phone, tablet, or other Android device. You just need to be able to connect with ABD.
- Connect to device with ADB
- View installed apps
- Find path for APK
- Pull/Download APK
View Installed Apps
This will display a list of all the installed packages.
adb shell pm list packages
Find path for specific App/APK
Replace com.android.apk with the app of interest.
adb shell pm path com.android.apk
Pull APK to local machine
Pull/Download the APK of interest to your local machine with the following command. Change the path “/data/app/…” to the path returned from the previous command.
adb shell pull /data/app/info/base.apk
You can view the following link for more information.
https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device
Advanced Tricks
What if you need to get an APK off a secondary profile, or would like to download all the APKs off a system? And what about split APKs?
Multiple User Profiles
Run the following command to list the users.
adb shell pm list users
Example return
Users: UserInfo{0:User:a41} running UserInfo{11:User:439} running
In this case our second user id is 11. To get a list of APKs installed for our second user we would specify the –user= option
adb shell pm list packages --user=11
To get the path for the app we would run it with
adb shell pm path --user=11 com.android.apk
Split APKs
Split APKs can be slightly more difficult to manage, mainly due to the fact that there are multiple APKs to keep track of.
When you run the “pm path” command, it should return multiple APKs. Use the pull command like normal, but download each APK.
You’ll need to use a split APK installer to install all the APKs.
PowerShell script for Pulling/Downloading all APKs on Device
The following PowerShell script will download all APKs for a specific user and put them in their own folders.
- Copy the contents to a .ps1 file
- Enable ps1 execution policy if not already enabled
- Run PowerShell script.
This script will pull all the APKs off of a device and put them in the current folder.
It will also download split APKs.
# adbapkbackup uses adb to get a list of all the APKs you have on a phone and then # Creates folders for each app and downloads the APKs for those apps. # Copy and save code as a ps1 file # Enable ps1 scripts to run on your computer by launching an Admin promopt and running # set-executionpolicy remotesigned # If you are in a secondary profile, add and/or modify # "--user 15" # to your user id # adb shell pm list users # If in secondary profile, add "--user 15" after packages before > apklist.txt adb shell pm list packages --user 15 > apklist.txt $apks = ((Get-Content .\apklist.txt)) -replace 'package:','' ForEach ($apk in $apks) { echo "APK is $apk" md $apk # If in secondary profile, add "--user 15" after path, before $file adb shell pm path $apk $filepath = ((adb shell pm path --user 15 $apk | % {$_.replace("package:","")})) ForEach ($lapk in $filepath | % {$_.replace("package:","")}) { echo "pulling $lapk $apk" adb pull $lapk $apk } }