Lire le nom du paquet D'un APK Android

je dois obtenir le nom de paquet D'un apk Android. J'ai essayé de décompresser L'APK et de lire le contenu de AndroidManifest.xml , mais il semble que ce n'est pas un fichier texte.

Comment puis-je extraire le nom du paquet APK?

162
demandé sur Paul Stenne 2011-06-09 10:57:29

19 réponses

aapt dump badging <path-to-apk> | grep package:\ name
266
répondu hackbod 2014-08-19 12:02:39

Vous pouvez installer l'apk sur votre téléphone, puis

connect en utilisant adb, vous pouvez lancer adb shell et exécuter pm liste packages-F, qui affiche le nom du paquet pour chaque apk installé.

extrait de trouver le nom du paquet pour les applications Android à utiliser intention de lancer application du marché à partir du web

63
répondu Danail 2017-05-23 12:34:42

si vous ouvrez L'AndroidManifest.xml à L'aide de MS Notepad, rechercher l'expression package et vous trouverez ce qui suit:

package manifest $xxx.xxxxxxx.xxxxxxx |

où xxx.xxxxxxx.xxxxxxx est votre nom de paquet, juste écrit avec un espace après chaque caractère.

C'est utile quand vous n'avez pas les outils installés.

12
répondu Wojciech 2013-03-22 08:23:11

si vous êtes à la recherche de google play et que vous voulez connaître le nom de son paquet, alors vous pouvez consulter la barre d'url ou d'adresse. Vous obtiendrez le nom du paquet. Ici com.landshark.yaum est le nom du paquet

 https://play.google.com/store/apps/details?id=com.landshark.yaum&feature=search_result#?t=W251bGwsMSwyLDEsImNvbS5sYW5kc2hhcmsueWF1bSJd
11
répondu Shahzad Imam 2015-09-01 12:54:24

le script bash suivant affichera le nom du paquet et le nom de l'activité principale:

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"

exécuter comme suit:

apk_package.sh /path/to/my.apk
11
répondu Brad Parks 2018-09-11 14:02:39

D'après la réponse de @hackbod ... mais lié à windows.

aapt la commande est située sur Android\SDK\build-tools\version . Si vous avez besoin de plus d'informations sur ce qui est appt command (Android Asset Packaging Tool) lire ce https://stackoverflow.com/a/28234956/812915

la sous-commande dump de aapt est utilisée pour afficher les valeurs d'éléments individuels ou de parties d'un paquet:

aapt dump badging <path-to-apk>

si vous voulez voir seulement la ligne avec package: name info, utilisez findstr

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

Espère que ça aidera d'autres utilisateurs windows!

7
répondu equiman 2017-05-23 12:02:51

Une Réponse Programmatique

si vous avez besoin de faire cela programmatiquement, c'est un peu plus impliqué que juste obtenir la réponse dans votre cerveau. J'ai un script que j'utilise pour signer toutes nos applications, mais chaque utilisation d'une clé différente. Voici 2 façons d'obtenir juste le nom du paquet comme sortie de sorte que vous pouvez le mettre dans une variable ou faire tout ce dont vous avez besoin avec elle.

exemple de sortie: com.example.appname (et rien de plus)

exigences

aapt - Android Asset Outil de Conditionnement, une partie de la SDK Tools télécharger

Solution 1

utiliser awk spécifier ' comme séparateur de champ, Rechercher une ligne avec package: name= , et imprimer seulement le 2ème "champ" dans la ligne:

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

Une faiblesse de cette méthode est qu'elle repose sur aapt de sortie les champs d'information du paquet dans le même ordre:

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

nous n'avons aucun engagement de la part des développeurs pour maintenir ce format.

Solution 2

en utilisant awk spécifier " comme séparateur de champ, Rechercher une ligne avec package= , et imprimer seulement le 2ème "champ" dans la ligne:

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

Une faiblesse de cette méthode est qu'elle repose sur aapt de sortie package= uniquement dans la section Android Manifest: de la sortie. Nous n'avons aucun engagement de la part des développeurs pour maintenir ce format.

Solution 3

développez le fichier apk avec apktool d et lisez le AndroidManifest.XML.

ce serait la meilleure méthode, mais L'AndroidManifest.xml est un fichier binaire et toutes les réponses que je vois pour le convertir en texte ne fonctionnent pas. (En utilisant apktool d au lieu d'un simple unzip est censé le faire pour vous, mais il ne le fait pas.) s'il vous Plaît commentaire si vous avez une solution à ce problème

3
répondu Bruno Bronosky 2017-11-16 23:38:34

si vous voulez juste connaître le nom du paquet, exécuter ADB logcat, lancer l'activité que vous voulez , vous obtiendrez un indice sur le nom du paquet.

2
répondu sat 2011-06-09 07:01:35

une autre solution consiste à utiliser la liste aapt et à utiliser sed pour analyser cela:

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

