Программный ответ
Если вам нужно сделать это программно, это немного сложнее, чем просто получить ответ в свой мозг. У меня есть скрипт, который я использую для подписи всех наших приложений, но у каждого из них свой ключ. Вот 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
должно сделать это для вас, но это не так.) Пожалуйста, прокомментируйте, если у вас есть решение этой проблемы