أخبار المنتجات

الإصدار التجريبي الأول من Android 17

قراءة لمدة 7 دقائق
Matthew McCullough
نائب الرئيس، إدارة المنتجات، مطوّر Android

نطرح اليوم الإصدار التجريبي الأول من Android 17، ونواصل عملنا على إنشاء منصة تولي الأولوية للخصوصية والأمان والأداء المحسّن. يواصل هذا الإصدار عملنا على إنشاء تطبيقات Android أكثر قابلية للتكيّف، ويقدّم تحسينات كبيرة على إمكانات الكاميرا والوسائط، وأدوات جديدة لتحسين الاتصال، وملفات شخصية موسّعة للأجهزة المرافقة. يسلّط هذا الإصدار الضوء أيضًا على تغيير أساسي في طريقة طرح الإصدارات الجديدة لمجتمع المطوّرين، من نموذج "معاينة المطوّرين" التقليدي إلى برنامج Android Canary.

ما وراء "معاينة المطوّرين"

استبدل Android "معاينة المطوّرين" التقليدية بقناة Canary مستمرة. يقدّم هذا النموذج الجديد "المتاح دائمًا" ثلاث مزايا رئيسية:

  • الوصول بشكل أسرع: يتم طرح الميزات وواجهات برمجة التطبيقات في قناة Canary فور اجتيازها الاختبار الداخلي، بدلاً من الانتظار حتى إصدار ربع سنوي.
  • استقرار أفضل: يؤدي "الاختبار الميداني" المبكر في قناة Canary إلى تجربة إصدار تجريبي أكثر دقة تتضمّن واجهات برمجة تطبيقات جديدة وتغييرات في السلوك تقترب من أن تكون نهائية.
  • اختبار أسهل: تتيح قناة Canary التحديثات عبر اتصال لاسلكي (بدلاً من عملية التثبيت اليدوي)، وبما أنّها قناة تحديث منفصلة، يمكن دمجها بسهولة أكبر مع عمليات التكامل المستمر، وتمنحك أسرع فرصة لتقديم ملاحظات فورية حول التغييرات المحتمَلة القادمة.

جدول Android 17

سننتقل بسرعة من هذا الإصدار التجريبي إلى مرحلة "استقرار المنصة"، التي من المفترض أن تكون في شهر مارس. في هذه المرحلة، سنقدّم واجهات برمجة التطبيقات النهائية لحزمة SDK/NDK والسلوكيات النهائية إلى حد كبير التي يراها التطبيق. من ذلك الوقت، سيكون لديك عدة أشهر قبل الإصدار النهائي لإكمال الاختبار.

timeline1.png

عام من الإصدارات

نخطط لمواصلة تلقّي Android 17 التحديثات في سلسلة من الإصدارات الربع سنوية. الإصدار القادم في الربع الثاني هو الوحيد الذي سنطرح فيه تغييرات مخطّط لها في السلوك تؤدي إلى تعطّل التطبيق. نخطط لإصدار حزمة SDK ثانوية في الربع الرابع تتضمّن واجهات برمجة تطبيقات وميزات إضافية.

timeline2.png

قيود الاتجاه وتغيير الحجم

مع إطلاق الإصدار التجريبي من Android 17، ننتقل إلى المرحلة التالية من خارطة الطريق التكيّفية: يزيل Android 17 (مستوى واجهة برمجة التطبيقات 37) خيار إلغاء الاشتراك الذي يتيحه المطوّرون لفرض قيود الاتجاه وتغيير الحجم على الأجهزة ذات الشاشات الكبيرة (sw > 600 dp).

عندما يستهدف تطبيقك حزمة SDK 37، يجب أن يكون جاهزًا للتكيّف. يتوقّع المستخدمون أن تعمل تطبيقاتهم في كل مكان، سواء كانوا يستخدمون ميزة تعدُّد المهام على جهاز لوحي أو يفتحون جهازًا قابلاً للطي أو يستخدمون بيئة العرض في نافذة على الكمبيوتر المكتبي، ويتوقّعون أن تملأ واجهة المستخدم المساحة وأن تراعي وضع الجهاز.

التغييرات الرئيسية في حزمة SDK 37

يجب أن تضمن التطبيقات التي تستهدف Android 17 التوافق مع إيقاف سمات ملف البيان وواجهات برمجة التطبيقات في وقت التشغيل التي تم طرحها في Android 16. عند تشغيل التطبيق على شاشة كبيرة (أصغر بُعد ≥ 600dp)، سيتم تجاهل السمات وواجهات برمجة التطبيقات التالية:

