Obtain package name AND common name of apps via ADB I'm looking for a possibility to retrieve both, the package names and the common names of apps installed on an Android device via ADB – or at least to retrieve the common name if the package name is known. A quick search on our site brought up two related questions, but they don't solve my issue:

How do I get the common name of an app having the package name (like com.android.blabla)? (command line or included app) doesn't work via ADB (but uses an app you've got to lookup with manually), matching the request of the OP
How to find app based on package name? just reverts to an URL lookup at Google Play, which doesn't always fit (as not all apps are available there).

I'm looking for a way to retrieve the information directly from the device, if possible – not &quot;any&quot; way (including &quot;web lookups&quot; or &quot;via an app&quot;) as those two questions have it.
I know there are multiple tools available to obtain package details:

adb dumpsys package: While this lists all packages with a bunch of details, the &quot;common name&quot; is not shown
adb shell pm list: only gives the package names
aapt would be able to obtain the common name, but would require to first pull the .apk file from the device, which is not really convenient (and obviously will be pretty slow with many and/or large apps installed)

Did I miss something? I know the information must be on the device (how else could it show the app names in the GUI? I doubt Android parses the .apk file each time the GUI need the &quot;common name&quot;). So is there a way to get hold of it, using ADB directly?

TL;DR
Background (if somebody's curious): I want to be able to quickly obtain a list of user-apps from any of my devices, without having to revert to acrobatics. A list of their package names I can retrieve using adb shell pm list -3, but as those are package names only, recognizing apps is a guess-work. So if there were some ADB command to retrieve the common name for a given package name, I could simply use a loop like for pkg in $(adb shell pm list -3); do echo &quot;- $(adb &lt;whatever_the_command_is&gt; $pkg) ($pkg)&quot;; done – and get a listing of all the installed user-apps in a &quot;human readable format&quot; together with their package names.
Use-cases:

See what &quot;superflous&quot; apps are installed (which I could remove)
Cross-check lists from multiple devices
Documentation ;)
and probably more (but the above 3 are what I need it for)
Here is my solution for a non-rooted phone which needed some slight changes from above which I ran on a Moto G 2nd gen running android 5.0.2.

I didn't have aapt binary in /system/bin, so I first tried downloading from: https://android.izzysoft.de/downloads

but when I tried to run it I got an error saying:

error: only position independent executables (PIE) are supported.

So then I searched for a PIE version and found: https://github.com/Calsign/APDE/blob/master/APDE/src/main/assets/aapt-binaries/aapt-arm-pie 

and this worked by copying binary to /data/local/tmp:

adb push aapt-arm-pie /data/local/tmp
adb shell chmod 0755 /data/local/tmp/aapt-arm-pie


So then:

adb shell pm list packages -3 -f


gets list of 3rd party apps (apps you have installed, not system apps) and then you can use package from command above in aapt to get information on package - example:

adb shell /data/local/tmp/aapt-arm-pie d badging /data/app/com.facebook.katana-3/base.apk


So below is script (for a Linux client) to get just "common" name for 3rd party apps:``

for pkg in `adb shell pm list packages -3 -f | awk -F= '{sub("package:","");print $1}'`
do
  adb shell /data/local/tmp/aapt-arm-pie d badging $pkg | awk -F: '
      $1 == "application-label" {print $2}'
done


If you want package and version too, then 
change last but one line from:

$1 == "application-label" {print $2}'


to:

$1 == "package" { split($2,space," ")
name=space[1];version=space[3]}
$1 == "application-label" {print name, version, $2 }'


Example output:

name='com.ultimarom.launchnavigation' versionName='1.28' 'Navigation'
name='com.enhanced.skineditorstudio' versionName='3.3' 'Custom Skin Creator'
name='com.mojang.minecraftpe' versionName='1.2.6.60' 'Minecraft'
name='org.videolan.vlc' versionName='2.5.13' 'VLC'
name='com.jrustonapps.myauroraforecast' versionName='1.7.2' 'My Aurora Forecast'
name='de.j4velin.wifiAutoOff' versionName='1.7.6' 'WiFi Automatic'
name='com.facebook.katana' versionName='153.0.0.54.88' 'Facebook'
name='com.metago.astro' versionName='6.0.5' 'ASTRO File Manager'
name='za.co.hardrive.smartinfo.parkrun' versionName='2.0.2' 'My 5krun'
name='com.PYOPYO.StarTrackerVR' versionName='1.0.1' 'StarTracker VR'
name='cz.aponia.bor3.offlinemaps' versionName='1.1.19' 'Offline Maps'
name='com.groupon' versionName='16.11.63973' 'Groupon'
name='com.ebay.mobile' versionName='5.16.1.2' 'eBay'
name='com.runtastic.android' versionName='8.1.1' 'Runtastic'
name='com.google.android.diskusage' versionName='3.8.3' 'DiskUsage'

Mike