توضيح الذاكره الداخليه app2sd, app2sd+ , data2sd

samirfox

:: مشرف ::, قسم الهارد ويير والصيانة,
إنضم
17 أبريل 2012
المشاركات
555
مستوى التفاعل
1,847
النقاط
93
السلام عليكم ورحمه الله


ارتأيت ان اكتب هذا الموضوع لتوضيح بعض المفاهيم المتعلقه بذاكره الاجهزه الداخليه
وارتباطها بتثبيت البرامج على الهاتف ونقلها للذاكره الخارجيه. والاساليب المتبعه لتوفير مساحه على الذاكره الداخليه.


اولا: مفاهيم عامه:


الذاكره الداخليه: هي الذاكره المدمجه بالهاتف من المصنع وهي محدوده بحجم معين مثلا 512 ميجا ولا يمكن زيادتها.


الذاكره الخارجيه: هي عباره عن بطاقه ذاكره توضع في الهاتف ويمكن استعمالها لعده اغراض من تخزين صور وبيانات للبرامج مثل الخرائط. ويمكن استعمال اي بطاقه تتوافق مع الجهاز ولا تتجاوز حده الاقصى للاستيعاب.


نظام الاندرويد:
نظام الاندرويد مصمم على نواه اللينوكس (كما يعلم الجميع)، يتم تنصيب النظام كاملا على الذاكره الداخليه للجهاز، (عندما تنصب روم معينه) فإنه يتم تخزينها على الذاكره الداخليه.


في الاندرويد هناك شيء اسمه Dalvik فما هو؟
هو برنامج مبني على لغه الجافا ويقوم بدور ما يسمى virtual machine بمعنى انه يقوم بترجمه وتشغيل وتحسين اداء البرامج التي تقوم بتنصيبها من صيغه APK على هاتفك المحمول، وينتج عنه ما يسمى Dalvik Cache وهي ملفات وبيانات مرتبطه بكل برنامج تقوم بتثبيته وتشغيله على هاتفك وهذه البيانات ايضا تخزن على الذاكره الداخليه.


في الاندرويد هناك قسم (بارتشن) partition اسمه /data
مهمته تخزين البيانات للبرامج واي شيء متعلق بنفس نظام التشغيل وهذا كذلك مخزن على الذاكره الداخليه.


في الاندرويد: عندما تنصب برنامج APK فانه يتم تخزينه على الذاكره الداخليه، انا اتكلم كبرنامج وعمليه تنصيب له، فقد يكون معه بيانات مرتبطه توضع على الذاكره الخارجيه لكن البرنامج نفسه موجود على الذاكره الداخليه


الان اعتقد ان الصوره بدأت تتوضح، وبدأت المشكله تظهر ملامحها واسبابها، وبهذا ندخل صلب الموضوع.


اكثر من يهمه الكلام التالي ربما اصحاب اجهزه ديزاير لان ذاكرته الداخليه قليله نسبيا وبعد تنصيب الروم مثلا وانزال بعض البرامج تصبح بوضع حرج من انخفاض مستوى الذاكره الداخليه للاسباب التي ذكرتها سابقا.


الحلول الموجوده: كما قلنا لا يمكن زياده الذاكره الداخليه، لهذا فان الحلول الموجوده هي كيفيه توفير مساحه اكبر على الذاكره الداخليه.


الحلول الموجوده تنقسم لجزئين من حيث المصدر:


1- حلول من شركه جوجل.
بدأت جوجل بدعم ما يسمى نقل البرامج على البطاقه الخارجيه (الذاكره) وبدأت هذه الميزه من الاصدار 2.2 وما بعده، لكن هذه الميزه مرتبطه بالبرنامج نفسه، هل هو قابل للنقل ام لا؟ وهذا يتم خلال مرحله البرمجه من قبل المبرمج نفسه، بأن يفعل هذه الخاصيه لبرنامجه لكي يتمكن الاندرويد من نقله عند طلب المستخدم ذلك (بعد تثبيت البرنامج) ولا يحتاج الى صلاحيات روت حيث انها ميزه من نفس النظام سلبيته انه لا ينقل كل البرامج بشكل عام كذلك لا ينقل كل بيانات البرنامج فهو نوعا ما ليس مجديا بشكل ملحوظ.


ويوجد ايضا للهواتف التي تعمل بنظام 2.2 فقط حل من خلال كتابه امر معين سواء باستعمال ال android-sdk او من خلال ال terminal المثبت على الهاتف، والامر هو


كود:
pm setInstallLocation 2