سمات ملف البيان/واجهة برمجة التطبيقاتالقيم التي يتم تجاهلها
screenOrientationportrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
setRequestedOrientation()portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape
resizeableActivityall
minAspectRatioall
maxAspectRatioall

الاستثناءات والتحكّم في المستخدم

تنطبق هذه التغييرات على الشاشات الكبيرة فقط، ولا تنطبق على الشاشات الأصغر من sw600dp (بما في ذلك الهواتف التقليدية ذات شكل الجهاز اللوحي). بالإضافة إلى ذلك، يتم استثناء التطبيقات المصنّفة كألعاب (استنادًا إلى العلامة android:appCategory) من هذه القيود.

من المهم أيضًا ملاحظة أنّ المستخدمين يظلون يتحكّمون في هذه التغييرات. يمكنهم الموافقة صراحةً على استخدام السلوك التلقائي للتطبيق أو إلغاء الموافقة عليه من خلال إعدادات نسبة العرض إلى الارتفاع في النظام.

تعديلات على تغييرات الإعدادات

لتحسين توافق التطبيقات والمساعدة في تقليل انقطاع تشغيل الفيديوهات والبيانات التي تم إدخالها وأنواع أخرى من فقدان الحالة المزعج، نعمل على تعديل السلوك التلقائي لإعادة إنشاء النشاط. بدءًا من Android 17، لن يعيد النظام تلقائيًا تشغيل الأنشطة عند إجراء تغييرات معيّنة في الإعدادات لا تتطلّب عادةً إعادة إنشاء واجهة المستخدم، بما في ذلك CONFIG_KEYBOARD، CONFIG_KEYBOARD_HIDDEN، CONFIG_NAVIGATION، CONFIG_UI_MODE (عند تغيير UI_MODE_TYPE_DESK فقط)، CONFIG_TOUCHSCREEN، وCONFIG_COLOR_MODE. بدلاً من ذلك، ستتلقّى الأنشطة قيد التشغيل هذه التعديلات ببساطة من خلال onConfigurationChanged.إذا كان تطبيقك يعتمد على إعادة التشغيل الكاملة لإعادة تحميل الموارد لهذه التغييرات، عليك الآن الموافقة صراحةً على ذلك باستخدام سمة ملف البيان الجديدة android:recreateOnConfigChanges، التي تتيح لك تحديد تغييرات الإعدادات التي يجب أن تؤدي إلى دورة حياة كاملة للنشاط (من الإيقاف إلى الإتلاف ثم الإنشاء مرة أخرى)، بالإضافة إلى الثوابت ذات الصلة mcc وmnc والثوابت الجديدة keyboard وkeyboardHidden وnavigation وtouchscreen وcolorMode.

إعداد تطبيقك

لقد طرحنا أدوات ووثائق لتسهيل هذه العملية عليك. يتضمّن منشور المدوّنة المركّز المزيد من الإرشادات، مع استراتيجيات لمعالجة المشاكل الشائعة. يجب أن تتوافق التطبيقات مع تنسيقات الوضع الأفقي والعمودي لأحجام النوافذ على نطاق كامل من نسب العرض إلى الارتفاع، لأنّه لن يعود بإمكانك تقييد الاتجاه أو نسبة العرض إلى الارتفاع. ننصحك باختبار تطبيقك باستخدام الإصدار التجريبي 1 من Android 17 مع محاكيات Pixel Tablet أو Pixel Fold (تم ضبطها على targetSdkPreview = "CinnamonBun") أو باستخدام إطار عمل توافق التطبيقات لتفعيل UNIVERSAL_RESIZABLE_BY_DEFAULT على أجهزة Android 16.

الأداء

‫MessageQueue بدون قفل

في Android 17، ستتلقّى التطبيقات التي تستهدف حزمة SDK 37 أو إصدارًا أحدث تنفيذًا جديدًا لـ android.os.MessageQueue يكون التنفيذ فيه بدون قفل. يحسّن التنفيذ الجديد الأداء ويقلّل من الإطارات التي تم فقدانها، ولكن قد يؤدي إلى تعطّل العملاء الذين يعكسون الحقول والطرق الخاصة في MessageQueue.

جمع البيانات المهملة على مستوى الأجيال

