Próbuję wyodrębnić plik APK zainstalowanej aplikacji na Androida BEZ uprawnień administratora.
Myślałem, że to niemożliwe, ponieważ wszystkie pliki APK dla aplikacji niesystemowych znajdują się w katalogu / data / app, a dostęp do tego folderu wymaga uprawnień administratora. Potem odkryłem, że istnieje wiele aplikacji w sklepie Google Play, które wydają się mieć dostęp do plików APK nawet na urządzeniach niezrootowanych.
Czy ktoś może mi powiedzieć, jak to możliwe? Czy nie ma aplikacji do tworzenia kopii zapasowych plików APK bez roota?
Odpowiedzi:
Dostęp / dane / aplikacja jest możliwa bez uprawnień administratora; uprawnienia do tego katalogu to rwxrwx - x. Wykonywanie uprawnień do katalogu oznacza, że możesz uzyskać do niego dostęp, jednak brak uprawnień do odczytu oznacza, że nie możesz uzyskać listy jego zawartości - więc aby uzyskać do niego dostęp, musisz znać nazwę pliku, do którego będziesz uzyskiwać dostęp. Menedżer pakietów Androida poda nazwę zapisanej aplikacji dla danego pakietu.
Aby to zrobić z wiersza polecenia, użyj,
adb shell pm list packages
aby uzyskać listę zainstalowanych pakietów i znaleźć żądany pakiet.Dzięki nazwie pakietu możemy uzyskać rzeczywistą nazwę pliku i lokalizację pakietu APK
adb shell pm path your-package-name
.I znając pełny katalog, możemy w końcu wyciągnąć adb za pomocą
adb pull full/directory/of/the.apk
Podziękowania dla @tarn za wskazanie, że pod Lollipop będzie ścieżka apk
/data/app/your-package-name-1/base.apk
źródło
adb shell pm list packages
aby uzyskać listę zainstalowanych pakietów, wybierz żądany pakiet, dołącz-1.apk
do niego i wyciągnij go/data/app
. Przykład: jeśli nazwa pakietu toorg.mozilla.firefox
, użyjadb pull /data/app/org.mozilla.firefox-1.apk
.adb: error: remote object '/data/app/com.Slack-1/base.apk' does not exist
Android dołącza numer kolejny do nazwy pakietu, aby utworzyć ostateczną nazwę pliku APK (możliwe, że zmienia się to w zależności od wersji systemu operacyjnego Android). Poniższa sekwencja poleceń działa na nierootowanym urządzeniu :
Uzyskaj pełną nazwę ścieżki pliku APK dla żądanego pakietu.
Daje to wyjście jako:
package:/data/app/com.example.someapp-2.apk
.Przeciągnij plik APK z urządzenia z Androidem do okna programowania.
Lokalizacja APK po udanym ściągnięciu będzie na ../sdk/platform-tools/base.apk na twoim komputerze / laptopie.
źródło
Nie potrzebujesz uprawnień ROOT, aby uzyskać listę zainstalowanych aplikacji.
Możesz to zrobić za pomocą Android PackageManager.
Poniżej znajduje się mały fragment kodu.
źródło
źródło
Gdy masz zainstalowane środowisko Eclipse dla Androida:
źródło
Na Nougat (7.0) uruchom wersję Androida,
adb shell pm list packages
aby wyświetlić listę pakietów zainstalowanych na urządzeniu. Następnie biegnij,adb shell pm path your-package-name
aby pokazać ścieżkę do aplikacji. Po użyciu adb skopiuj pakiet do Pobranychadb shell cp /data/app/com.test-1/base.apk /storage/emulated/0/Download
. Następnie pobierz apk z Pobranych na swój komputer, uruchamiającadb pull /storage/emulated/0/Download/base.apk
.źródło
mam
does not exist error
Oto jak sprawiam, że to działa:
źródło
Lista PackageManager.getInstalledApplications () daje listę zainstalowanych aplikacji, a ApplicationInfo.sourceDir jest ścieżką do pliku .apk.
źródło
Znalazłem sposób na uzyskanie nazwy pakietu APK na urządzeniu innym niż root. nie jest tak elegancki, ale działa przez cały czas.
Krok 1 : na urządzeniu otwórz docelowy pakiet APK
Krok 2 : W oknie cmd na komputerze wpisz następujące polecenia:
ponieważ dane wyjściowe tego polecenia są liczne, zalecane jest przekierowanie do pliku.
Krok 3 : Otwórz ten plik dump.txt w dowolnym edytorze.
dla urządzenia przed Androidem 4.4:
początek pliku wyglądałby tak:
nazwa pakietu znajduje się w 3. linii, com.tencent.mm w tym przykładzie.
dla Androida 4.4 i nowszych:
wyjście dumpsys zmieniło się nieco. spróbuj wyszukać „Stos nr 1”, nazwa pakietu byłaby bardzo blisko pod nim.
Ponadto wyszukaj „baseDir”, znajdziesz pełną ścieżkę do pliku apk!
źródło
Otwórz ES explorer -> naciśnij przycisk Menu w lewym górnym rogu (trzy poziome paski) -> w sekcji Biblioteki wybierz Aplikacje.
W ten sposób otrzymujesz listę wszystkich aplikacji użytkownika. Znajdź swoją aplikację i wybierz ją, naciskając ją długo. Następnie naciśnij „Więcej” w prawym dolnym rogu i wybierz „Wyślij”. Następnie możesz użyć różnych opcji, np. Możesz wybrać „ES Save To”, aby zapisać plik .apk w katalogu domowym lub w innym miejscu.
źródło
Możesz też pobrać „Przesyłanie plików Bluetooth” z Google Play i ustawić folder domowy na
/system/
. Wtedy możesz nawet przejść do/
.źródło