نحن بصدد إطلاق الإصدار التجريبي الأول من Android 17 اليوم، ونواصل عملنا لإنشاء نظام أساسي يمنح الأولوية للخصوصية والأمان والأداء المحسّن. يواصل هذا الإصدار عملنا لإنشاء تطبيقات Android أكثر قابلية للتكيّف، ويقدّم تحسينات كبيرة على إمكانات الكاميرا والوسائط، وأدوات جديدة لتحسين الاتصال، وملفات شخصية موسّعة للأجهزة المرافقة. يسلّط هذا الإصدار الضوء أيضًا على تغيير أساسي في طريقة طرح الإصدارات الجديدة لمجتمع المطوّرين، من نموذج "معاينة المطوّرين" التقليدي إلى برنامج Android Canary.
ما وراء "معاينة المطوّرين"
استبدل Android "معاينة المطوّرين" التقليدية بقناة Canary مستمرة. يقدّم هذا النموذج الجديد "المتاح دائمًا" ثلاث مزايا رئيسية:
- الوصول بشكل أسرع: يتم طرح الميزات وواجهات برمجة التطبيقات في قناة Canary فور اجتيازها الاختبارات الداخلية، بدلاً من الانتظار حتى إصدار ربع سنوي.
- استقرار أفضل: يؤدي "الاختبار الميداني" المبكر في قناة Canary إلى تجربة إصدار تجريبي أكثر دقة تتضمّن واجهات برمجة تطبيقات جديدة وتغييرات في السلوكيات تقترب من أن تكون نهائية.
- اختبار أسهل: تتيح قناة Canary التحديثات عبر اتصال لاسلكي (بدلاً من عملية التثبيت اليدوي)، وبما أنّها قناة تحديث منفصلة، يمكن دمجها بسهولة أكبر مع عمليات التكامل المستمر (CI)، وتمنحك أسرع فرصة لتقديم ملاحظات فورية حول التغييرات المحتمَلة القادمة.
جدول Android 17
سننتقل بسرعة من هذا الإصدار التجريبي إلى مرحلة "استقرار النظام الأساسي"، التي نستهدفها في شهر مارس. في هذه المرحلة، سنقدّم واجهات برمجة التطبيقات النهائية لحزمة SDK/NDK والسلوكيات النهائية إلى حد كبير التي يراها المستخدمون في التطبيقات. من ذلك الوقت، سيكون لديك عدة أشهر قبل الإصدار النهائي لإكمال الاختبار.
عام من الإصدارات
نخطط لمواصلة تلقّي Android 17 التحديثات في سلسلة من الإصدارات الربع سنوية. الإصدار القادم في الربع الثاني هو الإصدار الوحيد الذي سنطرح فيه تغييرات مخطّط لها في السلوكيات تؤدي إلى تعطّل التطبيقات. نخطط لإصدار حزمة SDK ثانوية في الربع الرابع تتضمّن واجهات برمجة تطبيقات وميزات إضافية.
قيود الاتجاه وتغيير الحجم
مع إطلاق الإصدار التجريبي من Android 17، ننتقل إلى المرحلة التالية من خارطة الطريق التكيّفية: يزيل Android 17 (مستوى واجهة برمجة التطبيقات 37) خيار إلغاء الاشتراك الذي يتيحه المطوّرون لفرض قيود الاتجاه وتغيير الحجم على الأجهزة ذات الشاشات الكبيرة (عرض الشاشة > 600 وحدة بكسل مستقلة الكثافة).
عندما يستهدف تطبيقك حزمة SDK 37، يجب أن يكون جاهزًا للتكيّف. يتوقّع المستخدمون أن تعمل تطبيقاتهم في كل مكان، سواء كانوا يستخدمون ميزة تعدُّد المهام على جهاز لوحي أو يفتحون جهازًا قابلاً للطي أو يستخدمون بيئة العرض في نافذة على الكمبيوتر المكتبي، ويتوقّعون أن تملأ واجهة المستخدم المساحة وأن تراعي وضع الجهاز.
التغييرات الرئيسية في حزمة SDK 37
يجب أن تضمن التطبيقات التي تستهدف Android 17 التوافق مع إيقاف سمات ملف البيان وواجهات برمجة التطبيقات لوقت التشغيل التي تم طرحها في Android 16. عند التشغيل على شاشة كبيرة (أصغر بُعد ≥ 600 وحدة بكسل مستقلة الكثافة)، سيتم تجاهل السمات وواجهات برمجة التطبيقات التالية:
| سمات ملف البيان/واجهة برمجة التطبيقات | القيم التي يتم تجاهلها |
| screenOrientation | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| setRequestedOrientation() | portrait, reversePortrait, sensorPortrait, userPortrait, landscape, reverseLandscape, sensorLandscape, userLandscape |
| resizeableActivity | الكل |
| minAspectRatio | الكل |
| maxAspectRatio | الكل |
الاستثناءات والتحكّم في المستخدم
تنطبق هذه التغييرات على الشاشات الكبيرة فقط، ولا تنطبق على الشاشات الأصغر من عرض الشاشة 600 وحدة بكسل مستقلة الكثافة (بما في ذلك الهواتف التقليدية ذات شكل الجهاز اللوحي). بالإضافة إلى ذلك، يتم استثناء التطبيقات المصنّفة كألعاب (استنادًا إلى العلامة 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 collector في 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 في التطبيق. يشمل ذلك التوافق مع معرّفات الموارد المنتظمة (URI) لصور رمزية للمتصلين والمشاركين في أداة الاتصال في النظام، ما يتيح للمستخدم التحكّم الدقيق في خصوصية سجلّ المكالمات وإثراء العرض المرئي لسجلات مكالمات 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، ننصحك بالانضمام إلى منتدياتنا وإرسال ملاحظاتك. نحن نسمعكم.
متابعة القراءة
-
أخبار المنتجات
أعلنّا اليوم خلال The Android Show أنّ Android ينتقل من نظام تشغيل إلى نظام ذكاء اصطناعي، ما يخلق المزيد من الفرص للتفاعل مع تطبيقاتك.
Matthew McCullough • قراءة لمدة 4 دقائق
-
أخبار المنتجات
نعمل اليوم على تحسين تطوير تطبيقات Android باستخدام Gemma 4، وهو أحدث نموذج متطوّر ومتاح للجميع مصمّم بإمكانات معقدة للاستنتاج واستدعاء الأدوات بشكل مستقل.
Matthew McCullough • قراءة لمدة دقيقتَين
-
أخبار المنتجات
لقد وصل Android 17 رسميًا إلى مرحلة استقرار النظام الأساسي اليوم مع الإصدار التجريبي 3. يعني ذلك أنّ واجهة برمجة التطبيقات أصبحت ثابتة، ويمكنك إجراء اختبار التوافق النهائي وطرح تطبيقاتك التي تستهدف Android 17 على "متجر Play".
Matthew McCullough • قراءة لمدة 5 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.