android - شرح - لماذا يتم رفض الوصول إلى مجلد البيانات عند استخدام adb؟




download adb for windows-adb shell (9)

إذا كنت ترغب فقط في رؤية DB & Tables ، فإن الطريقة الأسهل هي استخدام Stetho . أداة جميلة جدا لكل مطور أندرويد الذي يستخدم SQLite buit بواسطة Facobook developed .

Steps to use the tool

  1. أضف أدناه dependeccy في ملف gradle الخاص بالتطبيق (Module: app)

"compile" com.facebook.stetho: stetho: 1.4.2 "

  1. أضف أسطر التعليمات البرمجية أدناه في طريقة نشاط onCreate () الخاصة بك
@Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 Stetho.initializeWithDefaults(this);
 setContentView(R.layout.activity_main);
 }

الآن ، أنشئ تطبيقك وعندما يكون التطبيق قيد التشغيل ، يمكنك تصفح قاعدة بيانات التطبيق من خلال فتح Chrome في عنوان url:

chrome://inspect/#devices

لقطات الشاشة لنفسها

ChromeInspact

DB الخاص بك

نأمل أن يساعد هذا للجميع! :)

لقد اتصلت بجهاز البث المباشر باستخدام adb والأوامر التالية:

C:\>adb -s HT829GZ52000 shell
$ ls
ls
sqlite_stmt_journals
cache
sdcard
etc
system
sys
sbin
proc
logo.rle
init.trout.rc
init.rc
init.goldfish.rc
init
default.prop
data
root
dev
$ cd data
cd data
$ ls
ls
opendir failed, Permission denied

لقد فوجئت برؤية أني رفضت الوصول. كيف أكون لا أستطيع التصفح حول الدلائل باستخدام commandline مثل هذا؟

كيف يمكنني الحصول على وصول الجذر على هاتفي؟


إذا كنت تعرف حزمة التطبيق ، يمكنك أن cd مباشرة على هذا المجلد.

على سبيل المثال cd data/data/com.yourapp

سيؤدي هذا إلى إسقاطك في دليل read/writable بحيث يمكنك تغيير الملفات حسب الحاجة. نظرًا لأن المجلد هو نفسه في emulator ، فيمكنك استخدامه للحصول على مسار المجلد.


عندما تكون في دليل shell الخاص بالجهاز. فقط ركض

su - root

ثم يجب أن تتمكن من الوصول إلى البيانات / المجلد.


فيما يلي الخطوتين للحصول على الوصول إلى الجذر:

  1. يجب أن تكون أجهزة Android الخاصة بك متجذرة.
  2. في ADB shell ، اكتب su وسيقوم جهاز Android بإعلام y / n؟ اخترت السماح.

قذيفة adb دولار

$ cd / data

$ ls

فشل opendir ، رفض الإذن

يجب علبك ان تفعل ذلك:

$ adb shell

$ cd /data

[email protected]:/data $ run-as com.your.package 

[email protected]:/data/data/com.your.package $ ls

حسنا!


كان لدي الكثير من المتاعب مع هذا أيضا. ما زلت لا أفهم تماما إذن والجذر ، ولكن هذا العمل بالنسبة لي (واحدة من الإجابات السابقة جزئيا) لنسخ ملف قاعدة البيانات من / البيانات / البيانات / [اسم الحزمة] / قواعد البيانات / my_db.db. تشغيل الجذر شل ، أو سو في شل لسبب ما لم يعمل ، ولا نسخ ملف ديسيبل (أنا يمكن التنقل إلى الدليل على الرغم من) ، ولا فعل sqlite3 .

لذلك ، هذا العمل! في موجه الأوامر DOS:

C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|[email protected]:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|s[email protected]:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
[email protected]:/data $ cd data
cd data
[email protected]:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
[email protected]:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
[email protected]:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
[email protected]:/data/data/de.vogella.android.locationapi.maps/databases $ cat bus
_timetable_lines.db > /sdcard/db_copy.db
 bus_timetable_lines.db > /sdcard/db_copy.db                                   <
[email protected]:/data/data/de.vogella.android.locationapi.maps/databases $exit   ^
exit
[email protected]:/ $ exit
exit

C:\Program Files\Android\android-sdk\platform-tools>

اذهب الآن إلى دليل SDCARD واحصل على ملفك db_copy.db. حتى ذلك كان مخفيًا ، ولكنني تمكنت من إرساله بالبريد الإلكتروني. مرة أخرى في Windows ، كنت قادراً على فتح ملف ديسيبل مع مستعرض قاعدة بيانات SQLite. :)


