[Update:Nightlies will start this week] لماذا تأخرت عملية إطلاق النسخة الليلية من Cyanogenmod 14؟

تم اطلاق الشيفرة المصدرية (source code) لنظام الأندرويد Nougat 7.0 منذ ما يزيد على شهر ونصف.
أول ما سيخطر في أذهننا عند الحديث عن هذا الأمر هو الcustom roms وتحديدا الCyanogenMod بما أن أغلب الرومات الموجودة حاليا ترتكز عليها مثل AICP, AOKP, Resurrection Remix... في العادة يتم اطلاق النسخة الليلية (nightly) من CyanogenMod بعد شهر أو أكثر بقليل كما كان الحال مثلا مع CyanogenMod 13 والذي تم إطلاقه في شهر نوفمبر أي تحديدا بعد شهر من إطلاق الشيفرة المصدرية الخاصة بنظام الأندرويد Marshmallow 6.0. اذن ما سبب هذا التأخر؟
كما تلاحظون عند بداية إطلاق النسخة الليلية من أي نسخة من روم CyanogenMod يكون هنالك عدد قليل من الأجهزة (بقية الأجهزة تأتي تدريجيا). يعني أن هذه الأجهزة هي التي استوفت الشروط-المتفق عليها- (التي وضعها فريق CyanogenMod) وأصبحت جاهزة لاستلام النسخة الليلة. هذه الشروط هي أن تكون جميع الخصائص في الهاتف تعمل مما يتيح للمستخدم استعماله بشكل يومي دون أن يواجه أي مشكل. من هذه الخصائص أذكر:
  • الكاميرا, الWifi, الBluetooth, الGPS
  • الNFC
  • video encoding/decoding (عملية video encoding تحصل مثلا عند تصويرك لمقطع فيديو, video decoding تحصل مثلا عند مشاهدة مقطع فيديو(video playback) يعني أن كلا العمليتين تعنيان ببساطة قدرة الهاتف على التعامل مع مقاطع الفيديو)
  • بعض الخصائص الأساسية الأخرى.
تأخر عملية إطلاق النسخة الليلية من روم CyanogenMod 14 يعود الى حدوث مشكلة في خاصية Video encoding/decoding. سأحاول تبسيط الأمر قدر المستطاع,أي هاتف يعمل بنظام الأندرويد يحتوي على ما يسمى Blobs يتم إعدادها من قبل الشركة المصنعة وتكون في أغلب الأحيان Closed source. يعني لنقل أن الBlobs هي بمثابة التعريفات الخاصة بالجهاز والتي تمكنه من القيام بعملية Video encoding /decoding وغيرها من العمليات الحيوية أي بدونها يصبح الهاتف دون فائدة.  في نظام الأندرويد Nougat 7.0 قامت شركة جوجل بعدة تغييرات جذرية على مستوى كيفية تعامل النظام مع مقاطع الفيديو يعني بالأصح عملية video encoding/decoding حيث أصبح لكل من الCameraserver والmediaserver مايسمى بprocess خاص به أي أن عملية نقل الvirtual adresses الخاصة بالcapture buffer الى الencoder لم تعد ممكنة لبعض الأجهزة (بما أنهما لم يعودا يعملان في نفس الprocess) (أعتذر ولكن لم استطع توضيح هذه المصطلحات أكثر من ذلك).اذن ماهي الهواتف المتظررة من هذا التغيير؟ الهواتف المتظررة هي جميع الهواتف التي تكون نسخة الblobs الخاصة بها HALv1 يعني ببساطة هذه الblobs لا تستطيع القيام بعملية الvideo encoding/decoding الا اذا كان الcameraserver والmediaserver في نفس الprocess.
حاليا 80% من الأجهزة التي تدعمها CyanogenMod قد تضررت من هذا التغيير الحاصل في نظام Android 7.0. مثل هاتف Galaxy S5 , هاتف OnePlus One , هاتف Xperia Z2 , هاتف LG G3... والعديد من الأجهزة الأخرى. 
(أنا قمت بتجربة نسخة أولية من روم CyanogenMod 14 على هاتفي (Galaxy s5 (G900f و وجدت أن النظام يعمل بكفا\ة وصراحة هوا أخف وأسرع بكثر من الأندرويد Marshmallow 6.0 فقط المشكلة الوحيدة هي كما ذكرت عدم قدرة الهاتف على تصوير أو تشغيل مقاطع الفيديو.)
الخبر المفرح هو أن فريق CyanogenMod استطاع إيجاد حل للمشكل وهو باستخدام طريقة العمل القديمة للHALv1 وهو بجعل mediaserver و cameraserver يعملان في نفس الProcess. حاليا مازال الموضوع قيد التجربة والنقاش بين المطورين نظرا للتعقيد الحاصل فيه. يمكنكم الإطلاع على التغييرات من خلال الGerrit الخاص بCyanogenMod:
حالما يتم إعتماد هذا الحل رسميا في الsource code الخاصة بCyanogenMod ستحل مشكلة الvideo encoding/decoding لذلك العدد الهائل من الأجهزة عندها سيصبح النظام جاهزا للإستخدام اليومي  وبالتالي ستكون هذه شارة البداية لإنطلاق النسخة الليلية من CM14 والتي من الممكن ان تبدأ مع نهاية شهر أكثوبر.

تحديث: أخيرا تم حل مشكل cameraserver/mediaserver. في حقيقة الأمر الإشكال كان في وضع patch موحد لجميع الأجهزة المتضررة لذلك طالت مدة الإنتظار كثيرا. هنا نجد جميع الcommmits التي تم اضافتها (merge) الى الsource الخاصة بcyanogenmod
http://review.cyanogenmod.org/#/c/168923
http://review.cyanogenmod.org/#/c/167484
بالتالي من المتوقع أن تنطلق الnightlies الخاصة بCM 14.1 في أية لحظة ...
happy_flashing#
رابط المشاركة المختصر :

التعليقات ()