هذا الحل يحتاج صلاحيات روت وهو يحدد للهاتف ان تنزيل البرامج على الذاكره الخارجيه (يتم النقل اثناء التثبيت)، كما انه يوجد برامج في الماركيت تقوم بهذا العمل من خلال واجهه سهله الاستخدام لمن لا يستطيعون تنفيذ الامر بالطرق السابقه
ابحث عن SetInstallLocation في الماركيت، وسلبيته كذلك انه لا ينقل كل البرامج بشكل عام كذلك لا ينقل كل بيانات البرنامج فهو نوعا ما ليس مجديا بشكل ملحوظ


مشكله هذا الحل انه فقط مخصص للبرامج اي انه يحل جزء من المشكله التي ذكرناها سابقا، حيث يبقى موضوع الكاش والداتا بارتشن.


2- حلول من مطورين الانظمه المفتوحه (اشخاص مستقلين)
جميع الحلول تحتاج صلاحيات روت
بدأ المطورون بايجاد حلول لهذه المشاكل بالتدريج، فكان اول الحلول:


app2sd: وهو اختصار ل application to sdcard اي البرامج على الذاكره الخارجيه. كيف يعمل؟


كلنا نعرف الاقسام (بارتشن) في الكومبيوتر العادي.. C, D وهكذا.
فكره هذا الحل انه يعتمد على تقسيم بطاقه الذاكره لقسمين، احدهما يبقى بالوضع العادي fat32 ، والاخر يتم تحويله لنظام ملفات اسمه ext سواء كان ext3 او ext4
وهو نظام الملفات المعتمد من لينوكس.


بعد ذلك يتم تغير اعدادات معينه بالنظام (ذات مستوى منخفض) يعني ليست من الاعدادات التي تشاهدها في القوائم، مهمه هذا التعديل ان يخبر نظام الاندرويد ان البطاقه الخارجيه لديها بارتشن من نوع ext وانك يا اندرويد ستستعمله لتخزين البرامج المثبته.


هذا الحل جيد وينقل البرنامج مع اغلب بياناته وهو مجدي نوعا ما... لكن ماذا عن ال Dalvik Cache? يبقى هنا سؤال جديد...


من هنا جاء الحل الثاني وهو تطوير للحل الاول واطلق عليه


+app2sd اي المحسن ان صح التعبير، وما يميز هذا الحل انه يقوم بالعمل السابق من استعمال البارتشن ونقل البرامج .. كذلك فهو ينقل ال Dalvik Cache الى البطاقه الخارجيه على البارتشن المذكور سابقا.


بهذا يكون تم حل مشكلتين وزادت المساحه المتوفره على الذاكره الداخليه


يبقى موضوع ال /data الذي ذكرناه، وهو بارتشن الداتا على الاندرويد والذي يستعمله النظام لنفسه وللبرامج كذلك.


ومن هنا جاء الحل الثالث وهو ما يسمى


data2ext او data2sd:
ووظيفته اتوقع واضحه ومفهومه وهو نقل البارتشن /data من الذاكره الداخليه الى الخارجيه، يحتاج هذا الحل لبطاقه ذاكره سريعه من الفئه 6 فما فوق حتى تحصل على نتائج ممتازه ان شاء الله.


وبهذا فان استعمال app2sd+ و data2sd يحل اغلب المشاكل المتعلقه بالذاكره الداخليه من خلال نقل ما سبق للبارتشن الذي يتم انشاؤه على الذاكره الخارجيه


هناك بعض الرومات تأتي مدمج معها الحلول السابقه (كلها او بعضها) كما ويمكن تثبيت الحلول السابقه بشكل منفرد بعد تثبيت الروم اذا لم تكون موجوده بها ايضا


لا اعتقد ان المجال يتسع هنا لشرح طريقه تثبيتها بشكل مفصل لان الفكره هنا هي توضيح الوضع والمفاهيم والمشاكل والحلول.


منقول للإفادة
 

sempal

عضو أساسي
إنضم
28 يونيو 2012
المشاركات
486
مستوى التفاعل
277
النقاط
63
بارك الله فيك لوكان الشرح بصورة لكانت احسن لان معظمنا يشتكي من هذا المشكل
 

Redha

إداري سابق
إنضم
16 مايو 2012
المشاركات
5,582
مستوى التفاعل
20,346
النقاط
0
الإقامة
الجزائر
بارك الله فيك خويا سمير .. تعريفات و مفاهيم مهمة لابدا على الجميع معرفتها لحل بعض هذه المشاكل
 
أعلى