2
répondu JohnnyLambada 2014-02-12 00:20:44

je pense que la meilleure et la plus simple façon d'extraire seulement le nom du paquet sous Linux est

aapt dump badging <APK_path> | grep package | sed -r "s/package: name='([a-z0-9.]*)'.*//"

explication:

  1. AAPT extraits de l'APK de l'information
  2. Grep "package" pour ne garder que la ligne sur le paquet l'information
  3. fait sed remplacer la ligne entière par le nom du colis en utilisant seulement le regex suivant: package: name='([a-z0-9.]*)'.* et en remplaçant par le premier (et seulement) groupe correspondant.
1
répondu m0skit0 2015-07-17 09:01:42

vous pouvez extraire AndroidManifest.xml à partir de L'APK, supprimez tous les octets nuls, sautez tout jusqu'après la chaîne de caractères 'manifest', puis vous êtes à un octet long suivi du nom du paquet (et ce qui vient après lui). Pour la tâche difficile j'utilise le grand Gema outil, de sorte que la commande ressemble à ceci:

7z e -so MyApp.apk AndroidManifest.xml | gema '\x00=' | gema -match 'manifest<U1><U>=@substring{0;@char-int{};}'

bien sûr, vous pouvez utiliser un autre outil pour faire le filtrage.

1
répondu Hartmut Schäfer 2017-01-22 14:38:17

il y a un moyen très simple si vous avez déjà votre APK sur votre Smartphone. Il suffit d'utiliser une de ces applications:

Nom Du Package Applications De Lecteur De

1
répondu Hexodus 2017-03-16 16:34:03

une solution simple serait Open Android Studio -> Build -> Analyze Apk... parcourir et sélectionner L'APK maintenant, vous pouvez trouver le nom du paquet et à peu près tout ce que vous pouvez lire.

1
répondu Sai Kiran 2018-07-04 06:47:11

, vous pouvez installer Package_Name_Viewer.apk sur votre émulateur et ensuite vous pouvez voir le nom du paquet de toutes les applications installées sur votre émulateur.

0
répondu esideli 2015-01-27 21:19:50

j'ai aussi essayé la dé-compilation, ça marche mais récemment j'ai trouvé le moyen le plus simple:

  1. Télécharger et installer Appium de Appium site

  2. ouvrir Appium->mise Android, choisissez le fichier apk cible. Et vous obtenez tout ce que vous voulez, les informations sur le paquet, l'activité.

0
répondu wenwen 2015-07-16 08:02:08

pour utiliser ceci dans les scripts par lot, il est pratique que le script renvoie juste le nom du paquet (par exemple pour désinstaller une application lorsque vous avez L'APK).

voici le script que j'utilise:

# 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

disponible sur gist

pour que tu puisses écrire:

bad désinstaller `./getPackageName.sh fichier.apk '

0
répondu Ben Clayton 2015-11-26 15:37:42

pour fenêtres suivant travaillé pour moi:

:: // 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

Note

veuillez modifier les chemins de adb, aapt, APKPath selon les chemins de adb, aapt, et l'emplacement apk dans votre système.

"151980920 de Travail":

  • ici, j'ai ajouté l'apk dans un dossier sur le bureau" \Desktop\APK\Instant_Instal\".
  • la commande %adb% install %apk% installe l'application si le périphérique est connecté.
  • ce %aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt récupère le nom du paquet et quelques autres détails comme la version, etc. de l'apk et des magasins dans une intérimaire.fichier txt dans le même emplacement que celui de l'apk.
  • FOR /F" tokens=2 delims=' " % % s IN (temp.txt) DO SET pkgName=%%s extracts the package name and assigns to pkgName` variable
  • Enfin %adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1 lance l'application.

en essence le code ci-dessus installe l'apk de l'emplacement donné dans le bureau "Desktop\APK\Instant_Instal\" à l'appareil et lance l'application.

0
répondu Kailas 2018-05-14 06:54:02

comme je n'ai pas pu trouver le nom du paquet dans le .fichier apk Avec éditeur (comme suggéré ci-dessus), j'ai vérifié les fonctions de L'application "ES Datei Explorer" / "ES File Explorer" (version libre) que j'avais déjà installée. Dans cet outil, le nom du paquet est affiché correctement.

Comme je pense qu'un bon explorateur de fichiers ne devrait pas manquer sur un téléphone, je suggère d'utiliser cet outil (si vous avez déjà installé l'apk sur un mobile et que vous devez connaître le nom du paquet).

0
répondu FredyWenger 2018-08-08 17:15:07

aapt liste -un "path_to_apk"

je vous recommande de le sauvegarder dans un .txt, parce que ça peut être très long. So:

aapt liste -un "path_to_apk" > fichier.txt

alors voir le dossier.txt dans votre répertoire courant.

-1
répondu Delano 2013-02-21 17:07:56