J'ai besoin d'obtenir le nom du package d'un APK Android. J'ai essayé de décompresser l'APK et de lire le contenu deAndroidManifest.xml
, mais il semble que ce ne soit pas un fichier texte.
Comment puis-je extraire le nom du package de l'APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, appuyez sur Entrée, puis recherchez simplement la sortie pour le paramètre souhaité. N'oubliez pas que celaaapt
doit être sur votre cheminaapt
se trouve sousAndroid\SDK\build-tools\version
. sur la commande windows peut êtreaapt dump badging <path-to-apk> | findstr -i "package: name"
ouaapt dump badging <path-to-apk>
Vous pouvez installer l'apk sur votre téléphone, puis
Tiré du nom du package Rechercher pour les applications Android afin d'utiliser Intent pour lancer l'application Market à partir du Web
la source
su
commande.pm list packages -f | grep term-to-search-for
Basé sur la réponse @hackbod ... mais lié aux fenêtres.
aapt
se trouve surAndroid\SDK\build-tools\version
. Si vous avez besoin de plus d'informations sur ce qu'estappt command
(Outil de création de package d'actifs Android), lisez ce https://stackoverflow.com/a/28234956/812915La
dump
sous-commande deaapt
est utilisée pour afficher les valeurs des éléments individuels ou des parties d'un package:aapt dump badging <path-to-apk>
Si vous souhaitez voir uniquement la ligne contenant les
package: name
informations, utilisezfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
J'espère que cela aidera les autres utilisateurs de Windows!
la source
Si vous regardez Google Play et que vous souhaitez connaître le nom de son package, vous pouvez consulter l'URL ou la barre d'adresse. Vous obtiendrez le nom du package. Voici
com.landshark.yaum
le nom du packagela source
Si vous ouvrez le fichier AndroidManifest.xml à l'aide du bloc-notes MS, recherchez l'expression
package
et vous trouverez ce qui suit:où xxx.xxxxxxx.xxxxxxx est le nom de votre package, juste écrit avec un espace après chaque caractère.
C'est un moyen utile lorsque vous n'avez aucun outil spécifique installé.
la source
Le script bash suivant affichera le nom du package et le nom de l'activité principale:
apk_package.sh
lancez-le comme ceci:
la source
Une réponse programmatique
Si vous devez le faire par programme, c'est un peu plus compliqué que de simplement obtenir la réponse dans votre cerveau. J'ai un script que j'utilise pour signer toutes nos applications, mais chacune utilise une clé différente. Voici 2 façons d'obtenir uniquement le nom du package en sortie afin que vous puissiez le mettre dans une variable ou faire tout ce dont vous avez besoin avec.
Exemple de sortie:
com.example.appname
(et rien de plus)Exigences
aapt
- Android Asset Packaging Tool, partie de la téléchargement des outils SDKSolution 1
En utilisant
awk
spécifier'
comme séparateur de champ, recherchez une ligne avecpackage: name=
et imprimez uniquement le 2ème "champ" de la ligne:Une faiblesse de cette méthode est qu'elle s'appuie sur aapt pour sortir les champs d'informations du package dans le même ordre:
Nous n'avons aucun engagement des développeurs pour maintenir ce format.
Solution 2
En utilisant
awk
spécifier"
comme séparateur de champ, recherchez une ligne avecpackage=
et imprimez uniquement le 2ème "champ" de la ligne:Une faiblesse de cette méthode est qu'elle repose sur aapt pour sortir
package=
uniquement dans laAndroid Manifest:
section de la sortie. Nous n'avons aucun engagement des développeurs pour maintenir ce format.Solution 3
Développez le fichier
apktool d
apk avec et lisez le fichier AndroidManifest.xml.Ce serait la meilleure méthode, mais AndroidManifest.xml est un fichier binaire et toutes les réponses SO que je vois pour le convertir en texte ne fonctionnent pas. (Utiliser
apktool d
au lieu d'un simpleunzip
est censé faire cela pour vous, mais ce n'est pas le cas.) Veuillez commenter si vous avez une solution à ce problèmela source
Une solution simple serait Open Android Studio -> Build -> Analyze Apk ... parcourez et sélectionnez l'APK maintenant vous pouvez trouver le nom du package et à peu près vous pouvez lire.
la source
Si vous voulez simplement connaître le nom du package, exécuter adb logcat, lancer l'activité souhaitée, vous obtiendrez un indice sur le nom du package.
la source
Une autre solution consiste à utiliser aapt list et à utiliser sed pour analyser cela:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
la source
A:package="com.example.appname"
dans laAndroid Manifest:
section si vous le faitesaapt list -a
Il existe un moyen très simple si vous avez déjà votre fichier APK sur votre smartphone. Utilisez simplement l'une de ces applications:
Applications du visualiseur de nom de package
la source
Une méthode très simple consiste à utiliser apkanalyzer.
la source
Je pense que la façon la meilleure et la plus simple d'extraire uniquement le nom du package sous Linux est
Explication:
package: name='([a-z0-9.]*)'.*
et remplace par le premier (et le seul) groupe correspondant.la source
Vous pouvez extraire AndroidManifest.xml de l'APK, supprimer tous les octets NULL, ignorer tout jusqu'à la chaîne `` manifest '', puis vous êtes à un octet de longueur suivi du nom du package (et de ce qui vient après). Pour la tâche difficile, j'utilise le grand outil GEMA , donc la commande ressemble à ceci:
Bien sûr, vous pouvez utiliser n'importe quel autre outil pour effectuer le filtrage.
la source
Si vous n'avez pas installé le SDK Android, comme dans certains scénarios de test, vous pouvez obtenir le nom du package en utilisant la méthode bash suivante:
Testé sur un mac. 'strings' et 'unzip' sont standard sur la plupart des linux, donc devraient également fonctionner sur linux.
la source
vous pouvez installer Package_Name_Viewer.apk sur votre émulateur et ensuite vous pouvez voir le nom du package de toutes les applications installées sur votre émulateur.
la source
J'ai aussi essayé la décompilation, ça marche mais récemment j'ai trouvé le moyen le plus simple:
Téléchargez et installez Appium à partir du site Web Appium
Ouvrez Appium-> Paramètres Android, choisissez le fichier apk cible. Et puis vous obtenez tout ce que vous voulez, les informations sur le package, les informations sur l'activité.
la source
Pour l'utiliser dans les scripts par lots, il est pratique que le script renvoie uniquement le nom du package (par exemple, pour désinstaller une application lorsque vous avez l'APK).
Voici le script que j'utilise:
disponible sur l'essentiel
Vous pouvez donc écrire:
adb désinstaller `./getPackageName.sh file.apk`
la source
Pour Windows, les éléments suivants ont fonctionné pour moi:
Remarque
Veuillez modifier les chemins d’adb, aapt, APKPath en fonction des chemins d’adb, aapt et de l’emplacement apk de votre système.
Travail:
%adb% install %apk%
installe l'application si le périphérique est connecté.%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 stocke dans un fichier temp.txt au même emplacement que celui de l'apk.extracts the package name and assigns to
pkgName` variable%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
Lance enfin l'application.En substance, le code ci-dessus installe l'apk à partir d'un emplacement donné dans le bureau "Desktop \ APK \ Instant_Instal \" sur l'appareil et lance l'application.
la source
Comme je n'ai pas pu trouver le nom du package dans le fichier .apk avec l'éditeur (comme suggéré ci-dessus), j'ai vérifié les fonctions de l'application "ES Datei Explorer" / "ES File Explorer" (version gratuite) que j'ai avait déjà installé. Dans cet outil, le nom du package s'affiche 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 devez connaître le nom du package).
la source
Comme il est mentionné dans la documentation Android qu'AAPT est obsolète , obtenir le nom du package à l'aide de la commande AAPT2 sous Linux est le suivant:
./aapt2 dump packagename <path_to_apk>
Comme j'utilise une ancienne version de Gradle build, j'ai dû télécharger une version plus récente d'AAPT2 comme mentionné ici:
Téléchargez AAPT2 depuis Google Maven
En utilisant les outils de build de mon sdk - 25.0.3, 26.0.1 et 27.0.3, l'exécution de la commande aapt2 affiche une erreur: Impossible d'ouvrir 'packagename': Aucun fichier ou répertoire de ce type. C'est pourquoi j'ai opté pour les nouvelles versions d'AAPT2.
J'ai utilisé 3.3.0-5013011 pour linux.
la source
Vous pouvez utiliser
Analyze APK...
dans le menu Construire dans Android Studio, il affichera le nom du package en haut de la nouvelle fenêtre.la source
Je vous recommande de l'enregistrer dans un .txt, car il peut être très long. Alors:
Ensuite, voyez le fichier.txt dans votre répertoire actuel.
la source