[دروس صنع/تعديل ROM] إنشاء ROM الخاص بك (1)

الملصق الأصلي: شياويو، وجهات النظر: 304 الردود: 1 نشر في: 2013-10-20 16:58:58
يمكن تقسيم تعديل ROM بشكل عام إلى ثلاث فئات: التبسيط، الإضافة، والتحسين الجمالي. هنا سنناقش أساسًا جوانب التبسيط والإضافة، أما التحسين الجمالي فيمكنكم الاطلاع عليه في مشاركات أخرى.

أولاً. لنلقِ نظرة على محتويات ROM: عند فتح حزمة التثبيت باستخدام WinRAR، يمكن رؤية عدة مجلدات، والمجلدات التالية ذات صلة بنا:
- dev_data/apps/ : مجلد ملفات APK الخاصة ببرامج النظام، يعادل بعد التثبيت "/data/app_s/"، حيث لا يمكن إزالة هذه البرامج بعد التثبيت
- dev_data/app/ : مجلد ملفات APK الخاصة ببرامج المستخدم، يعادل بعد التثبيت "/data/app/"، حيث يمكن إزالة هذه البرامج بعد التثبيت. (توجد هذه المجلدات فقط في الإصدار بعد 28 أكتوبر، أما الإصدارات السابقة فيمكنكم إضافة هذا المجلد بأنفسكم)
- META-INF/com/google/android/ : ملفات سكريبت التثبيت
- system/etc/ : تخزين بعض ملفات الإعداد
- system/etc/permissions/ : متعلق بصلاحيات البرامج، بعض التصحيحات تتطلب إضافة ملفات في هذا المجلد
- system/lib/ : موقع تخزين مكتبات برامج النظام

ثانياً. لنتعرف على ملفات سكريبت التثبيت: عند التثبيت عبر الاسترداد (recovery)، يتم التحكم في عملية التثبيت بواسطة ملفات السكريبت. ملف السكريبت هو ملف update-script الموجود في المجلد META-INF/com/google/android ضمن الحزمة المضغوطة، ويمكن فتحه باستخدام محرر نصوص.

