2012-01-26 32 views
24

Tôi đang thử nghiệm một ứng dụng Android.
Tôi muốn giữ một mắt trên nội dung củalà có thể xem dữ liệu ứng dụng từ adb shell giống như cách tôi thấy nó gắn thẻ SD?

/sdcard/Android/data/com.myapplication 

trong khi các ứng dụng đang chạy.
Nhưng ứng dụng của tôi không hoạt động chính xác nếu thẻ sd được gắn dưới dạng ổ đĩa trên PC (truy cập hình ảnh và video).
Vì vậy, tôi nghĩ rằng tôi có thể sử dụng vỏ adb. Nhưng nó không cho tôi truy cập vào cùng thư mục:

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

Nhìn trên Stack Overflow, tôi thấy cách này để xem dữ liệu ứng dụng thông qua adb shell:

run-as com.myapplication 

và làm như vậy tôi thấy mình trong thư mục

/data/data/com.myapplication 

Điều tôi đang nhầm lẫn là dữ liệu tôi thấy duyệt nội dung sdcard qua PC.

$ ls 
ls 
files 
databases 
shared_prefs 
lib 

Tôi thấy trong các tệp nằm trong thư mục Android/data/com.myapplication sdcard, nhưng không phải những gì tôi đang tìm kiếm. Bên cạnh đó, tất cả các thư mục khác đều khác nhau.
Có một mối tương quan giữa thư mục

/data/data/com.myapplication 

này truy cập thông qua adb và thư mục

/sdcard/Android/data/com.myapplication 

truy cập thông qua máy tính?
Có cách nào để xem trong adb shell các tệp có trong phần sau không?

+0

Sản phẩm thiết bị bắt nguồn từ? –

+0

@MisterSmith không có nó không bắt nguồn từ – Ele

+0

Sau đó, tôi nghĩ rằng chỉ có ứng dụng của bạn có thể truy cập vào thư mục đó. –

Trả lời

55

Như một quy tắc chung, các tệp nằm trên Internal storage và được ứng dụng của bạn lưu trữ (theo mặc định không WORLD_READABLE) sẽ chỉ khả dụng để ứng dụng của bạn đọc. Khi bạn cố gắng pull các tệp này bằng cách sử dụng adb pull, bạn sẽ nhận được quyền bị từ chối trên thiết bị KHÔNG bắt nguồn từ. Có một cách để giải quyết vấn đề này, tôi sẽ giải thích sau. Các tệp trong External storage mặt khác, khả dụng cho Người dùng và tất cả các ứng dụng khác để đọc. vì vậy nó phụ thuộc vào những gì bạn đang sau.

Bây giờ để đọc các file trong internal lưu trữ của bạn (/data/data/com.app.name), bạn không thể đọc được những tập tin trực tiếp, nhưng những gì bạn có thể làm là di chuyển chúng vào bộ nhớ external và sau đó đọc chúng từ đó như thế này.

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

Sau đó, bạn có thể kéo tệp từ bộ nhớ ngoài mà không có sự cố về quyền.

adb pull /sdcard/Downloads/myfile.txt 

Nếu bạn không chắc chắn về tệp nào hoặc bạn muốn duyệt tất cả các tệp, thì hãy sử dụng trình duyệt để duyệt tất cả các tệp ứng dụng của bạn.

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

nó hiển thị lỗi "Quyền bị từ chối". sh: không thể tạo /sdcard/Download/syncadapter.txt: Quyền bị từ chối – John

+1

Bạn có thể cần phải bắt nguồn từ thiết bị của mình: https://www.kingoapp.com/root-tutorials/how-to-root-android. htm http://android.stackexchange.com/questions/127825/adb-shell-su-not-found – testsingh

+0

trên lỗi Samsung S7 Edge: run-as: Không thể đặt khả năng: Thao tác không được phép –

-1

Bạn có thể truy cập thông qua tiện ích được đăng trước đó trong blog. Một tiện ích java của nó thông qua đó bạn có thể nhận được tất cả các thư mục trong thư mục dữ liệu của ứng dụng của bạn bằng cách chỉ cho tên gói của ứng dụng của bạn. Chỉ cần ứng dụng cần được gỡ lỗi.

Extract Android Files

thực sự hoạt động

+0

Xin chào, Rất tiếc, đã có một vấn đề với liên kết được cung cấp kèm theo câu trả lời. Tôi đã cập nhật liên kết mới và hãy xem. –

Các vấn đề liên quan