Прочитайте название пакета Android APK - PullRequest
179 голосов
/ 09 июня 2011

Мне нужно получить имя пакета Android APK.Я попытался разархивировать APK и прочитать содержимое AndroidManifest.xml, но, похоже, это не текстовый файл.

Как извлечь имя пакета APK?

Ответы [ 21 ]

286 голосов
/ 09 июня 2011
aapt dump badging <path-to-apk> | grep package:\ name
70 голосов
/ 09 июня 2011

Вы можете установить apk на свой телефон, затем

подключиться с помощью adb, вы можете запустить оболочку adb и выполнить список пакетов pm -f, который показывает имя пакета для каждого установленного apk.

Это взято из Найти имя пакета для приложений Android, чтобы использовать намерение для запуска приложения Market из Интернета

12 голосов
/ 27 сентября 2012

Если вы откроете AndroidManifest.xml с помощью MS Notepad, найдите фразу package, и вы увидите следующее:

package manifest $xxx.xxxxxxx.xxxxxxx |

, где xxx.xxxxxxx.xxxxxxx - это имя вашего пакета, просто записанное с пробелом после каждого символа.

Это полезный способ, когда у вас не установлено никаких специальных инструментов.

12 голосов
/ 05 июня 2012

Если вы смотрите на Google Play и хотите узнать название пакета, вы можете посмотреть URL или адресную строку.Вы получите название пакета.Здесь com.landshark.yaum - название пакета

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
12 голосов
/ 06 июля 2013

Следующий скрипт bash отобразит имя пакета и имя основного действия:

apk_package.sh

package=$(aapt dump badging "$*" | awk '/package/{gsub("name=|'"'"'","");  print $2}')
activity=$(aapt dump badging "$*" | awk '/activity/{gsub("name=|'"'"'","");  print $2}')
echo
echo "   file : $1"
echo "package : $package"
echo "activity: $activity"

запустите его так:

apk_package.sh /path/to/my.apk
8 голосов
/ 19 мая 2016

На основе ответа @hackbod ... но относится к окнам.

Команда

aapt расположена на Android\SDK\build-tools\version. Если вам нужна дополнительная информация о том, что такое appt command (Android Asset Packaging Tool), прочитайте это https://stackoverflow.com/a/28234956/812915

Подкоманда dump в aapt используется для отображения значений отдельных элементов или частей пакета:

aapt dump badging <path-to-apk>

Если вы хотите видеть только строку с package: name info, используйте findstr

aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"

Надеюсь, это поможет другим пользователям Windows!

5 голосов
/ 26 мая 2015

Программный ответ

Если вам нужно сделать это программно, это немного сложнее, чем просто получить ответ в свой мозг. У меня есть скрипт, который я использую для подписи всех наших приложений, но у каждого из них свой ключ. Вот 2 способа получить только имя пакета в качестве вывода, чтобы вы могли поместить его в переменную или сделать с ним все, что вам нужно.

Пример вывода: com.example.appname (и ничего более)

Требования

aapt - Android Asset Packaging Tool, часть загрузки SDK Tools

Решение 1

Используя awk, укажите ' в качестве Разделителя полей, найдите строку с package: name= и напечатайте только 2-е поле в строке:

aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print $2}'

Недостатком этого метода является то, что он использует aapt для вывода полей информации о пакете в том же порядке:

package: name='com.example.appname' versionCode='3461' versionName='2.2.4' platformBuildVersionName='4.2.2-1425461'

У нас нет обязательств от разработчиков поддерживать этот формат.

Решение 2

Используя awk, укажите " в качестве Разделителя полей, найдите строку с package= и напечатайте только 2-е поле в строке:

aapt list -a /path/to/file.apk | awk -v FS='"' '/package=/{print $2}'

Недостатком этого метода является то, что он использует aapt для вывода package= только в разделе Android Manifest: вывода. У нас нет обязательств от разработчиков поддерживать этот формат.

Решение 3

Разверните файл apk с помощью apktool d и прочитайте AndroidManifest.xml.

Это был бы лучший метод, но AndroidManifest.xml - это двоичный файл, и все ответы SO, которые я вижу для преобразования его в текст, не работают. (Использование apktool d вместо простого unzip должно сделать это для вас, но это не так.) Пожалуйста, прокомментируйте, если у вас есть решение этой проблемы

3 голосов
/ 28 июня 2018

Простым решением было бы открыть Android Studio -> Build -> Analyze Apk ..., просмотреть и выбрать APK, теперь вы можете найти имя пакета и почти все, что можете прочитать.

2 голосов
/ 12 февраля 2014

Другое решение - использовать список aapt и использовать sed для анализа:

aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"

2 голосов
/ 16 марта 2017

Существует очень простой способ, если вы уже загрузили APK на свой смартфон.Просто используйте одно из следующих приложений:

Приложения просмотра имени пакета

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...