في ملف السكريبت، هناك بعض التعليمات التي تهمنا:
(1) show_progress 0.1 0 : عرض شريط التقدم. هذا يستخدم لعرض شريط تقدم التثبيت، الرقم 0.1 في الأمام يمثل موقع شريط التقدم ويمكن تغييره إلى أي قيمة أصغر من 1. أما الرقم في الخلف فلا نعرف معناه بالضبط، بشكل عام ما عدا السطر الأخير الذي يكون 10، البقية تكون 0. بعض ROM عند تثبيتها يظهر فيها أن العملية انتهت بينما شريط التقدم لم يصل لنصفه تقريبًا، يمكنكم تجربة تغيير السطر الأخير إلى show_progress 0.8 10، عندها يمكن لشريط التقدم أن يصل للنهاية.(2) بعض الكلمات المفتاحية (A) "SYSTEM:" تمثل دليل النظام بعد التثبيت = "/system/" (B) "INTERNAL:" تمثل دليل /data بعد التثبيت = "/data/" (C) "PACKAGE:" تمثل الدليل الجذري للحزمة المضغوطة، على سبيل المثال "SYSTEM:etc/" تعادل دليل "/system/etc/" بعد التثبيت، و"PACKAGE:dev_data" تعادل دليل dev_data داخل الحزمة المضغوطة. (3) copy_dir PACKAGE:dev_data INTERNAL: يستخدم copy_dir لنسخ الدلائل، المعامل الأول هو الدليل المراد نسخه، والمعامل الثاني هو المكان الذي سيتم النسخ إليه. على سبيل المثال copy_dir PACKAGE:dev_data INTERNAL: يستخدم لنسخ محتويات دليل dev_data من حزمة ROM إلى دليل "/data/" بعد التثبيت. (4) set_perm_recursive 0 2000 0755 0755 SYSTEM:bin يضبط أذونات الدليل أو الملف، طريقة الاستخدام مشابهة لكيفية ضبط الأذونات في لينكس. (5) delete SYSTEM:app/YouTube.apk يحذف الملفات، عادة لا نحتاج إلى هذا، وإذا أردنا الحذف، فقط احذفه مباشرة. حسناً، يمكن الآن البدء في تقليص وزيادة البرامج. ثانياً: تقليص برامج النظام. تقليص البرامج يعني في الواقع حذف برامج النظام، البرامج التي لا نحتاجها يمكن حذفها. فوائد حذف هذه البرامج هي: (1) بعض الأشياء لا نحتاجها، عرضها في قائمة البرامج مزعج، وإذا كانت هذه البرامج كثيرة قد يؤدي إلى بطء فتح قائمة البرامج. (2) بعض البرامج عند التشغيل تستهلك الذاكرة ونحن لا نحتاجها، مثل اعتراض الرسائل. (3) بعض البرامج لا نريد استخدامها من ROM الأصلي، ونريد استبدالها بأخرى، على سبيل المثال لا نحب ADW ونستخدم LAUNCH PRO بدلاً منه. طريقة التقليص بسيطة، افتح ROM باستخدام WinRAR، ادخل إلى dev_data/apps وابحث عن البرامج غير المرغوبة واحذفها. البرامج التي يمكن تقليصها: هذا الموضوع تم ذكره في الكثير من المشاركات، يمكن البحث عنها، مثل بعض المشاركات التالية. ثالثاً: إضافة البرامج. هناك طريقتان لإضافة البرامج: الأولى إضافة البرنامج كبرنامج نظام، والثانية إضافة البرنامج كبرنامج مستخدم. ميزة إضافة البرنامج كبرنامج نظام هي سرعة التنفيذ (هذا ما يقوله الناس، ولم أشعر بذلك)، والعيب أنه لا يمكن إلغاء تثبيته مباشرة، فقط يمكن حذفه باستخدام أدوات مثل RE.في الحقيقة، عند استخدام RE لحذف ملفات APK لبرامج النظام مباشرةً، ليس بالضرورة أن يتم إلغاء تثبيتها بالكامل. إذا لم تصدق، يمكن للجميع النظر في دليل /data/data/، هل لكل برنامج هدف معين؟ نعم، اسم الدليل مطابق لاسم حزمة البرنامج (ليس XXX.APK بل XXX).
1. إضافة برامج النظام: أسهل طريقة لإضافة برنامج نظام:
(1) استخدم WinRAR لفتح ملف ROM المضغوط، انتقل إلى الدليل "dev_data app_s"، وانسخ ملف APK الخاص بالبرنامج المراد إضافته هناك.
(2) استخدم WinRAR لفتح ملف APK المراد إضافته، وانظر إذا كان هناك ملفات تنتهي بـ .so في دليل "lib armeabi"، فهي مكتبات يحتاجها البرنامج عند التشغيل، إذا وجدت، انسخها إلى دليل "system/lib/" داخل الملف المضغوط. بعض الأصدقاء يواجهون مشكلة عند تعديل ROM وإضافة برامج لا تعمل، غالبًا يعود السبب لهذا. على سبيل المثال، الإصدار الجديد من لوحة مفاتيح Google Pinyin.
2. إضافة برامج المستخدم: إضافة برامج المستخدم أصعب قليلًا، لكنها يمكن إزالتها مباشرة بعد تثبيت النظام. إذا كان ROM الذي تستخدمه بعد 28 أكتوبر، فقط اسحب ملف APK إلى دليل "dev_data/app/". هذه الخطوة سهلة، الصعوبة تكمن إذا كان ملف APK يحتوي على مكتبات. طريقة التعامل البسيطة مشابهة للخطوة 2 في إضافة برامج النظام، عيب هذه الطريقة أنه عند إزالة البرنامج ستبقى المكتبات في "system/lib/"، لكن لحسن الحظ، معظم البرامج لا تحتوي على مكتبات، والمكتبات القليلة التي تبقى ليست مشكلة كبيرة. الطريقة المتقدمة هي تثبيت البرنامج عن طريق كتابة سكريبت.
بالنسبة لإصدارات ROM قبل 28 أكتوبر، لم يكن هناك دليل app داخل "dev_data/"، يمكنك إنشاءه بنفسك (اضغط بزر الفأرة الأيمن في WinRAR واختر إنشاء مجلد جديد)، بعد إنشاء الدليل يجب ضبط خصائص الدليل في سكريبت تثبيت النظام: ابحث في سكريبت التثبيت عن هذا الجزء:
copy_dir PACKAGE:dev_data INTERNAL:
set_perm 1000 1000 0771 INTERNAL:app_s
ثم أضف السطر التالي بعده:
set_perm 1000 1000 0771 INTERNAL:app
السطر الأول يقوم بنسخ كل شيء من دليل dev_data في ROM إلى دليل /data، السطر الثاني يضبط صلاحيات app_s، والسطر الذي أضفناه يضبط صلاحيات app.
بعد ذلك يمكن تعديل وإصلاح ROM.يمكن استخدام سكربت firstboot لإجراء إعدادات متقدمة على ROM، ويمكن الاستفادة من سكربت firstboot.sh. يقع سكربت firstboot.sh في دليل dev_data داخل ROM. التعليمات البرمجية داخل السكربت يتم تنفيذها عند التشغيل لأول مرة بعد تثبيت النظام، ويمكن من خلاله إعداد النظام، وتثبيت ملفات APK، وأعمال أخرى.

انظر إلى مقطع من سكربت liudidi1028rom:
# الإعدادات الافتراضية للنظام
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_wake_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('trackball_unlock_screen', 1);"
/system/xbin/sqlite3 "INSERT INTO system (name, value) VALUES ('lock_home_in_memory', 1);"

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

يمكن استخدام أوامر مثل rm و mv في السكربت ليمكنك من استبدال بعض ملفات الإعدادات مباشرة. مثال:
busybox rm /system/etc/اسم_الملف
busybox mv /system/etc/اسم_الملف

بالطبع، إذا كنت ستعدل ملفات النظام، يجب أولاً الحصول على الصلاحيات:
busybox mount -o remount,rw /system

ثم بعد التعديل يمكن إعادة تحويلها إلى قراءة فقط:
busybox mount -o remount,ro /system

سكربت firstboot.sh مفيد جدًا، سيكون رائعًا إذا كتب أحد الخبراء درسًا تمهيديًا عنه!
رد 🤍 0 📤 يشارك يجمع
طويل جدًا، لا أستطيع الفهم
— تم تحميل كافة الردود —

ترك الرد