Прочитайте имя пакета Android APK
19 ответов
вы можете установить apk на свой телефон, затем
connect используя adb, вы можете запустить adb shell и выполнить PM list packages-f, который показывает имя пакета для каждого установленного apk.
Это взято из найти имя пакета для Android-приложений, чтобы использовать намерение запустить приложение Market из интернета
Если вы открываете AndroidManifest.xml с помощью MS Notepad, поиск фразы package
и вы найдете следующее:
package manifest $xxx.xxxxxxx.xxxxxxx |
где XXX.ХХХХХХХ.xxxxxxx-это имя вашего пакета, просто написанное пробелом после каждого символа.
это полезный способ, когда у вас нет каких-либо конкретных установленных инструментов.
Если вы смотрите на google play и хотите узнать его имя пакета, вы можете посмотреть url или адресную строку. Вы получите имя пакета. Вот!--1--> - имя пакета
https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
следующий скрипт bash отобразит имя пакета и основное имя действия:
apk_package.sh
package=$(aapt dump badging "$*" | awk '/package/{gsub("name=|'"'"'",""); print }')
activity=$(aapt dump badging "$*" | awk '/activity/{gsub("name=|'"'"'",""); print }')
echo
echo " file : "
echo "package : $package"
echo "activity: $activity"
запустите его так:
apk_package.sh /path/to/my.apk
на основе ответа @hackbod ... но связано с windows.
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
информация, использовать findstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
надеюсь, что это поможет другому пользователю windows!
Программный Ответа
Если вам нужно сделать это программно, это немного больше, чем просто ответ в ваш мозг. У меня есть скрипт, который я использую для подписи всех наших приложений, но каждый использует другой ключ. Вот 2 способа получить только имя пакета как выход, так что вы можете поместить его в переменную или сделать все, что вам нужно с ним.
пример: com.example.appname
(и ничего еще)
требования
aapt
- Android инструмент упаковки активов, часть SDK Tools загрузить
Решение 1
используя awk
указать '
в качестве разделителя полей найдите строку с package: name=
, и напечатать только 2-е "поле" в строку:
aapt dump badging /path/to/file.apk | awk -v FS="'" '/package: name=/{print }'
недостатком этого метода является то, что он полагается на 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 }'
слабость этого метода заключается в том, что он полагается на aapt для вывода package=
только в Android Manifest:
раздел вывода. У нас нет обязательств от разработчиков поддерживать это формат.
решение 3
разверните файл apk с помощью apktool d
и прочитайте AndroidManifest.XML.
это был бы лучший метод, но AndroidManifest.xml-это двоичный файл, и все ответы SO, которые я вижу для преобразования его в текст, не работают. (Используя apktool d
вместо простого unzip
должен делать это для вас, но это не так.) прокомментируйте, пожалуйста, если у вас есть решение этой проблемы
Если вы просто хотите знать имя пакета, запустите adb logcat, запустите действие, которое вы хотите, вы получите подсказку об имени пакета.
другое решение-использовать список aapt и использовать sed для анализа этого:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
Я думаю, что лучший и самый простой способ извлечь только имя пакета в Linux
aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*//"
объяснение:
- aapt извлекает информацию APK
- Grep "пакет", чтобы сохранить только строку о пакете информации
- Make sed замените всю строку именем пакета, используя только следующее регулярное выражение:
package: name='([a-z0-9.]*)'.*
и замена первой (и только) соответствующей группой.
вы можете извлечь AndroidManifest.xml из APK, удалите все нулевые байты, пропустите все до тех пор, пока после строки "манифест", а затем вы находитесь в байте длины, за которым следует имя пакета (и что происходит после него). Для трудной задачи я использую великое гема tool, поэтому команда выглядит так:
7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{};}'
конечно, вы можете использовать любой другой инструмент для фильтрации.
есть очень простой способ, если у вас есть APK allready на вашем смартфоне. Просто используйте одно из этих приложений:
простым решением было бы открыть Android Studio - > Build - > Analyze Apk... просмотрите и выберите APK теперь вы можете найти имя пакета и в значительной степени вы можете прочитать.
вы можете установить Package_Name_Viewer.apk на эмуляторе, а затем вы можете увидеть имя пакета всех установленных приложений на эмуляторе.
Я также пробовал де-компиляцию, она работает, но недавно я нашел самый простой способ:
Загрузите и установите Appium из веб-сайт Appium
открыть Appium - > настройка Android, выберите целевой файл apk. И тогда вы получаете все, что хотите, информацию о пакете, информацию о деятельности.
чтобы использовать это в пакетных сценариях, удобно, чтобы скрипт возвращал только имя пакета (например, для удаления приложения, когда у вас есть APK).
вот скрипт, который я использую:
# extract the android package id from a built apk file
# usage ./getPackageName.sh <path-to-apk>
line=`aapt dump badging "" | grep package:\ name`
# above returns:
# package: name='com.calvium.myapp' versionCode='1' versionName='1.0'
if [[ $line =~ name=\'(.+)\'\ versionCode ]]; then
echo ${BASH_REMATCH[1]}
else
echo "Failed to find package name"
exit 1
fi
чтобы вы могли написать:
ADB uninstall`. /getPackageName.sh файл.apk'
для Windows следующее работало для меня:
:: // Initializing variables
SET adb="C:\Users\<User name>\AppData\Local\Android\Sdk\platform-tools\adb"
SET aapt="C:\Users\<User name>\AppData\Local\Android\Sdk\build-tools.0.0\aapt"
SET APKPath=C:\Users\<User name>\Desktop\APK\Instant_Instal\
CD %APKPath%
:: // Searching for apk file and storing it
FOR /F "delims=" %%f IN ('dir /S /B *.apk') DO SET "APKFullPath=%%f"
SET apk=%APKFullPath%
:: // Command adb install apk, run apk
%adb% install %apk%
:: // Fetching package name from apk
%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
FOR /F "tokens=2 delims='" %%s IN (temp.txt) DO SET pkgName=%%s
del temp.txt
:: // Launching apk
%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
pause
Примечание
пожалуйста, отредактируйте пути АБР, aapt, APKPath по пути АБР, aapt, и место АПК в вашей системе.
работает:
- здесь я добавил apk в папку на рабочем столе " \Desktop\APK\Instant_Instal\".
- команда
%adb% install %apk%
устанавливает приложение, если устройство подключено. - этот
%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
извлекает имя пакета и несколько других деталей, таких как версия и т. д. из apk и магазинов в temp.txt файл в том же месте, что и apk. - FOR / F "tokens=2 delims= '" %%s IN (temp.txt) установите pkgName=%%s
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 на мобильном телефоне и должны знать имя пакета).
список aapt - "path_to_apk"
Я рекомендую вам сохранить его .txt, потому что он может быть очень длинным. Итак:
список aapt - "path_to_apk" > файл.txt
см. файл.txt в текущей директории.