Android 17 يطرح ميزة جمع البيانات المهملة على مستوى الأجيال في أداة جمع البيانات المهملة Concurrent Mark-Compact في ART. يقدّم هذا التحسين عمليات جمع أكثر تكرارًا وأقل استهلاكًا للموارد للبيانات المهملة في الجيل الجديد إلى جانب عمليات جمع البيانات المهملة في الذاكرة الرئيسية، بهدف تقليل التكلفة على وحدة المعالجة المركزية والمدة الزمنية الإجمالية لجمع البيانات المهملة. تتوفّر أيضًا تحسينات ART لأكثر من مليار جهاز يعمل بنظام التشغيل Android 12 (المستوى 31 من واجهة برمجة التطبيقات) والإصدارات الأحدث من خلال تحديثات نظام Google Play.

الحقول الثابتة النهائية أصبحت نهائية حقًا

بدءًا من Android 17، لن تتمكّن التطبيقات التي تستهدف Android 17 أو إصدارًا أحدث من تعديل الحقول "الثابتة النهائية"، ما يسمح لوقت التشغيل بتطبيق تحسينات الأداء بشكل أكثر فعالية. ستؤدي محاولة إجراء ذلك من خلال الانعكاس (والانعكاس العميق) دائمًا إلى ظهور الخطأ IllegalAccessException. سيؤدي تعديلها من خلال مجموعة طرق SetStatic<Type>Field في JNI إلى تعطّل التطبيق على الفور.

قيود عرض الإشعارات المخصّصة

للحد من استخدام الذاكرة، نقيّد حجم طرق عرض الإشعارات المخصّصة. يُغلق هذا التحديث ثغرة تسمح للتطبيقات بتجاوز الحدود الحالية باستخدام معرّفات الموارد المنتظمة (URI). يتم التحكّم في هذا السلوك من خلال إصدار حزمة SDK المستهدَفة، ويسري على التطبيقات التي تستهدف المستوى 37 من واجهة برمجة التطبيقات والإصدارات الأحدث.

عوامل مشغّلة جديدة في ProfilingManager لتصحيح أخطاء الأداء

لقد طرحنا عدة عوامل مشغّلة جديدة للنظام في ProfilingManager لمساعدتك في جمع بيانات مفصّلة لتصحيح أخطاء الأداء. هذه العوامل المشغّلة هي TRIGGER_TYPE_COLD_START، TRIGGER_TYPE_OOM، و TRIGGER_TYPE_KILL_EXCESSIVE_CPU_USAGE.

للتعرّف على كيفية إعداد عوامل مشغّلة النظام الجديدة، يُرجى الاطّلاع على مستندات تحديد الملفات الشخصية استنادًا إلى العوامل المشغّلة واسترداد بيانات الملفات الشخصية وتحليلها.

الوسائط والكاميرا

يقدّم Android 17 أدوات احترافية لتطبيقات الوسائط والكاميرا، مع ميزات مثل عمليات الانتقال السلسة ومستوى الصوت الموحّد.

تعديلات ديناميكية على جلسة الكاميرا

لقد طرحنا updateOutputConfigurations() في CameraCaptureSession. يتيح لك ذلك ربط أسطح الإخراج وفصلها بشكل ديناميكي بدون الحاجة إلى إعادة ضبط جلسة التقاط الكاميرا بالكامل. يتيح هذا التغيير عمليات انتقال سلسة بين حالات استخدام الكاميرا وأوضاعها (مثل التقاط صور ثابتة مقابل تصوير فيديوهات) بدون تكلفة الذاكرة وتعقيد الرموز البرمجية اللازمَين لضبط جميع أسطح إخراج الكاميرا التي قد يحتاجها تطبيقك والاحتفاظ بها أثناء بدء تشغيل الكاميرا. يساعد ذلك في إزالة الأعطال أو حالات التجمّد التي يراها المستخدمون أثناء التشغيل.

fun updateCameraSession(session: CameraCaptureSession, newOutputConfigs:  List<OutputConfiguration>)) {
    // Dynamically update the session without closing and reopening
    try {
        
        // Update the output configurations
        session.updateOutputConfigurations(newOutputConfigs)
    } catch (e: CameraAccessException) {
        // Handle error
    }
}

البيانات الوصفية لجهاز الكاميرا المتعددة المنطقية

