Download Android APK files from a phone

How to download apk archives of installed applications from a Android phone.

Preparations

Make sure development debuging is enabled, phone plugged in and that adb can communicate with it.

List installed packages

Run the following adb command to list installed third party applications packages

$ adb shell pm list packages -3 -f

It will display a list that looks something like this:

package:/data/app/com.yle.audio.x3m-1/base.apk=com.yle.audio.x3m
package:/data/app/com.kyorkka.stoppi-2/base.apk=com.kyorkka.stoppi
package:/data/app/cgeo.geocaching-1/base.apk=cgeo.geocaching
package:/data/app/com.instagram.android-1/base.apk=com.instagram.android
package:/data/app/com.instagram.layout-1/base.apk=com.instagram.layout
package:/data/app/com.schibsted.iberica.tori-1/base.apk=com.schibsted.iberica.tori
package:/data/app/com.yle.webtv-1/base.apk=com.yle.webtv
package:/data/app/com.twitter.android-1/base.apk=com.twitter.android
package:/data/app/net.sourceforge.opencamera-1/base.apk=net.sourceforge.opencamera
package:/data/app/com.spotify.music-1/base.apk=com.spotify.music
package:/data/app/com.facebook.katana-1/base.apk=com.facebook.katana
package:/data/app/com.bbm-1/base.apk=com.bbm
package:/data/app/app.zxtune-2/base.apk=app.zxtune

Now note the path of the package you would like to download, say BBM (com.bbm). The path is /data/app/com.bbm-1/base.apk

To download the package from the phone, run the following adb command (destination file in italic, you can use whatever you like):

adb pull /data/app/com.bbm-1/base.apk com.bbm.apk

Now you can copy the downloaded apk to some other device, say for example a Sailfish OS running Jolla, and install it there.