هناك شيئين يجب تذكرهما إذا كنت تريد تصفح كل شيء على جهازك.

  1. تحتاج إلى هاتف به إمكانية الوصول إلى الجذر لتصفح مجلد البيانات على هاتف Android. يعني ذلك إما أن لديك جهاز مطور ( ADP1 أو ION من Google I / O) أو أنك وجدت طريقة "لجذر" هاتفك بطريقة أخرى.
  2. أنت في حاجة إلى تشغيل ADB في وضع الجذر ، قم بذلك عن طريق تنفيذ: adb root

واجهت مشكلة مماثلة عند محاولة تشغيل جهاز Samsung Galaxy S. متجذر إصدار أمر من shell الكمبيوتر

> adb root

فشل مع رسالة "لا يمكن تشغيل كجذر في بناء الإنتاج". هنا طريقة بسيطة تسمح ليصبح الجذر.

بدلاً من السابق ، إصدار الأمرين التاليين واحد بعد الآخر

> adb shell
$ su

بعد أول أمر ، إذا تم تغيير الموجه من '>' إلى '$' كما هو موضح أعلاه ، فهذا يعني أنك قمت بإدخال بيئة shell adb. إذا تم تغيير الموجه لاحقًا إلى "#" بعد إصدار الأمر الثاني ، فهذا يعني أنك أصبحت الجذر الآن. الآن ، كجذر ، يمكنك القيام بأي شيء تريده باستخدام جهازك.

للتبديل مرة أخرى إلى قذيفة "آمنة" ، المسألة

# exit

سترى ظهور المطالبة '$' ، مما يعني أنك في قذيفة adb كمستخدم وليس كجذر.


قبل أن نبدأ ، هل لديك هاتف متجذر ؟ إذا لم يكن الأمر كذلك ، أقترح بشدة أن الوقت قد حان للقفز. 99٪ من البرامج التعليمية التي تساعدك على القيام بذلك تتطلب أن يكون لديك هاتف متجذر (أعرف b / c قضيت حوالي ساعة في البحث عن طريقة للقيام بذلك دون أن يكون لديك هاتف متجذر .. لم أستطع العثور على أي .. ) إذا كنت تفكر في ذلك ، يجب أن يكون جهاز iPhone الخاص بك متجذرًا للقيام بهذه المهمة نفسها. لذلك فمن المعقول تماما. المزيد عن التأصيل في نهاية الجواب.

من نوع سطر الأوامر الخاص بك:

adb shell

هذا ينقلك إلى خط comand shell الخاص بك (سترى شيئاً كهذا: [email protected]:/ $ الآن اكتب:

[email protected]:/ $run-as com.domain.yourapp

من المفترض أن ينقلك هذا مباشرةً إلى دليل البيانات الخاص بـ com.domain.yourapp :

[email protected]:/data/data/com.domain.yourapp $ 

إذا لم يحدث ذلك (على سبيل المثال ، إذا ظهرت لك رسالة خطأ) فربما لا يكون لديك هاتف مقوِّم ، أو أنك لم تستخدم امتيازات المستخدم الجذر. لاستخدام امتيازات المستخدم الجذر الخاص بك ، اكتب su على سطر الأوامر adb وشاهد ما يحدث ، إذا ظهرت لك رسالة خطأ ، فهذا يعني أن الهاتف ليس متجذرًا. إذا لم يكن كذلك ، جذره أولاً ثم تابع هذه التعليمات.

من هناك يمكنك كتابة ls وسترى جميع الدلائل بما في ذلك dbs:

[email protected]:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

بعد ذلك يمكنك استخدام sqlite3 لتصفح dbase .. إذا لم يكن لديك تثبيته (يمكنك العثور عليه عن طريق كتابة sqlite3 ، إذا لم تحصل على command not found عليك تثبيته. لتثبيت sqlite ، اتبع تعليمات here .

حول التأصيل: إذا لم تقم بتجذر هاتفك من قبل ، وكنت قلقًا بشأن شد هاتفك ، يمكنني أن أخبركم بثقة كاملة بأنه لا داعي للقلق. هناك أطنان من دروس تجذير الهاتف سريعة وسهلة لجميع النماذج الجديدة والقديمة إلى حد كبير هناك ، ويمكنك الجذر هاتفك حتى لو كان لديك ماك (أنا الجذور بلدي s3 مع بلدي ماك).





adb