عند استخدام الكاميرات المنطقية التي تجمع بين أجهزة استشعار متعددة للكاميرا الفعلية، يمكنك الآن طلب بيانات وصفية إضافية من جميع الكاميرات الفعلية النشطة المشارِكة في عملية التقاط، وليس الكاميرا الأساسية فقط. في السابق، كان عليك تنفيذ حلول بديلة، وأحيانًا تخصيص عمليات بث فعلية غير ضرورية، للحصول على بيانات وصفية من الكاميرات النشطة الثانوية (مثلاً، أثناء تبديل العدسة للتكبير حيث تكون الكاميرا التابعة نشطة). تطرح هذه الميزة مفتاحًا جديدًا، LOGICAL_MULTI_CAMERA_ADDITIONAL_RESULTS، في CaptureRequest وCaptureResult. عند ضبط هذا المفتاح على ON في CaptureRequest، سيتضمّن TotalCaptureResult بيانات وصفية من هذه الكاميرات الفعلية النشطة الإضافية. يمكنك الوصول إلى هذه البيانات الوصفية الشاملة باستخدام TotalCaptureResult.getPhysicalCameraTotalResults() للحصول على معلومات أكثر تفصيلاً قد تتيح لك تحسين استخدام الموارد في تطبيقات الكاميرا.

دعم ترميز الفيديو المتعدّد الاستخدامات (VVC)

يضيفAndroid 17 دعمًا لمعيار ترميز الفيديو المتعدّد الاستخدامات (VVC). ويشمل ذلك تحديد نوع MIME ‏video/vvc في MediaFormat، وإضافة ملفات شخصية جديدة لـ VVC في MediaCodecInfo، ودمج الدعم في MediaExtractor. ستتوفّر هذه الميزة على الأجهزة التي تتضمّن دعمًا لفك الترميز على مستوى الأجهزة وبرامج تشغيل قادرة على ذلك.

جودة ثابتة لتسجيل الفيديوهات

لقد أضفنا setVideoEncodingQuality() إلى MediaRecorder. يتيح لك ذلك ضبط وضع الجودة الثابتة (CQ) لبرامج ترميز الفيديوهات، ما يمنحك تحكّمًا أفضل في جودة الفيديو بما يتجاوز إعدادات معدّل نقل البيانات البسيطة.

تعزيز أمان الصوت في الخلفية

بدءًا من Android 17، سيفرض إطار عمل الصوت قيودًا على التفاعلات الصوتية في الخلفية، بما في ذلك تشغيل الصوت وطلبات أولويّة الصوت وواجهات برمجة التطبيقات الخاصة بـ تغيير مستوى الصوت لضمان بدء هذه التغييرات عن قصد من قِبل المستخدم. 

إذا حاول التطبيق استدعاء واجهات برمجة التطبيقات الصوتية أثناء عدم وجود التطبيق في مراحل النشاط الصالحة، ستتعطّل واجهات برمجة التطبيقات الخاصة بتشغيل الصوت وتغيير مستوى الصوت بدون طرح استثناء أو تقديم رسالة خطأ. ستتعطّل واجهة برمجة التطبيقات الخاصة بأولويّة الصوت مع رمز النتيجة AUDIOFOCUS_REQUEST_FAILED.

الخصوصية والأمان

إيقاف سمة زيارات النص العادي نهائيًا

تم إيقاف سمة android:usesCleartextTraffic نهائيًا. إذا كان تطبيقك يستهدف Android 17 أو إصدارًا أحدث ويعتمد على usesCleartextTraffic="true" بدون إعدادات أمان شبكة مقابلة، سيتم تلقائيًا منع زيارات النص العادي. ننصحك بنقل بياناتك إلى ملفات إعدادات أمان الشبكة للتحكّم الدقيق.

التشفير المختلط HPKE

نطرح واجهة برمجة تطبيقات عامة لمزوّد الخدمة (SPI) لتنفيذ التشفير المختلط HPKE، ما يتيح التواصل الآمن باستخدام مزيج من التشفير بالمفتاح العام والتشفير المتماثل (AEAD).

الاتصال والاتصالات

سجلّ مكالمات VoIP المحسّن

نطرح ميزة إدارة تفضيلات المستخدم لدمج سجلّ مكالمات VoIP في التطبيق. ويشمل ذلك دعم معرّفات الموارد المنتظمة لصور رمزية للمتصلين والمشاركين في أداة الاتصال في النظام، ما يتيح للمستخدم التحكّم الدقيق في خصوصية سجلّ المكالمات وإثراء العرض المرئي لسجلّات مكالمات VoIP المدمَجة.

تحديد نطاق شبكة Wi-Fi والتقارب

تم تحسين ميزةتحديد نطاق شبكة Wi-Fi بإمكانات جديدة لاكتشاف التقارب، ما يتيح تحديد النطاق المستمر والاكتشاف الآمن من نظير إلى نظير. تشمل التعديلات على تحديد النطاق في Wi-Fi Aware واجهات برمجة تطبيقات جديدة لمعرّفات النظراء وتخزين PMKID مؤقتًا لتحديد النطاق الآمن 11az.

