Muszę uzyskać nazwę pakietu aplikacji na Androida. Próbowałem rozpakować AndroidManifest.xml
plik APK i przeczytać zawartość , ale wygląda na to, że nie jest to plik tekstowy.
Jak mogę wyodrębnić nazwę pakietu APK?
aapt dump badging <path-to-apk> | grep package:\ name
|
, naciśnij klawisz enter, a następnie po prostu wyszukaj dane wyjściowe dla żądanego parametru. Pamiętaj tylko, że toaapt
musi być na twojej drodzeaapt
polecenie znajduje się podAndroid\SDK\build-tools\version
. komendą waapt dump badging <path-to-apk> | findstr -i "package: name"
aapt dump badging <path-to-apk>
Następnie możesz zainstalować apk na swoim telefonie
To pochodzi z Znajdź nazwę pakietu dla aplikacji na Androida, aby używać aplikacji Intent do uruchomienia aplikacji Market z sieci
źródło
su
najpierw użyj polecenia.pm list packages -f | grep term-to-search-for
Na podstawie odpowiedzi @hackbod ... ale dotyczy systemu Windows.
aapt
polecenie znajduje się naAndroid\SDK\build-tools\version
. Jeśli potrzebujesz więcej informacji na temat tego, co to jestappt command
(Android Asset Packaging Tool), przeczytaj to https://stackoverflow.com/a/28234956/812915Polecenie
dump
podrzędneaapt
służy do wyświetlania wartości poszczególnych elementów lub części pakietu:aapt dump badging <path-to-apk>
Jeśli chcesz zobaczyć tylko linię z
package: name
informacjami, użyjfindstr
aapt dump badging <path-to-apk> | findstr -n "package: name" | findstr "1:"
Mam nadzieję, że pomoże to innemu użytkownikowi systemu Windows!
źródło
Jeśli patrzysz na Google Play i chcesz poznać jego nazwę pakietu, możesz spojrzeć na adres URL lub pasek adresu. Otrzymasz nazwę pakietu. Oto
com.landshark.yaum
nazwa pakietuźródło
Jeśli otworzysz plik AndroidManifest.xml za pomocą MS Notepad, wyszukaj frazę,
package
a znajdziesz następujące informacje:gdzie xxx.xxxxxxx.xxxxxxx to nazwa pakietu, zapisana po prostu spacją po każdym znaku.
Jest to przydatny sposób, gdy nie masz zainstalowanych żadnych konkretnych narzędzi.
źródło
Poniższy skrypt bash wyświetli nazwę pakietu i główną nazwę działania:
apk_package.sh
uruchom tak:
źródło
Odpowiedź programowa
Jeśli musisz to zrobić programowo, jest to trochę bardziej zaangażowane niż tylko uzyskanie odpowiedzi w twoim mózgu. Mam skrypt, którego używam do podpisywania wszystkich naszych aplikacji, ale każdy używa innego klucza. Oto 2 sposoby uzyskania samej nazwy pakietu jako wyniku, dzięki czemu można umieścić ją w zmiennej lub zrobić z nią, co trzeba.
Przykładowe dane wyjściowe:
com.example.appname
(i nic więcej)Wymagania
aapt
- Android Asset Packaging Tool, część do pobrania SDK ToolsRozwiązanie 1
Używając
awk
określenia'
jako separatora pól, wyszukaj wiersz za pomocąpackage: name=
i wypisz tylko drugie „pole” w wierszu:Słabością tej metody jest to, że polega ona na aapt, aby wyświetlała pola informacji o pakiecie w tej samej kolejności:
Nie mamy żadnych zobowiązań ze strony programistów do utrzymania tego formatu.
Rozwiązanie 2
Używając
awk
określenia"
jako separatora pól, wyszukaj wiersz za pomocąpackage=
i wypisz tylko drugie „pole” w wierszu:Słabością tej metody jest to, że polega ona na aapt na wyjściu
package=
tylko wAndroid Manifest:
sekcji danych wyjściowych. Nie mamy żadnych zobowiązań ze strony programistów do utrzymania tego formatu.Rozwiązanie 3
Rozwiń plik apk za pomocą
apktool d
i przeczytaj plik AndroidManifest.xml.To byłaby najlepsza metoda, ale AndroidManifest.xml jest plikiem binarnym i wszystkie odpowiedzi SO, które widzę w celu konwersji na tekst, nie działają. (Używanie
apktool d
zamiast zwykłegounzip
powinno robić to za Ciebie, ale tak nie jest.) Proszę o komentarz, jeśli masz rozwiązanie tego problemuźródło
Prostym rozwiązaniem byłoby Open Android Studio -> Kompilacja -> Analiza Apk ... przeglądaj i wybierz APK, teraz możesz znaleźć nazwę pakietu i prawie wszystko, co możesz przeczytać.
źródło
Jeśli chcesz tylko poznać nazwę pakietu, uruchom adb logcat, uruchom żądane działanie, otrzymasz wskazówkę dotyczącą nazwy pakietu.
źródło
Innym rozwiązaniem jest użycie listy aapt i użycie sed do analizy:
aapt list -a $PATH_TO_YOUR_APK | sed -n "/^Package Group[^s]/s/.*name=//p"
źródło
A:package="com.example.appname"
wAndroid Manifest:
części, jeśli nieaapt list -a
Jest bardzo prosty sposób, jeśli masz już APK na swoim smartfonie. Wystarczy użyć jednej z tych aplikacji:
Aplikacje do przeglądania nazw pakietów
źródło
Bardzo prostą metodą jest użycie apkanalizatora.
źródło
Myślę, że najlepszym i najprostszym sposobem na wyodrębnienie tylko nazwy pakietu w systemie Linux jest
Wyjaśnienie:
package: name='([a-z0-9.]*)'.*
i zastąpi pierwszą (i jedyną) pasującą grupą.źródło
Możesz wyodrębnić plik AndroidManifest.xml z pliku APK, usunąć wszystkie bajty NULL, pomijać wszystko aż do napisu „manifest”, a następnie znajdujesz się w bajcie długości, po którym następuje nazwa pakietu (i co następuje po nim). Do trudnego zadania używam doskonałego narzędzia GEMA , więc polecenie wygląda następująco:
Oczywiście do filtrowania można użyć dowolnego innego narzędzia.
źródło
Jeśli nie masz zainstalowanego zestawu Android SDK, jak w niektórych scenariuszach testowych, możesz uzyskać nazwę pakietu, używając następującej metody bash:
Testowane na komputerze Mac. „strings” i „unzip” są standardem w większości Linuksów, więc powinny działać również na Linuksie.
źródło
możesz zainstalować Package_Name_Viewer.apk na emulatorze, a następnie możesz zobaczyć nazwę pakietu wszystkich zainstalowanych aplikacji na emulatorze.
źródło
Próbowałem też rzeczy do dekompilacji, działa, ale ostatnio znalazłem najłatwiejszy sposób:
Pobierz i zainstaluj Appium ze strony Appium
Otwórz Appium-> ustawienia Androida, wybierz docelowy plik apk. A potem dostajesz wszystko, czego chcesz, informacje o pakiecie, informacje o aktywności.
źródło
Aby użyć tego w skryptach wsadowych, przydatne jest, aby skrypt zwrócił tylko nazwę pakietu (np. Do odinstalowania aplikacji, gdy masz APK).
Oto skrypt, którego używam:
dostępne na gist
Abyś mógł napisać:
adb odinstaluj `./getPackageName.sh file.apk`
źródło
W przypadku systemu Windows działało dla mnie:
Uwaga
Edytuj ścieżki adb, aapt, APKPath zgodnie ze ścieżkami adb, aapt i lokalizacją apk w twoim systemie.
Pracujący:
%adb% install %apk%
instaluje aplikację, jeśli urządzenie jest podłączone.%aapt% dump badging %APKFullPath% | FIND "package: name=" > temp.txt
nazwa pakietu pobierające i kilka innych szczegółów, takich jak wersja itp z apk i zapisuje w pliku temp.txt w tym samym miejscu, co ich apk.extracts the package name and assigns to
pkgName`%adb% shell monkey -p %pkgName% -c android.intent.category.LAUNCHER 1
uruchamia aplikację.Zasadniczo powyższy kod instaluje apk z podanej lokalizacji na pulpicie „Desktop \ APK \ Instant_Instal \” na urządzenie i uruchamia aplikację.
źródło
Ponieważ nie byłem w stanie znaleźć nazwy pakietu w pliku apk za pomocą edytora (jak sugerowano powyżej), sprawdziłem funkcje w aplikacji „ES Datei Explorer” / „ES File Explorer” (wersja darmowa) już zainstalowałem. W tym narzędziu nazwa pakietu jest wyświetlana poprawnie.
Ponieważ uważam, że na telefonie nie powinno zabraknąć dobrego eksploratora plików, sugeruję skorzystanie z tego narzędzia (jeśli już zainstalowałeś apk na telefonie komórkowym i musisz znać nazwę pakietu).
źródło
Ponieważ w dokumentacji Androida wspomniano, że AAPT jest przestarzałe , uzyskanie nazwy pakietu za pomocą komendy AAPT2 w systemie Linux wygląda następująco:
./aapt2 dump packagename <path_to_apk>
Ponieważ używam starszej wersji kompilacji Gradle, musiałem pobrać nowszą wersję AAPT2, jak wspomniano tutaj:
Pobierz AAPT2 z Google Maven
Używając narzędzi kompilacji w moim pliku SDK - 25.0.3, 26.0.1 i 27.0.3, wykonanie polecenia aapt2 pokazuje błąd: Nie można otworzyć „nazwa-pakietu”: Brak takiego pliku lub katalogu. Właśnie dlatego wybrałem nowsze wersje AAPT2.
Użyłem 3.3.0-5013011 dla Linuksa.
źródło
Możesz użyć
Analyze APK...
z menu kompilacji w Android Studio, wyświetli nazwę pakietu w górnej części nowego okna.źródło
Polecam zapisać go w formacie .txt, ponieważ może być bardzo długi. Więc:
Następnie zobacz plik.txt w bieżącym katalogu.
źródło