- يتيح لك ذلك تغيير معلمات النظام العميقة مثل كثافة البكسل أو وظائف الأجهزة المحددة.
- يتطلب ذلك صلاحيات المستخدم المتميز والتعامل الدقيق مع سياقات SELinux لتجنب الأخطاء الأمنية.
- من الضروري إجراء نسخ احتياطية مسبقًا والتأكد من إيقاف تشغيل الجهاز بالكامل قبل تطبيق التغييرات.

ربما تساءلت في وقت ما عن إمكانية تغيير بعض الإعدادات الداخلية لجهازك التي لا تظهر في قائمة الإعدادات الافتراضية. يُعد ملف buildprop بمثابة العقل المدبر لنظام أندرويد، حيث تُخزَّن فيه خصائص تُحدد كل شيء بدءًا من طراز الجهاز وصولًا إلى كيفية عمل واجهة المستخدم.
التعامل مع هذا الملف أشبه بدخول منطقة محظورة في النظام؛ فقد يتسبب في تعطل هاتفك أو دخوله في حلقة إعادة تشغيل لا نهائية إذا أخطأت. لذا، قبل البدء بتعديل سطور التعليمات البرمجية ، من الضروري أن تفهم ما تفعله وأن تمتلك الأدوات المناسبة لتجنب تعطيل هاتفك تمامًا.
طرق عملية لتحرير النظام
إذا كنت ترغب في البدء بالعمل، فهناك عدة طرق للقيام بذلك. يفضل العديد من المستخدمين استخدام مستكشفات الملفات التي تتيح الوصول إلى صلاحيات الجذر، ولكن هناك طريقة موثوقة إلى حد كبير وهي استخراج الملف إلى جهاز الكمبيوتر الخاص بك وتعديله بسهولة باستخدام برنامج Notepad++، الذي يتيح إدارة أفضل لفواصل الأسطر. من التفاصيل المهمة التي نغفل عنها أحيانًا أنه في إصدارات مثل Lollipop، لا تؤدي إعادة التشغيل العادية دائمًا إلى تحديث تغييرات البرنامج. من الأفضل إيقاف تشغيل هاتفك تمامًا ، بل وإزالة البطارية إذا كانت قابلة للإزالة، لإجبار النظام على قراءة ملف buildprop من البداية عند بدء التشغيل.
أحيانًا، حتى مع استخدام Magisk وAndroid 10، قد تلاحظ أن التغييرات لا تُحفظ رغم محاولتك استخدام Root Explorer أو سطر الأوامر. ويعود ذلك عادةً إلى قيود الكتابة على أقسام Android الحديثة، والتي تتطلب إدارة أذونات أكثر تقدمًا.
تخصيص كثافة الشاشة
إحدى أكثر الحيل فائدة هي تعديل كثافة البكسل (DPI)، وهي حلٌّ مثاليٌّ لمن يعانون من مشاكل في الرؤية أو لمن يرغبون ببساطة في تكبير حجم الأيقونات والنصوص دون تغيير نوع الخط. للقيام بذلك، ابحث عن السطر `ro.sf.lcd_density` في الملف . إذا كانت القيمة الأصلية 240 وتريد تكبير كل شيء، يمكنك زيادتها إلى 260 أو 270. أما إذا كنت تفضل عرض المزيد من المحتوى على الشاشة، فخفّض القيمة إلى 210 أو 230. احرص دائمًا على تدوين القيم الأصلية لتتمكن من الرجوع إليها إذا لم تكن راضيًا عن النتيجة.
تعريف البنية التقنية والخصائص (AOSP)
من منظور تطوير نظام أندرويد مفتوح المصدر (AOSP)، لا تقتصر إضافة خاصية على كتابة سطر واحد من التعليمات البرمجية. أولًا، عليك تحديد الاسم باستخدام صيغة snake_case واختيار البادئة المناسبة. لدينا خصائص للقراءة فقط (ro) ، والتي تُضبط مرة واحدة فقط، وخصائص مُستمرة ، والتي تحتفظ بقيمتها بعد إعادة التشغيل. من الضروري تجنب المصطلحات العامة مثل "system" أو "config" لمنع التعارضات، وبدلًا من ذلك، قم بتجميعها حسب الأنظمة الفرعية مثل الصوت، أو البلوتوث، أو الاتصالات الهاتفية.
يستخدم النظام أنواع بيانات محددة لتجنب الأخطاء. يمكننا استخدام القيم المنطقية (صواب/خطأ) ، والأعداد الصحيحة 64 بت، والأعداد العشرية، أو سلاسل UTF-8 البسيطة. لكي يتعرف النظام على هذه المتغيرات، يجب ربطها بسياق SELinux ، مما يضمن أن العمليات المصرح لها فقط هي التي يمكنها قراءة هذه المعلومات أو كتابتها.
إدارة إمكانية الوصول والأمان باستخدام SELinux
لا يمكن لكل عملية الوصول إلى جميع الخصائص. تحدد وحدات الماكرو الخاصة بإمكانية الوصول النطاق: بعضها داخلي للنظام (system_internal_prop)، وبعضها الآخر مقيد، وبعضها عام. لتطبيق ذلك، يجب العمل في دليل system/sepolicy ، وتحديد السياقات في ملفات مثل property.te، ومنح الأذونات باستخدام وحدات الماكرو set_prop و get_prop.
لمنع الثغرات الأمنية، تُطبَّق قواعد منع الوصول ، التي تحظر صراحةً وصول نطاقات معينة إلى خصائص حساسة. ويتم التعيين النهائي في ملف سياقات الخصائص، حيث تُربط الخاصية الفعلية بسياقها الأمني، ويمكن تحديد ما إذا كان التطابق تامًا أم باستخدام بادئة.
الاستقرار والنشر في وقت الترجمة
عند تصميم نظام معياري (كما هو الحال في مشروع Treble)، يُعدّ الاستقرار أساسيًا. إذا استُخدمت خاصية ما من قِبل أقسام مختلفة (مثل `system` و`vendor`)، فيجب تعريفها كواجهة برمجة تطبيقات مستقرة . لتعيين هذه القيم أثناء عملية التجميع، تُستخدم متغيرات ملف makefile مثل `PRODUCT_SYSTEM_PROPERTIES` . يمكن استخدام التعيين المباشر هنا، أو التعيين الاختياري (مع علامة الاستفهام)، والذي يُطبّق فقط في حال عدم وجود تعريف مُسبق.
أثناء التشغيل، يمكننا التفاعل مع هذه المتغيرات باستخدام أوامر سطر الأوامر. يُستخدم الأمر `getprop` لقراءة القيمة الحالية، بينما يسمح لنا الأمر `setprop` بتعديلها مباشرةً. بالنسبة لمطوري لغات C++ أو Java أو Rust، توجد واجهات برمجة تطبيقات (APIs) مُولّدة تلقائيًا تُمكّنهم من التعامل مع هذه الخصائص ذات الأنواع المحددة بدقة ، مما يجنّبهم أخطاء تحويل البيانات.
خصائص خاصة بالبائع
يجب على الشركات المصنعة للأجهزة المخصصة استخدام بادئات خاصة لتجنب التعارض مع منصة جوجل الأساسية. يجب أن تبدأ جميع هذه الخصائص بـ `vendor.` أو `odm.` ، ويجب أن تبدأ سياقات الأمان الخاصة بها دائمًا بالبادئة `vendor_`. من القواعد الأساسية ألا تعتمد أقسام النظام على أقسام الشركة المصنعة للحفاظ على التوافق وتسهيل تحديثات نظام التشغيل.
يُتيح لك إتقان مُحرر buildprop وبنية خصائص نظام Android إمكانية إجراء تعديلات بسيطة على النظام، وصولًا إلى تحسينات مُعمقة لنواة النظام وتعزيز أمان الجهاز، شريطة الالتزام بتسلسل SELinux الهرمي والحفاظ على نسخ احتياطية مُحدثة باستمرار لتجنب تعطيل جهازك. شارك هذا الدليل ليستفيد منه المستخدمون الآخرون.