لماذا يتم رفض الوصول إلى مجلد البيانات عند استخدام بنك التنمية الآسيوي؟

StackOverflow https://stackoverflow.com/questions/1043322

  •  20-08-2019
  •  | 
  •  

سؤال

لقد قمت بالاتصال بجهازي المباشر باستخدام 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

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

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

هل كانت مفيدة؟

المحلول

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

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

نصائح أخرى

وبدءا من مستوى API 8 (الروبوت 2.2)، لتطبيق تصحيح الأخطاء (واحد بناها الروبوت ستوديو في جميع الأوقات إلا إذا طلب إلى إنشاء إصدار)، يمكنك استخدام الأمر قذيفة run-as لتشغيل أمر أو قابل للتنفيذ باعتباره المستخدم / تطبيق معين أو مجرد تبديل إلى <م> UID من التطبيق الخاص بك حتى تتمكن من الوصول لها <م> بيانات الدليل.

وقائمة المحتويات دليل yourapp:

run-as com.yourapp ls -l /data/data/com.yourapp

التبديل إلى UID من com.yourapp وتشغيل جميع الأوامر مزيد من استخدام هذا رمز المستخدم (حتى استدعاء exit):

run-as com.yourapp
cd /data/data/com.yourapp
ls -l
exit

و
ملاحظة: 1 : لهناك المعروف القضية مع بعض الهواتف HTC الرغبة. بسبب وجود مالك غير قياسي / أذونات الدليل /data/data، فشل القيادة run-as لتشغيلها على تلك الهواتف.

ملاحظة: 2 : لوأشار في تصريحاتAvio: run-as لديه مشاكل أيضا مع هواتف سامسونج جالاكسي S تعمل سيانوجين مود في أي إصدار (7 حتي 10،1) لأن على هذه المنصة /data/data هو الارتباط الرمزي ل/datadata. طريقة واحدة لحل القضية هو استبدال الارتباط الرمزي مع الدليل الفعلي (للأسف هذا يتطلب عادة وصول الجذر).

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

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

adb shell

ينقلك هذا إلى سطر أوامر Android Shell (يجب أن ترى شيئًا مثل هذا: shell@android:/ $ اكتب الآن:

shell@android:/ $run-as com.domain.yourapp

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

shell@android:/data/data/com.domain.yourapp $ 

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

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

shell@android:/data/data/com.domain.yourapp $ ls

cache
databases
lib
shared_prefs   

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

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

قذيفة بنك التنمية الآسيوي $

$ قرص مضغوط / بيانات

$ ليرة سورية

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


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

$ adb shell

$ cd /data

shell@android:/data $ run-as com.your.package 

shell@android:/data/data/com.your.package $ ls

نعم!

وكان لي مشكلة مماثلة عند محاولة للعمل على الجذور سامسونج غالاكسي S. إصدار أمر من قذيفة الكمبيوتر

> adb root

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

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

> adb shell
$ su

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

ليعود مرة أخرى إلى 'آمنة' شل، مشكلة

# exit

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

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

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

C:\Program Files\Android\android-sdk\platform-tools>adb shell
1|shell@android:/ $ run-as de.vogella.android.locationapi.maps
run-as de.vogella.android.locationapi.maps
1|shell@android:/data/data/de.vogella.android.locationapi.maps $ cd /data
cd /data
shell@android:/data $ cd data
cd data
shell@android:/data/data $ cd de.vogella.android.locationapi.maps
cd de.vogella.android.locationapi.maps
shell@android:/data/data/de.vogella.android.locationapi.maps $ cd databases
cd databases
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $ ls
ls
bus_timetable_lines.db
bus_timetable_lines.db-journal
shell@android:/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                                   <
shell@android:/data/data/de.vogella.android.locationapi.maps/databases $exit   ^
exit
shell@android:/ $ exit
exit

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

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

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

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

والانتاج يبني لا يمكن أن يدخل / البيانات / التطبيق

drwxrwx--- system   cache             1970-01-01 08:00 cache
drwxrwxr-x root     system            1970-01-01 08:00 mnt 
drwxrwx--x system   system            1970-01-01 08:15 data

وقد تحتاج إلى تغيير صاحب الحق لتشغيلها.

ويمكن أن تكون المشكلة أننا في حاجة إلى إعطاء تحديدا وصول الجذر بنك التنمية الآسيوي في خيارات developnent في أحدث مضادة .. هنا هو ما فعلته.

<اقتباس فقرة>   

واي بي سي @ اي بي سي-L655: ~ $ سودو بنك التنمية الآسيوي قتل خادم
  اي بي سي @ اي بي سي-L655: ~ $ سودو بنك التنمية الآسيوي الجذر بدء الخادم   * الخفي لا تعمل. ابتداء من الآن على المنفذ 5037 *   * بدأ الخفي بنجاح * تم تعطيل الوصول الجذر إعداد النظام - تمكين في إعدادات -> خيارات التنمية

وبعد تغيير خيارات التنمية ...

abc@abc-L655:~$ sudo adb kill-server
abc@abc-L655:~$ sudo adb root start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
restarting adbd as root
abc@abc-L655:~$ adb shell
root@android:/ # ls /data/ .... good to go.. 

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

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

وهذا سوف تنخفض لك في الدليل الذي يتم read/writable حتى تتمكن من تغيير الملفات حسب الحاجة. منذ المجلد هو نفسه على emulator، يمكنك استخدام ذلك للحصول على مسار المجلد.

إذا كنت تريد فقط أن ترى الخاص بك قاعدة البيانات والجداول ثم الطريقة الأسهل هي الاستخدام Stetho.أداة رائعة جدًا لكل مطور Android يستخدمها SQLite شراء بواسطة Facobook developed.

Steps to use the tool

  1. أضف التبعية أدناه في ملف gradle للتطبيق الخاص بك (الوحدة النمطية:برنامج)

"تجميع"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

ChromeInspact

قاعدة البيانات الخاصة بك

Your DB

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

دون تأصيل الجهاز الذي يمكنك الوصول إليه بالملفات بما يلي لقطة الشاشة CMD:

  1. ابدأ تشغيل adb باستخدام cmd من مجلد أدوات النظام الأساسي وفقًا للمستخدم الخاص بك

    cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
    

    يمكن أن يكون في مجلد آخر يعتمد على المكان الذي قمت بتثبيته فيه.

  2. عرض أجهزة العمل.

    adb devices
    

    ليقول الرد نظام التشغيل الأمر

    List of devices attached
    0123456789ABCDEF     device
    
  3. اكتب الأمر

        adb -s 0123456789ABCDEF shell "su"
    

    سيتم فتحه في

        root@theDeviceName:/ #
    

4. الوصول إلى الملفات، قم بإدراج كافة الملفات

ls

وهكذا قم بتغيير الدليل إلى أي مكان آخر مثل مجلد البيانات

cd data/data

وعندما كنت في الدليل قذيفة للجهاز. فقط تشغيل

su - root

وبعد ذلك يجب أن تكون قادرا على الوصول إلى البيانات / المجلد.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top