إنتاجية المطوّرين والأدوات

تعديلات على تطبيقات الأجهزة المرافقة

لقد طرحنا ملفَين شخصيَين جديدَين في CompanionDeviceManager لتحسين التمييز بين الأجهزة والتعامل مع الأذونات:

  • الأجهزة الطبية: يتيح هذا الملف الشخصي لتطبيقات الأجهزة الجوّالة الطبية طلب جميع الأذونات اللازمة بنقرة واحدة، ما يسهّل عملية الإعداد.
  • أجهزة تتبُّع اللياقة البدنية: يتيح الملف الشخصي DEVICE_PROFILE_FITNESS_TRACKER للتطبيقات المرافقة الإشارة صراحةً إلى أنّها تدير جهاز تتبُّع للياقة البدنية. يضمن ذلك تجارب دقيقة للمستخدمين باستخدام رموز مميزة مع إعادة استخدام أذونات دور الساعة الحالية.

بالإضافة إلى ذلك، يقدّم CompanionDeviceManager الآن مربّع حوار موحّدًا لربط الأجهزة وطلبات أذونات "الأجهزة المجاورة". يمكنك الاستفادة من الطريقة الجديدة setExtraPermissions في AssociationRequest.Builder لتجميع طلبات أذونات "الأجهزة المجاورة" ضمن عملية الربط الحالية، ما يقلّل عدد مربّعات الحوار التي تظهر للمستخدم.

بدء استخدام Android 17

يمكنك تسجيل أي جهاز Pixel متوافق للحصول على هذا التحديث والتحديثات المستقبلية للإصدار التجريبي من Android عبر اتصال لاسلكي. إذا لم يكن لديك جهاز Pixel، يمكنك استخدام صور النظام 64 بت مع "محاكي Android" في "استوديو Android".

إذا كنت مسجّلاً حاليًا في برنامج الإصدار التجريبي من Android، سيتم عرض تحديث عبر اتصال لاسلكي إلى الإصدار التجريبي 1.

إذا كان لديك الإصدار التجريبي من Android 26Q1 وأردت الحصول على الإصدار الثابت النهائي من 26Q1 والخروج من الإصدار التجريبي، عليك تجاهل التحديث عبر اتصال لاسلكي إلى الإصدار التجريبي 1 من 26Q2 والانتظار حتى إصدار 26Q1.

نبحث عن ملاحظاتك، لذا يُرجى الإبلاغ عن المشاكل وإرسال طلبات الميزات على صفحة الملاحظات. كلما تلقّينا ملاحظاتك في وقت مبكر، زادت إمكانية تضمينها في عملنا على الإصدار النهائي.

للحصول على أفضل تجربة تطوير باستخدام Android 17، ننصحك باستخدام أحدث إصدار مبكر حصري من استوديو Android (Panda). بعد الإعداد، إليك بعض الإجراءات التي يجب اتّخاذها:

  • يمكنك إجراء عملية التجميع باستخدام حزمة SDK الجديدة، والاختبار في بيئات التكامل المستمر، والإبلاغ عن أي مشاكل في أداة التتبّع على صفحة الملاحظات.
  • اختبِر تطبيقك الحالي للتأكّد من توافقه، وتعرَّف على ما إذا كان تطبيقك متأثرًا بالتغييرات في Android 17، وثبِّت تطبيقك على جهاز أو محاكي يعمل بنظام التشغيل Android 17 واختبِره على نطاق واسع.

سنعدّل صور النظام للإصدار المبكر الحصري/الإصدار التجريبي وحزمة SDK بانتظام طوال دورة إصدار Android 17. بعد تثبيت إصدار تجريبي، ستتلقّى تلقائيًا التحديثات المستقبلية عبر اتصال لاسلكي لجميع الإصدارات المبكرة الحصرية والإصدارات التجريبية اللاحقة.

للحصول على معلومات كاملة، يُرجى الانتقال إلى موقع مطوّري Android 17 الإلكتروني.

الانضمام إلى المحادثة

بينما ننتقل إلى مرحلة استقرار المنصة والإصدار الثابت النهائي من Android 17 في وقت لاحق من هذا العام، تظل ملاحظاتك أهم ما لدينا. سواء كنت من أوائل المستخدمين في قناة Canary أو مطوّر تطبيقات تختبر الإصدار التجريبي 1، ننصحك بالانضمام إلى منتدياتنا وإرسال ملاحظاتك. نحن نستمع إليك.

كتبه:

متابعة القراءة