Мне нужно получить имя пакета Android APK. Я попытался разархивировать APK и прочитать содержимое AndroidManifest.xml
, но, похоже, это не текстовый файл.
Как я могу извлечь название пакета APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, нажмите Enter, а затем просто искать выход для нужного параметра. Просто помните, чтоaapt
должно быть на вашем путиaapt
Команда находится подAndroid\SDK\build-tools\version
. на окнах команда может бытьaapt dump badging <path-to-apk> | findstr -i "package: name"
илиaapt dump badging <path-to-apk>
Вы можете установить APK на свой телефон, затем
Это взято из Найти имя пакета для приложений Android, чтобы использовать намерение для запуска приложения Market из Интернета
источник
su
сначала используйте команду.pm list packages -f | grep term-to-search-for
Основано на ответе @hackbod ... но связано с окнами.
aapt
Команда расположена наAndroid\SDK\build-tools\version
. Если вам нужна дополнительная информация о том, что такоеappt command
(Android Asset Packaging Tool), прочитайте эту https://stackoverflow.com/a/28234956/812915dump
Суб-командаaapt
используется для отображения значений отдельных элементов или частей пакета:aapt dump badging <path-to-apk>
Если вы хотите видеть только строку с
package: name
информацией, используйтеfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Надеюсь, что это поможет другим пользователям Windows!
источник
Если вы смотрите на Google Play и хотите узнать название пакета, вы можете посмотреть URL или адресную строку. Вы получите название пакета. Вот
com.landshark.yaum
название пакетаисточник
Если вы откроете AndroidManifest.xml с помощью MS Notepad, выполните поиск по фразе,
package
и вы увидите следующее:где xxx.xxxxxxx.xxxxxxx - это имя вашего пакета, просто пишется с пробелом после каждого символа.
Это полезный способ, когда у вас не установлено никаких специальных инструментов.
источник
Следующий скрипт bash отобразит имя пакета и имя основного действия:
apk_package.sh
запустите это так:
источник
Программный ответ
Если вам нужно сделать это программно, это немного сложнее, чем просто получить ответ в свой мозг. У меня есть скрипт, который я использую для подписи всех наших приложений, но у каждого из них свой ключ. Вот 2 способа получить только имя пакета в качестве вывода, чтобы вы могли поместить его в переменную или сделать с ним все, что вам нужно.
Пример вывода:
com.example.appname
(и ничего более)Требования
aapt
- Android Asset Packaging Tool, часть загрузки Инструментов SDKРешение 1
Используя
awk
указать'
в качестве Разделителя полей, найдите строку сpackage: name=
и выведите только 2-е «поле» в строке:Недостатком этого метода является то, что он использует aapt для вывода полей информации о пакете в том же порядке:
У нас нет обязательств от разработчиков поддерживать этот формат.
Решение 2
Используя
awk
указать"
в качестве Разделителя полей, найдите строку сpackage=
и выведите только 2-е «поле» в строке:Недостатком этого метода является то, что он зависит от возможности вывода
package=
только вAndroid Manifest:
разделе вывода. У нас нет обязательств от разработчиков поддерживать этот формат.Решение 3
Разверните файл apk
apktool d
и прочитайте файл AndroidManifest.xml.Это был бы лучший метод, но AndroidManifest.xml - это двоичный файл, и все ответы SO, которые я вижу для преобразования его в текст, не работают. (Использование
apktool d
вместо простогоunzip
должно сделать это для вас, но это не так.) Пожалуйста, прокомментируйте, если у вас есть решение этой проблемыисточник
Простым решением было бы открыть Android Studio -> Build -> Analyze Apk ..., просмотреть и выбрать APK, теперь вы можете найти имя пакета и почти все, что можете прочитать.
источник
Если вы просто хотите узнать имя пакета, запустите adb logcat, запустите нужное действие, вы получите подсказку на имя пакета.
источник
Другое решение состоит в том, чтобы использовать список aapt и использовать sed для анализа этого:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
источник
A:package="com.example.appname"
вAndroid Manifest:
разделе, если вы это делаетеaapt list -a
Есть очень простой способ, если вы уже загрузили APK на свой смартфон. Просто используйте одно из этих приложений:
Приложения просмотра имени пакета
источник
Очень простой способ - использовать apkanalyzer.
источник
Я думаю, что лучший и самый простой способ извлечь только имя пакета в Linux
Объяснение:
package: name='([a-z0-9.]*)'.*
и заменив первую (и единственную) соответствующую группу.источник
Вы можете извлечь AndroidManifest.xml из APK, удалить все NULL-байты, пропустить все до тех пор, пока после строки 'manifest' не будет получен длинный байт, за которым следует имя пакета (и то, что следует за ним). Для сложной задачи я использую отличный инструмент GEMA , поэтому команда выглядит так:
Конечно, вы можете использовать любой другой инструмент для фильтрации.
источник
Если у вас не установлен Android SDK, как в некоторых тестовых сценариях, вы можете получить имя пакета, используя следующий метод bash:
Проверено на Mac. 'strings' и 'unzip' являются стандартными для большинства Linux, поэтому должны работать и на Linux.
источник
вы можете установить Package_Name_Viewer.apk на ваш эмулятор, а затем вы можете увидеть имя пакета всех установленных приложений на вашем эмуляторе.
источник
Я также попробовал декомпиляцию, она работает, но недавно я нашел самый простой способ:
Загрузите и установите Appium с сайта Appium
Откройте Appium-> Android настройки, выберите целевой файл apk. И тогда вы получите все, что вы хотите, информацию о пакете, информацию о деятельности.
источник
Чтобы использовать это в пакетном сценарии, удобно, чтобы скрипт возвращал только имя пакета (например, для удаления приложения, когда у вас есть APK).
Вот скрипт, который я использую:
доступно по сути
Чтобы вы могли написать:
adb удалить `./getPackageName.sh file.apk`
источник
Для Windows у меня работает следующее:
Заметка
Отредактируйте пути adb, aapt, APKPath в соответствии с путями adb, aapt и местоположением apk в вашей системе.
Работает:
%adb% install %apk%
устанавливает приложение, если устройство подключено.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
выбирает имя пакета и некоторые другие детали, такие как версия и т. Д. Apk, и сохраняет его в файле temp.txt в том же месте, что и файл apk.extracts the package name and assigns to
pkgName` переменная%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
запускает приложение.По сути, вышеприведенный код устанавливает apk из указанного местоположения на рабочем столе «Desktop \ APK \ Instant_Instal \» на устройство и запускает приложение.
источник
Поскольку я не смог найти имя пакета в файле .apk с редактором (как предложено выше), я проверил функции в приложении «ES Datei Explorer» / «ES File Explorer» (бесплатная версия), которые я уже установлен. В этом инструменте имя пакета отображается правильно.
Так как я думаю, что хороший телефонный проводник не должен отсутствовать на телефоне, я предлагаю использовать этот инструмент (если вы уже установили apk на мобильный и должны знать имя пакета).
источник
Поскольку в документации Android указано, что AAPT устарел , получение имени пакета с помощью команды AAPT2 в Linux выглядит следующим образом:
./aapt2 dump packagename <path_to_apk>
Поскольку я использую более старую версию сборки Gradle, мне пришлось загрузить более новую версию AAPT2, как указано здесь:
Загрузите AAPT2 из Google Maven
При использовании инструментов сборки в моем SDK - 25.0.3, 26.0.1 и 27.0.3 при выполнении команды aapt2 выдается ошибка: Невозможно открыть «имя_пакета»: такого файла или каталога нет. Вот почему я пошел на более новые версии AAPT2.
Я использовал 3.3.0-5013011 для Linux.
источник
Вы можете использовать
Analyze APK...
из меню Build в Android Studio, оно будет отображать имя пакета в верхней части нового окна.источник
Я рекомендую вам сохранить его в формате .txt, потому что он может быть очень длинным. Так:
Затем посмотрите файл file.txt в вашем текущем каталоге.
источник