لماذا يتم رفض الوصول إلى مجلد البيانات عند استخدام بنك التنمية الآسيوي؟
سؤال
لقد قمت بالاتصال بجهازي المباشر باستخدام 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
لقد فوجئت برؤية رفض الوصول إلي.لماذا لا أستطيع تصفح الدلائل باستخدام سطر الأوامر مثل هذا؟
كيف يمكنني الحصول على الوصول إلى الجذر على هاتفي؟
المحلول
هناك شيئان يجب أن تتذكرهما إذا كنت تريد تصفح كل شيء على جهازك.
نصائح أخرى
وبدءا من مستوى 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. :)
فيما يلي الخطوتين للحصول على الوصول إلى الجذر:
- يجب أن تكون أجهزة Android الخاصة بك متجذرة.
- في 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
- أضف التبعية أدناه في ملف gradle للتطبيق الخاص بك (الوحدة النمطية:برنامج)
"تجميع"com.facebook.stetho:stetho:1.4.2"
- أضف أسطر التعليمات البرمجية أدناه في طريقة نشاطك onCreate()
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Stetho.initializeWithDefaults(this); setContentView(R.layout.activity_main); }
الآن، أنشئ تطبيقك وعندما يكون التطبيق قيد التشغيل، يمكنك تصفح قاعدة بيانات تطبيقك، عن طريق فتح chrome في عنوان url:
chrome://inspect/#devices
لقطات الشاشة نفسها هي كما يلي_
ChromeInspact
قاعدة البيانات الخاصة بك
نأمل أن يكون هذا يساعد الجميع!:)
دون تأصيل الجهاز الذي يمكنك الوصول إليه بالملفات بما يلي لقطة الشاشة CMD:
ابدأ تشغيل adb باستخدام cmd من مجلد أدوات النظام الأساسي وفقًا للمستخدم الخاص بك
cd C:\Users\YourUserName\AppData\Local\Android\sdk\platform-tools
يمكن أن يكون في مجلد آخر يعتمد على المكان الذي قمت بتثبيته فيه.
عرض أجهزة العمل.
adb devices
ليقول الرد نظام التشغيل الأمر
List of devices attached 0123456789ABCDEF device
اكتب الأمر
adb -s 0123456789ABCDEF shell "su"
سيتم فتحه في
root@theDeviceName:/ #
4. الوصول إلى الملفات، قم بإدراج كافة الملفات
ls
وهكذا قم بتغيير الدليل إلى أي مكان آخر مثل مجلد البيانات
cd data/data
وعندما كنت في الدليل قذيفة للجهاز. فقط تشغيل
su - root
وبعد ذلك يجب أن تكون قادرا على الوصول إلى البيانات / المجلد.