[Android] Как узнать название пакета и activity из apk-приложения

Задача: узнать название пакета Android-приложения в формате apk и запускаемого активити.

Решение:

Способ 1

Можно взять и открыть AndroidManifest.xml, чтобы посмотреть нужные данные, к примеру, через команду cat:

cat <path_to_apk>

Пример вывода:

versionCode
minSdkVersiontargetSdkVersionnameprotectionLevel versionName
allowBackuphardwareAcceleratediconlabelthemescreenOrientation
launchMode
permissionvalueandroid*http://schemas.android.com/apk/res/
androidpackagmanifestcom.mobileshop2.uses-sdkuses-permissionandroid.
permission.INTERNETandroid.permission.WAKE_LOCK)android.permission.
ACCESS_COARSE_LOCATIONandroid.permission.VIBRATE)com.mobileshop.
permission.C2D_MESSAGE*com.google.android.c2dm.permission.RECEIVE
applicatioactivitycom.intent-filteractionandroid.intent.action.
MAIcategory android.intent.category.LAUNCHEreceiver'com.mobileshop.
GcmBroadcastReceiver'com.google.android.c2dm.permission.SEND&com.
google.android.c2dm.intent.RECEIVEservice#com.mobileshop.
GcmIntentService meta-dataserver_addresshttp://mobileshop.com/D

Большая часть содержимого файла AndroidManifest.xml является нечитабельной, т.к. сам файл является двоичным, а то, что поддается чтению, имеет не самый удобный формат для восприятия. Мы видим, что имя пакета имеет название com.mobileshop, но мы не видим название запускаемого активити.

Способ 2

Можно воспользоваться услугами утилиты AAPT (Android Asset Packaging Tool), которая представляет из себя  упаковщик для сборки приложения, библиотек и ресурсов в единый apk-файл. Утилита входит в состав Android SDK и располагается в моем случае в директории /Applications/AndroidSDK/build-tools/17.0.0/.

Чтобы узнать название пакета apk-приложения:

./aapt dump badging <path_to_apk> | grep "package"

Пример вывода:

package: name='com.mobileshop' versionCode='13' versionName='2.0'

Чтобы узнать название запускаемого активити apk-приложения:

./aapt dump badging /Users/bulkinav/Desktop/HTC_Market_v2.0.apk | grep "launchable-activity"

Пример вывода:

launchable-activity: name='com.mobileshop.MainActivity' label='Mobile Shop' icon=''