2012-01-26 10 views
24

Testuję aplikację na Androida.
Chciałbym, aby mieć oko na zawartośćczy można zobaczyć dane aplikacji z powłoki adb w ten sam sposób, w jaki widzę ją montując kartę SD?

/sdcard/Android/data/com.myapplication 

podczas gdy aplikacja jest uruchomiona.
Ale moja aplikacja nie działa poprawnie, jeśli karta SD jest zamontowana jako dysk na komputerze (dostęp do zdjęć i filmów).
Więc pomyślałem, że mógłbym użyć powłoki adb. Ale nie pozwól mi dostęp do tego samego folderu:

ls /sdcard/Android/data/com.myapplication 
/sdcard/Android/data/com.myapplication: Permission denied 

Patrząc na przepełnienie stosu, znalazłem ten sposób, aby zobaczyć dane aplikacji poprzez adb shell:

run-as com.myapplication 

i robi tak ja znajduję się w folder

/data/data/com.myapplication 

Co Jestem mylić o to, że dane widzę tutaj różnią się od danych widzę przeglądania zawartości sDCard za pośrednictwem komputera.

$ ls 
ls 
files 
databases 
shared_prefs 
lib 

widzę pod plików czegoś, co było także w folderze sdcard Android/data/com.myapplication, ale nie to, czego szukałem. Poza tym wszystkie inne foldery są różne.
Czy istnieje korelacja pomiędzy tym folderze

/data/data/com.myapplication 

dostępne poprzez adb i folder

/sdcard/Android/data/com.myapplication 

dostępne za pośrednictwem komputera?
Czy istnieje możliwość zobaczenia w powłoce adb plików obecnych w tej ostatniej?

+0

Czy urządzenie zakorzenione? –

+0

@MisterSmith nie jest zrootowany – Ele

+0

Wtedy myślę, że tylko twoja aplikacja może uzyskać dostęp do tego katalogu. –

Odpowiedz

55

Zgodnie z ogólną zasadą pliki przechowywane w aplikacji Internal storage (domyślnie nie WORLD_READABLE) będą dostępne tylko dla aplikacji do odczytu. Gdy spróbujesz użyć tych pull tych plików, używając adb pull otrzymasz odmowę dostępu na urządzeniu z ograniczonym dostępem. Jest sposób na obejście tego, co wyjaśnię później. Z drugiej strony pliki w wersji External storage są dostępne dla użytkownika i wszystkich innych aplikacji do odczytu. więc to zależy od tego, czego szukasz.

Teraz w celu odczytania plików w swojej internal magazynowania (/data/data/com.app.name) nie można bezpośrednio odczytać te pliki, ale co można zrobić, to przenieść je do przechowywania external a następnie odczytać je stamtąd tak.

adb shell "run-as com.yourappName cat /data/data/com.yourappName/files/myfile.txt > /sdcard/Downloads/myfile.txt" 

Następnie można wyciągnąć plik z pamięci zewnętrznej bez problemów uprawnień.

adb pull /sdcard/Downloads/myfile.txt 

Jeśli nie masz pewności, który plik lub chcesz przeglądać wszystkie pliki, użytkownik powinien przeglądać wszystkie pliki aplikacji.

adb shell 
run-as yourappPackageName 
cd /data/data/youappPackageName 
ls -all 
+2

pokazuje błąd "Odmowa uprawnień". sh: nie można utworzyć /sdcard/Download/syncadapter.txt: Odmowa uprawnień – John

+1

Być może trzeba mieć urządzenie zrootowane: https://www.kingoapp.com/root-tutorials/how-to-root-android. htm http://android.stackexchange.com/questions/127825/adb-shell-su-not-found – testsingh

+0

na Samsung S7 Edge podając błąd: run-as: Nie można ustawić możliwości: Operacja niedozwolona –

-1

Możesz uzyskać do niego dostęp za pomocą narzędzia, które zostało opublikowane wcześniej na blogu. Jest to narzędzie java, dzięki któremu można uzyskać wszystkie foldery w folderze danych aplikacji, podając tylko nazwę pakietu aplikacji. Tylko aplikacja musi być dostępna do debugowania.

Extract Android Files

naprawdę działa

+0

Witam, przepraszam problem z linkiem podanym w odpowiedzi. Zaktualizowałem nowy link i spójrz. –

Powiązane problemy