Ich muss den Paketnamen eines Android APK erhalten. Ich habe versucht, die APK zu entpacken und den Inhalt von zu lesen AndroidManifest.xml
, aber es scheint keine Textdatei zu sein.
Wie kann ich den Paketnamen der APK extrahieren?
aapt dump badging <path-to-apk> | grep package:\ name
|
Eingabetaste drücken und dann einfach die Ausgabe nach Ihrem gewünschten Parameter durchsuchen. Denken Sie daran, dassaapt
das auf Ihrem Weg sein mussaapt
Befehl befindet sich unterAndroid\SDK\build-tools\version
. unter Windows Befehl kannaapt dump badging <path-to-apk> | findstr -i "package: name"
oderaapt dump badging <path-to-apk>
Sie können die apk dann auf Ihrem Telefon installieren
Dies stammt aus dem Paketnamen für Android-Apps suchen, um mit Intent die Market-App über das Web zu starten
quelle
su
zuerst den Befehl.pm list packages -f | grep term-to-search-for
Basierend auf @hackbod Antwort ... aber im Zusammenhang mit Windows.
aapt
Befehl befindet sich aufAndroid\SDK\build-tools\version
. Wenn Sie weitere Informationen zuappt command
(Android Asset Packaging Tool) benötigen, lesen Sie diese https://stackoverflow.com/a/28234956/812915Mit dem
dump
Unterbefehl vonaapt
werden die Werte einzelner Elemente oder Teile eines Pakets angezeigt:aapt dump badging <path-to-apk>
Wenn Sie nur die Zeile mit
package: name
Informationen sehen möchten , verwenden Siefindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Hoffe es hilft anderen Windows-Benutzern!
quelle
Wenn Sie sich Google Play ansehen und den Paketnamen wissen möchten, können Sie sich die URL oder die Adressleiste ansehen. Sie erhalten den Paketnamen. Hier
com.landshark.yaum
ist der Paketnamequelle
Wenn Sie die Datei AndroidManifest.xml mit MS Notepad öffnen, suchen Sie nach Phrasen
package
und Sie werden Folgendes finden:Dabei ist xxx.xxxxxxx.xxxxxx Ihr Paketname, der nur mit einem Leerzeichen nach jedem Zeichen geschrieben wird.
Dies ist nützlich, wenn Sie keine bestimmten Tools installiert haben.
quelle
Das folgende Bash-Skript zeigt den Paketnamen und den Namen der Hauptaktivität an:
apk_package.sh
Führen Sie es so aus:
quelle
Eine programmatische Antwort
Wenn Sie dies programmgesteuert tun müssen, ist es etwas komplizierter, als nur die Antwort in Ihr Gehirn zu bekommen. Ich habe ein Skript, mit dem ich alle unsere Apps signiere, aber jede verwendet einen anderen Schlüssel. Hier sind zwei Möglichkeiten, um nur den Paketnamen als Ausgabe abzurufen, damit Sie ihn in eine Variable einfügen oder alles tun können, was Sie benötigen.
Beispielausgabe:
com.example.appname
(und nichts weiter)Bedarf
aapt
- Android Asset Packaging Tool, Teil des Downloads der SDK-ToolsLösung 1
Mit
awk
angeben'
als Feldtrennzeichen , die Suche nach einer Linie mitpackage: name=
, und nur das zweite „Feld“ in der Zeile drucken:Eine Schwäche dieser Methode besteht darin, dass aapt die Paketinformationsfelder in derselben Reihenfolge ausgibt:
Wir haben keine Zusagen der Entwickler, dieses Format beizubehalten.
Lösung 2
Mit
awk
angeben"
als Feldtrennzeichen , die Suche nach einer Linie mitpackage=
, und nur das zweite „Feld“ in der Zeile drucken:Eine Schwäche dieser Methode besteht darin, dass sie
package=
nur imAndroid Manifest:
Abschnitt der Ausgabe für die Ausgabe geeignet ist . Wir haben keine Zusagen der Entwickler, dieses Format beizubehalten.Lösung 3
Erweitern Sie die apk-Datei mit
apktool d
und lesen Sie die Datei AndroidManifest.xml.Dies wäre die beste Methode, aber die Datei AndroidManifest.xml ist eine Binärdatei, und alle SO-Antworten, die ich für die Konvertierung in Text sehe, funktionieren nicht. (Die Verwendung
apktool d
anstelle einer einfachenunzip
soll dies für Sie tun, tut dies jedoch nicht.) Bitte kommentieren Sie, ob Sie eine Lösung für dieses Problem habenquelle
Eine einfache Lösung wäre Open Android Studio -> Erstellen -> Apk analysieren ... Durchsuchen und wählen Sie die APK aus. Jetzt können Sie den Paketnamen finden und so ziemlich alles lesen.
quelle
Wenn Sie nur den Paketnamen kennen möchten, adb logcat ausführen und die gewünschte Aktivität starten möchten, erhalten Sie einen Hinweis auf den Paketnamen.
quelle
Eine andere Lösung besteht darin, eine Aapt-Liste zu verwenden und sed zu verwenden, um Folgendes zu analysieren:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
quelle
A:package="com.example.appname"
in derAndroid Manifest:
Sektion verwenden, wenn Sie dies tunaapt list -a
Es gibt einen sehr einfachen Weg, wenn Sie Ihre APK bereits auf Ihrem Smartphone haben. Verwenden Sie einfach eine dieser APPs:
Paket Name Viewer Apps
quelle
Eine sehr einfache Methode ist die Verwendung von apkanalyzer.
quelle
Ich denke, der beste und einfachste Weg, nur den Paketnamen unter Linux zu extrahieren, ist
Erläuterung:
package: name='([a-z0-9.]*)'.*
und durch die erste (und einzige) übereinstimmende Gruppe ersetzen.quelle
Sie können AndroidManifest.xml aus der APK extrahieren, alle NULL-Bytes entfernen, alles bis nach der Zeichenfolge 'manifest' überspringen und dann ein langes Byte gefolgt vom Paketnamen (und dem, was danach kommt). Für die schwierige Aufgabe verwende ich das großartige GEMA- Tool, daher sieht der Befehl folgendermaßen aus:
Natürlich können Sie jedes andere Tool verwenden, um die Filterung durchzuführen.
quelle
Wenn Sie das Android SDK nicht installiert haben, wie in einigen Testszenarien, können Sie den Paketnamen mithilfe der folgenden Bash-Methode abrufen:
Auf einem Mac getestet. 'Strings' und 'Unzip' sind bei den meisten Linux-Geräten Standard und sollten daher auch unter Linux funktionieren.
quelle
Sie können Package_Name_Viewer.apk auf Ihrem Emulator installieren und als nächstes sehen Sie den Paketnamen aller installierten Apps auf Ihrem Emulator.
quelle
Ich habe auch die Dekompilierungssache ausprobiert, sie funktioniert, aber kürzlich habe ich den einfachsten Weg gefunden:
Laden Sie Appium von der Appium-Website herunter und installieren Sie es
Öffnen Sie Appium-> Android und wählen Sie die Ziel-APK-Datei. Und dann bekommen Sie alles, was Sie wollen, die Paketinformationen, Aktivitätsinformationen.
quelle
Um dies in Batch-Skripten zu verwenden, ist es praktisch, wenn das Skript nur den Paketnamen zurückgibt (z. B. zum Deinstallieren einer App, wenn Sie über die APK verfügen).
Hier ist das Skript, das ich benutze:
im Kern verfügbar
Sie könnten also schreiben:
adb deinstallieren `./getPackageName.sh file.apk`
quelle
Für Windows hat folgendes bei mir funktioniert:
Hinweis
Bitte bearbeiten Sie die Pfade von adb, aapt, APKPath entsprechend den Pfaden von adb, aapt und dem apk-Speicherort in Ihrem System.
Arbeiten:
%adb% install %apk%
installiert die Anwendung, wenn das Gerät angeschlossen ist.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
Paketname und einige andere Details wie die Version usw. der apk abgerufen und in einer temp.txt-Datei am selben Speicherort wie die der apk gespeichert.extracts the package name and assigns to
pkgName` Variable%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
startet die App.Im Wesentlichen installiert der obige Code die apk von einem bestimmten Speicherort im Desktop "Desktop \ APK \ Instant_Instal \" auf dem Gerät und startet die Anwendung.
quelle
Da ich den Paketnamen in der APK-Datei mit dem Editor nicht finden konnte (wie oben vorgeschlagen), habe ich die Funktionen in der App "ES Datei Explorer" / "ES File Explorer" (kostenlose Version) überprüft, die ich hatte bereits installiert. In diesem Tool wird der Paketname korrekt angezeigt.
Da ich denke, dass ein guter Datei-Explorer auf einem Telefon nicht fehlen sollte, empfehle ich, dieses Tool zu verwenden (wenn Sie die apk bereits auf einem Mobiltelefon installiert haben und den Paketnamen kennen müssen).
quelle
Da in der Android-Dokumentation erwähnt wird, dass AAPT veraltet ist, lautet der Abruf des Paketnamens mithilfe des Befehls AAPT2 unter Linux wie folgt:
./aapt2 dump packagename <path_to_apk>
Da ich eine ältere Version von Gradle Build verwende, musste ich eine neuere Version von AAPT2 herunterladen, wie hier erwähnt:
Laden Sie AAPT2 von Google Maven herunter
Wenn Sie die Build-Tools in meinem SDK - 25.0.3, 26.0.1 und 27.0.3 verwenden, wird beim Ausführen des Befehls aapt2 ein Fehler angezeigt: 'Paketname' kann nicht geöffnet werden: Keine solche Datei oder kein solches Verzeichnis. Deshalb habe ich mich für die neueren Versionen von AAPT2 entschieden.
Ich habe 3.3.0-5013011 für Linux verwendet.
quelle
Sie können
Analyze APK...
das Menü "Erstellen" in Android Studio verwenden. Der Paketname wird oben im neuen Fenster angezeigt.quelle
Ich empfehle Ihnen, es in einer .txt zu speichern, da es sehr lang sein kann. So:
Dann sehen Sie die Datei file.txt in Ihrem aktuellen Verzeichnis.
quelle