جولة للتعرّف على Android 17

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

نطرح اليوم الإصدار Android 17 وسنوفّره على معظم أجهزة Pixel المتوافقة، كما سنطرح أجهزة جديدة تعمل بنظام التشغيل Android 17 خلال الأشهر المقبلة.

AfD-Android-17.gif

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

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

لنتعرّف أكثر على Android 17.

نظام ذكاء

من خلال الدمج العميق بين الأجهزة والبرامج والذكاء الاصطناعي، نحول Android من نظام تشغيل إلى نظام ذكي، ونسعى إلى تقديم تجارب جديدة مفيدة تتوقّع احتياجات المستخدمين، ما يتيح المزيد من فرص التفاعل مع تطبيقاتك. ولهذا السبب، يوسّع Android 17 إمكانات AppFunctions، وهي واجهة برمجة تطبيقات للنظام الأساسي تتضمّن مكتبة Jetpack مقابلة، وتتيح لك المساهمة في إمكانات تطبيقك الفريدة كـ "أدوات" قابلة للتنظيم في "بروتوكول سياق النموذج" (MCP) من Android، وهو ما يعادل بروتوكول سياق النموذج على الجهاز. يمكن لوكلاء ومساعدي الذكاء الاصطناعي (مثل Google Gemini) اكتشاف AppFunctions وتنفيذها لتنفيذ مهام سير العمل نيابةً عن المستخدم مع إمكانية الوصول المباشر إلى الحالة المحلية للتطبيق.

تسهّل مكتبة Jetpack، المتوفّرة حاليًا في مرحلة الإصدار الأوّلي، إضافة AppFunctions من خلال إضافة تعليقات KDoc إلى فئة. 

/**
 *   A note app's [AppFunction]s.
 */
class NoteFunctions(
    private val noteRepository: NoteRepository
) {
    /**
     *   Adds a new note to the app.
     *
     *   @param appFunctionContext The execution context.
     *   @param title The title of the note.
     *   @param content The note's content.
     */
    @AppFunction(isDescribedByKDoc = true)
    suspend fun createNote(
        appFunctionContext: AppFunctionContext,
        title: String,
        content: String
    ): Note {
        return noteRepository.createNote(title, content)
    }
}

أطلقنا أيضًا مهارة وكيل AppFunctions التي تحلّل سير العمل الرئيسي في تطبيقك، وتنشئ تلقائيًا رمز Kotlin المطلوب، وتحسّن مستندات KDoc لتفعيل ميزة "استدعاء الأدوات" في النماذج اللغوية الكبيرة، وتوفّر أوامر ADB للاختبار وتحديد المشاكل وحلّها.

تتوفّر ميزة الدمج مع Gemini حاليًا في إصدار تجريبي خاص مع مختبِرين موثوق بهم، ولكن يمكنك البدء في إعداد تطبيقاتك الآن. بالإضافة إلى أوامر ADB لتنفيذ AppFunctions، وفّرنا تطبيقًا لوكيل الاختبار يتضمّن واجهة لاستكشاف AppFunctions وتنفيذها ومحاكاة عملية الدمج مع وكيل الذكاء الاصطناعي. انضم إلى برنامج استخدام المنتج قبل إطلاقه على goo.gle/eap-af للحصول على فرصة أن تكون من بين التطبيقات الأولى التي تطرح AppFunctions في الإصدار العلني.

التكيّف أولاً

لم يعُد المستخدمون يعتمدون على شكل جهاز واحد، بل ينتقلون بين الهواتف والهواتف القابلة للطي والأجهزة اللوحية وأجهزة الكمبيوتر المحمول وشاشات السيارات وبيئات الواقع الممتد الغامرة. الآن، بعد أن أصبح لدى المستخدمين أكثر من 580 مليون جهاز بشاشة كبيرة ومع إطلاق Googlebooks قريبًا، لم يعُد التكيّف هدفًا فنيًا فقط في الجيل التالي من ChromeOS المستند إلى حزمة Android. إنّها فرصة هائلة للوصول إلى المستخدمين المتفاعلين بشكل كبير، وهذا أحد الأسباب التي دفعتنا إلى الانتقال إلى معيار تطوير متوافق مع مختلف الأجهزة.

عدم فرض قيود على تغيير الحجم أو الاتجاه على الشاشات الكبيرة

لضمان تقديم التطبيقات تجربة ممتازة على جميع أشكال الأجهزة، بما في ذلك الأجهزة الجوّالة التي تعمل في وضع سطح المكتب على شاشات متصلة، يزيل نظام التشغيل Android 17 (المستوى 37 من واجهة برمجة التطبيقات) خيار إيقاف القيود المفروضة على تغيير الحجم والاتجاه الذي يوفّره المطوّر على الأجهزة ذات الشاشات الكبيرة (sw > 600 dp) للتطبيقات التي تستهدف المستوى 37 من واجهة برمجة التطبيقات. سيتجاهل النظام سمات ملف البيان القديمة وواجهات برمجة التطبيقات في وقت التشغيل، بما في ذلك screenOrientation وsetRequestedOrientation() وresizeableActivity=false وقيود نسبة العرض إلى الارتفاع (minAspectRatio/maxAspectRatio). ستظل الألعاب (استنادًا إلى فئة التطبيق في Google Play) معفاة من هذه السياسة. يجب أن يكون تطبيقك جاهزًا للتكيّف مع أي حجم نافذة، وأن يراعي وضع الجهاز المفضّل لدى المستخدم، وأن يتيح عرض النوافذ الحرة بشكلٍ مدمج.

تعدُّد المهام من الجيل التالي: "فقاعات التطبيقات" و"شريط الفقاعات" ووضع "نافذة ضمن النافذة" التفاعلي على الكمبيوتر

يقدّم Android 17 إمكانات جديدة وفعّالة في التعامل مع النوافذ تعيد تعريف طريقة تعدُّد المهام لدى المستخدمين، ما يتطلّب من تطبيقاتك توفير مرونة أكبر في التصميم:

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

تعديلات على إعادة إنشاء الأنشطة

لمنع فقدان الحالة وتعطُّل التطبيق، يغيّر Android 17 السلوك التلقائي لإعادة إنشاء الأنشطة. لن يعيد النظام تشغيل الأنشطة تلقائيًا عند إجراء تغييرات نموذجية في الإعدادات لا تتطلّب إعادة رسم واجهة المستخدم بالكامل (بما في ذلك CONFIG_KEYBOARD و CONFIG_KEYBOARD_HIDDEN و CONFIG_NAVIGATION و CONFIG_TOUCHSCREEN و CONFIG_COLOR_MODE).

بدلاً من ذلك، ستتلقّى الأنشطة قيد التشغيل هذه التحديثات من خلال onConfigurationChanged()‎، ما يتيح عمليات انتقال سلسة. إذا كان تطبيقك يعتمد بشكل صريح على إعادة التشغيل الكامل لإعادة تحميل الموارد لهذه التغييرات، عليك الآن الموافقة بشكل صريح باستخدام سمة البيان الجديدة android:recreateOnConfigChanges.

المتابعة على الجهاز

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

Continue On.png
اقتراح التسليم على جهاز لوحي
class MyHandoffActivity : Activity() {

    ...

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    // Do stuff
    ...
    // Enable handoff
    setHandoffEnabled(true, null)
  }

  // Override and implement onHandoffActivityDataRequested
  override fun onHandoffActivityDataRequested(handoffRequestInfo: HandoffActivityDataRequestInfo) : HandoffActivityData {
    // Create and return handoff data
  }
}

استخدام Jetpack Compose لتصميم تطبيقات متكيّفة

لمساعدتك في تعديل تطبيقاتك لتلبية متطلبات Android 17 الجديدة، أطلقنا مهارة التكيّف في Jetpack Compose. يساعد سير عمل المطوّر المستند إلى الذكاء الاصطناعي في تنفيذ أفضل الممارسات التكيّفية:

  • التنقّل التكيّفي: يمكنك الانتقال تلقائيًا بين أشرطة التنقّل في أسفل الشاشة على الأجهزة الجوّالة وقضبان التنقّل الثابتة على الحواف على الشاشات الكبيرة باستخدام NavigationSuiteScaffold من مكتبة Material 3 Adaptive.
  • التصميمات المتعددة الألواح: نفِّذ تصميمات عرض على شكل قائمة مع تفاصيل واللوحات الثانوية بشكلٍ أصلي باستخدام "مشاهد التنقّل 3" (ListDetailSceneStrategy وSupportingPaneSceneStrategy) بدلاً من عمليات الأجزاء غير الثابتة.
  • واجهات برمجة التطبيقات FlexBox وGrid: يمكنك الاستفادة من مكوّنات التنسيق الديناميكي في Compose 1.11 لتعديل مدى الصفوف والأعمدة بسهولة أثناء التنقل، ما يضمن أن يملأ المحتوى المساحة بشكل جميل دائمًا.
  • إدخال متقدّم بدون لمس: يمكنك الاستفادة من ميزة دعم لوحة اللمس والماوس المحسّنة في الإصدار 1.11 من Compose، بما في ذلك حلقات التركيز الأصلية وواجهات برمجة التطبيقات الجديدة (مثل TrackpadInjectionScope و performTrackpadInput) لاختبار تجربة "الكمبيوتر المحمول" وتقديمها بسهولة على Googlebooks و"وضع سطح المكتب".
  • حالات النوافذ الديناميكية: يمكنك الاستفادة من نموذج الحالة التفاعلية في Compose لتكييف واجهة المستخدم بسلاسة عند انتقال التطبيق من وضع ملء الشاشة إلى فقاعة تطبيق عائمة أو نافذة تفاعلية في وضع "نافذة ضمن النافذة" على سطح المكتب، ما يضمن تقديم تجربة ممتازة حتى عند الحد الأدنى للأبعاد.

‫Android هو Compose أولاً

توفّر Compose أسهل طريقة لإنشاء تطبيقات متكيّفة، وهذا مجرّد أحد الأسباب العديدة التي تجعلنا نعتقد أنّه يجب إنشاء جميع واجهات مستخدم Android باستخدام Compose. لهذا السبب، أصبح تطوير تطبيقات Android يعتمد على Compose أولاً. سيتم إنشاء جميع واجهات برمجة التطبيقات والمكتبات والأدوات والإرشادات الجديدة للمطوّرين على Android حصريًا من أجل Jetpack Compose. أصبحت مكوّنات View القديمة (في حزمة android.widget) ومكتبات View المستندة إلى Jetpack (مثل Fragments وRecyclerView وViewPager) الآن في وضع الصيانة. ولن يتلقّوا سوى إصلاحات الأخطاء المهمة، ولن يحصلوا على أي ميزات جديدة.


ملاحظة هل أنت مستعد لنقل البيانات؟ استخدِم أداة نقل البيانات من XML إلى Compose المستندة إلى الذكاء الاصطناعي لتحليل تخطيطات View القديمة تلقائيًا وتحويلها إلى رموز Compose قابلة للتكيّف بدرجة كبيرة.


الأداء والكفاءة

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

الحدود القصوى لذاكرة التطبيقات

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

اعتبارًا من Android 17، سيفرض النظام حدودًا صارمة على الذاكرة المستخدَمة من التطبيقات استنادًا إلى إجمالي مساحة ذاكرة الوصول العشوائي (RAM) في الجهاز، وسيتم إنهاء العمليات المخالفة بشكل مفاجئ. إليك بعض الميزات الجديدة التي تساعدك في استيفاء هذه المتطلبات الأكثر صرامة:

  • أداة التحسين R8: تساهم أداة التحسين R8 بشكل كبير في تقليل استهلاك الذاكرة التي تشغلها رموز التطبيق الثنائية عن طريق تقليص حجم الفئات والأساليب والحقول إلى أسماء أقصر، وإزالة الرموز والموارد غير المستخدَمة. استخدِم أداة R8 في الوضع الكامل مع أداة تحليل إعدادات R8 الجديدة للتأكّد من أنّ تطبيقك يستفيد إلى أقصى حدّ من أداة R8.
R8 Configuration Analyzer.png
أداة تحليل إعدادات R8
  • أداة LeakCanary في إصدار Panda من "استوديو Android": يتضمّن محلّل الأداء الآن عملية دمج أصلية لأداة LeakCanary كمهمة مخصّصة، وهي مدمجة بالكامل مع بيئة التطوير المتكاملة ورمز المصدر.
  • ApplicationExitInfo: إذا تم إنهاء تطبيقك بسبب هذه الحدود، ستعرض الدالة getDescription() من ApplicationExitInfo القيمة "MemoryLimiter:AnonSwap".
  • رصد قيمة شاذة على الجهاز: يمكنك الاستفادة من إنشاء الملفات الشخصية المستندة إلى المشغّلات باستخدام TRIGGER_TYPE_ANOMALY كجزء من ProfilingManager، وذلك لتسجيل لقطات لأجزاء من الذاكرة تلقائيًا عند بلوغ الحد الأقصى للذاكرة.
val profilingManager = applicationContext
   .getSystemService(ProfilingManager::class.java)

val triggers = ArrayList<ProfilingTrigger>().apply {
  add(ProfilingTrigger.Builder(
    ProfilingTrigger.TRIGGER_TYPE_ANOMALY).build())
}
profilingManager.addProfilingTriggers(triggers)

ونعمل على عرض المزيد من مقاييس الذاكرة داخل الحقل لك في Google Play Console.

جمع البيانات غير المستخدَمة الخاصة بجيل معيَّن

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

Lock-Free MessageQueue

بالنسبة إلى التطبيقات التي تستهدف حزمة تطوير البرامج (SDK) الإصدار 37 أو الإصدارات الأحدث، تنفّذ الآن السمة الأساسية android.os.MessageQueue بنية غير مقفلة، ما يقلّل بشكل كبير من اللقطات الفائتة ويحسّن وقت بدء تشغيل التطبيق ويحسّن بشكل جذري أداء قوائم الانتظار المشغولة في سيناريوهات متعددة مؤشرات الترابط. ملاحظة: قد يؤدي ذلك إلى تعطُّل التطبيقات التي تستخدم الانعكاس في حقول وطُرق MessageQueue الخاصة.  تمت إضافة واجهتَي برمجة التطبيقات peekWhen وpoll إلى TestLooperManager لإجراء اختبارات الأجهزة بدون الاعتماد على MessageQueue الداخلية. 

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

بدءًا من الإصدار 17 من نظام التشغيل Android، لن تتمكّن التطبيقات التي تستهدف الإصدار 37 من حزمة تطوير البرامج (SDK) أو الإصدارات الأحدث من تعديل الحقول "static final"، ما يسمح لوقت التشغيل بتطبيق تحسينات الأداء بشكل أكثر فعالية. وستؤدي محاولة إجراء ذلك من خلال الانعكاس (أو الانعكاس العميق) إلى ظهور الخطأ IllegalAccessException. 

سيؤدي تعديلها من خلال مجموعة طرق SetStatic<Type>Field الخاصة بواجهة JNI إلى تعطُّل التطبيق على الفور.

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

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

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

تُعدّ المحافظة على ثقة المستخدمين أمرًا أساسيًا في منظومة Android المتكاملة. يقدّم Android 17 ميزات قوية تحمي البيانات الحسّاسة مع تبسيط تجارب المستخدمين.

خيارات الحفاظ على الخصوصية

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

  • أداة اختيار جهات الاتصال على مستوى النظام: باستخدام ACTION_PICK_CONTACTS، يمكن للتطبيقات طلب الوصول المؤقت إلى حقول معيّنة فقط (مثل البريد الإلكتروني أو رقم الهاتف) يختارها المستخدم، ما يلغي الحاجة إلى إذن READ_CONTACTS الواسع النطاق. يتوافق أيضًا بشكل كامل مع فصل ملف العمل عن الملف الشخصي.
  • نسبة العرض إلى الارتفاع القابلة للتخصيص في "أداة اختيار الصور": باستخدام PhotoPickerUiCustomizationParams، يمكنك تخصيص "أداة اختيار الصور" في النظام لعرض الصور المصغّرة في وضع "بورتريه". وهذا مثالي للتطبيقات التي تعرض دائمًا الصور والفيديوهات بالوضع العمودي، مثل تطبيقات وسائل التواصل الاجتماعي المستندة إلى الفيديو.
  • زر مشاركة الموقع الجغرافي الذي يعرضه النظام: يتيح لك زر مشاركة الموقع الجغرافي الجديد الذي يعرضه النظام تضمينه في تطبيقك، وهو يمنح إذن الوصول إلى الموقع الجغرافي الدقيق للجلسة الحالية فقط.
  • ‫EyeDropper API: تتيح واجهة برمجة التطبيقات الجديدة على مستوى النظام، ACTION_OPEN_EYE_DROPPER، لتطبيقك إنشاء أداة اختيار الألوان تعمل بنظام التشغيل، ما يتيح للمستخدم اختيار اللون من أي بكسل على الشاشة. يوفّر ذلك تجربة آمنة للحفاظ على الخصوصية عند اختيار الألوان، ما يلغي الحاجة إلى أذونات واسعة النطاق وحسّاسة لتصوير الشاشة أو بث محتوى الشاشة.
val eyeDropperLauncher = registerForActivityResult(ActivityResultContracts.StartActivityForResult()) { result ->
   if (result.resultCode == Activity.RESULT_OK) {
       val color = result.data?.getIntExtra(Intent.EXTRA_COLOR, Color.BLACK)
       // Use the picked color in your app
   }
}
fun launchColorPicker() {
   val intent = Intent(Intent.ACTION_OPEN_EYE_DROPPER)
   eyeDropperLauncher.launch(intent)
}
Eyedropper Tester.webp
اختيار لون من أي مكان على الشاشة باستخدام أداة اختيار الألوان المضمّنة في النظام

الوصول إلى الشبكة المحلية

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

الحماية من خلال كلمة المرور الصالحة لمرة واحدة (OTP) عبر الرسائل القصيرة

يوسّع نظام التشغيل Android 17 نطاق حماية كلمات المرور لمرة واحدة (OTP) المستندة إلى الرسائل القصيرة من خلال تأخير الوصول إلى الرسائل القصيرة لمدة ثلاث ساعات:

الاستثناءات: يتم استثناء تطبيقات الرسائل القصيرة التلقائية والمساعد والتطبيقات المصاحبة المرتبطة. وننصح بشدة بنقل التطبيقات إلى واجهات برمجة التطبيقات SMS Retriever أو SMS User Consent.

التشفير ما بعد الكم (PQC)

يتضمّن نظام التشغيل Android 17 الجيل التالي من الأمان من خلال التشفير:

  • دمج Keystore: يمكن للأجهزة المتوافقة إنشاء مفاتيح ML-DSA (خوارزمية التوقيع الرقمي المستندة إلى وحدة الشبكة) في أجهزة آمنة لإنتاج توقيعات آمنة من الهجمات الكمية، ويتم عرضها من خلال واجهات برمجة تطبيقات JCA العادية.
  • توقيع حِزم APK المختلط: نقدم لك الإصدار 3.2 من مخطّط توقيع حزمة APK الذي يجمع بين التواقيع التقليدية وتواقيع ML-DSA لتأمين عملية تسليم التطبيقات.

تحميل أكثر أمانًا للرموز الديناميكية المدمجة مع المحتوى

إذا كان تطبيقك يستهدف حزمة تطوير البرامج (SDK) الإصدار 37 أو إصدارًا أحدث، فإنّ ميزة الحماية التي تم طرحها في نظام التشغيل Android 14 لتحميل الرموز البرمجية الديناميكية (DCL) بشكل أكثر أمانًا لملفات DEX وJAR تشمل الآن المكتبات الأصلية. يجب وضع علامة للقراءة فقط على جميع الملفات الأصلية التي يتم تحميلها باستخدام System.load، وإلا سيُظهر النظام الخطأ UnsatisfiedLinkError.

حماية أكثر ذكاءً لكلمات المرور عند إدخالها

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

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

تتوافق أدوات حماية الخصوصية المحسّنة هذه تلقائيًا مع مكوّنات حزمة تطوير البرامج (SDK) المضمّنة في Android، وستكون متوافقة مع الإصدار 1.12 من Compose لـ SecureTextFields
 

Hide First Letter.gif
حماية أكثر ذكاءً لكلمات المرور عند إدخالها

ميزات الوسائط والكاميرا التي تتيح لصنّاع المحتوى تقديم تجربة ممتعة للمستخدمين

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

  • Eclipsa Video: معيار فيديو بنطاق عالي الديناميكية يستند إلى مواصفات SMPTE ST 2094-50 التي تقدّم بيانات وصفية جديدة لمساعدة الأجهزة على تعديل المحتوى بما يتناسب مع مساحة العرض وظروف الإضاءة المحيطة، بالإضافة إلى تحسين العرض المتزامن للمحتوى العادي والمحتوى بنطاق عالي الديناميكية.
  • تنسيق صور RAW14: يتيح لك التوافق الجديد مع تنسيق صور RAW14 التقاط صور بأعلى مستوى من التفاصيل وعمق الألوان باستخدام مستشعرات الكاميرا المتوافقة من خلال تطبيق الكاميرا الاحترافي.
  • إضافات الكاميرا التي يحدّدها المورّد: تتيح الإضافات التي يحدّدها المورّد لشركاء الأجهزة تحديد أوضاع إضافات الكاميرا المخصّصة وتنفيذها، ما يتيح الوصول إلى أفضل ميزات الكاميرا وأحدثها.
  • برنامج ترميز Extended HE-AAC: يتوفّر برنامج ترميز Extended HE-AAC جديد توفّره المنصة، ويتوافق مع معدّلات نقل البيانات المنخفضة والعالية باستخدام ترميز موحّد للكلام والصوت، ما يوفّر جودة صوت أفضل بكثير للرسائل الصوتية في ظروف النطاق الترددي المنخفض، بما في ذلك التوافق مع البيانات الوصفية الخاصة بالجهارة.
  • برنامج ترميز الفيديو المتعدّد الاستخدامات (H.266):  يتيح لمصنّعي المعدات الأصلية إضافة توافق برنامج الترميز من خلال تحديد نوع MIME video/vvc في MediaFormat، وإضافة ملفات تعريف VVC جديدة في MediaCodecInfo، ودمج التوافق في MediaExtractor.
  • نوع جهاز الكاميرا: واجهات برمجة تطبيقات جديدة تستعلم عن نوع الجهاز الأساسي لتحديد ما إذا كانت الكاميرا عبارة عن جهاز مدمج أو كاميرا ويب خارجية متصلة بمنفذ USB أو كاميرا افتراضية.
  • الجودة الثابتة لتسجيل الفيديو: يضبط setVideoEncodingQuality في MediaRecorder وضع الجودة الثابتة (CQ) لبرامج ترميز الفيديو لضمان دقة مرئية موحّدة في الفيديو بأكمله.

تحسين التوافق مع سماعات الأذن الطبية

  • التوافق مع سماعات الأذن الطبية التي تعمل بتقنية Bluetooth LE Audio: يتضمّن Android الآن فئة أجهزة محدّدة لسماعات الأذن الطبية التي تعمل بتقنية Bluetooth Low Energy (BLE) Audio مع الثابت الجديد AudioDeviceInfo.TYPE_BLE_HEARING_AID، ما يتيح لتطبيقك التمييز بين سماعات الأذن الطبية وسماعات الرأس العادية لتوفير تجربة مخصّصة للمستخدمين الذين يستعينون بأجهزة مساعدة على السمع.
  • توجيه الصوت الدقيق لسماعات الأذن الطبية: يتيح نظام التشغيل Android 17 للمستخدمين إدارة مكان تشغيل أصوات النظام المحدّدة بشكل مستقل. يمكن للمستخدمين اختيار توجيه الإشعارات ونغمات الرنين والمنبّهات إلى سماعات الأذن الطبية المتصلة أو مكبّر الصوت المدمج في الجهاز، ما يساعد في تجنُّب المقاطعات غير المرغوب فيها في الأذن مع الحفاظ على اتصال بلوتوث لتطبيقات إدارة سماعات الأذن الطبية.

‫CameraX وMedia3

تم تعديل CameraX وMedia3 ليتوافقا مع Android 17. تساعد هذه المكتبات في إنجاز المهام الصعبة، وتسهّل عملية تطوير الوسائط، وتبسّط إنشاء تطبيقات موثوقة لالتقاط الصور بالكاميرا،  وتشغيل الوسائط بسلاسة، وتقديم تجارب إبداعية ومعقّدة في مجال التعديل. 

لقد أطلقنا مهارة وكيل يمكنها نقل عمليات تنفيذ الكاميرا القديمة على Android (واجهات برمجة التطبيقات Camera1 أو Camera2 الأولية) إلى CameraX.  

ملاحظة: عليك تحديث إصدار CameraX إلى 1.5.2 أو 1.6.0 أو إصدار أحدث لتجنُّب حدوث عُطل مرتبط بوضع النطاق الديناميكي المضاف على أجهزة Android 17.

جهِّز تطبيقاتك ومكتباتك وأدواتك ومحرّكات الألعاب.

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

يتضمّن الاختبار تثبيت تطبيقك على الإصدار العلني أو تطبيق اختبار يستخدم مكتبتك أو محركك من خلال Google Play أو وسائل أخرى على جهاز أو محاكي يعمل بالإصدار 4 من الإصدار التجريبي 17 من نظام التشغيل Android. عليك إكمال جميع مسارات تطبيقك والبحث عن مشاكل وظيفية أو متعلّقة بواجهة المستخدم. يحتوي كل إصدار من Android على تغييرات في النظام الأساسي تعمل على تحسين الخصوصية والأمان وتجربة المستخدم بشكل عام. راجِع التغييرات في السلوك التي تؤثّر في التطبيقات التي تعمل على و تستهدف الإصدار 17 من نظام التشغيل Android للتركيز على الاختبار، بما في ذلك ما يلي:

  • إمكانية تغيير الحجم على الشاشات الكبيرة: بعد استهداف الإصدار 17 من نظام التشغيل Android (الإصدار 37 من حزمة تطوير البرامج (SDK))، لن يعود بإمكانك إيقاف إمكانية الحفاظ على قيود الاتجاه وإمكانية تغيير الحجم ونسبة العرض إلى الارتفاع على الشاشات الكبيرة.
  • تحميل الرموز البرمجية الديناميكية: إذا كان تطبيقك يستهدف حزمة تطوير البرامج (SDK) 37 أو إصدارًا أحدث، فإنّ ميزة الحماية التي تم طرحها في الإصدار 14 من نظام التشغيل Android لتحميل الرموز البرمجية الديناميكية (DCL) بشكل أكثر أمانًا لملفات DEX وJAR تشمل الآن المكتبات الأصلية. يجب وضع علامة القراءة فقط على جميع الملفات الأصلية التي يتم تحميلها باستخدام System.load(). وفي حال عدم توفّرها، يعرض النظام الخطأ UnsatisfiedLinkError.
  • تفعيل ميزة "شفافية الشهادات" تلقائيًا: يتم تفعيل ميزة "شفافية الشهادات" (CT) تلقائيًا (في نظام التشغيل Android 16، تتوفّر ميزة "شفافية الشهادات" ولكن كان على التطبيقات تفعيلها).
  • وسائل الحماية على الشبكة المحلية: يتم حظر الوصول إلى الشبكة المحلية تلقائيًا للتطبيقات التي تستهدف الإصدار 37 من حزمة تطوير البرامج (SDK) أو إصدارًا أحدث. يمكنك التبديل إلى استخدام أدوات اختيار تحافظ على الخصوصية إذا أمكن ذلك، واستخدام إذن ACCESS_LOCAL_NETWORK الجديد للوصول الواسع النطاق والدائم.
  • تحسين أمان الصوت في الخلفية: بدءًا من Android 17، يفرض إطار عمل الصوت قيودًا على التفاعلات مع الصوت في الخلفية، بما في ذلك تشغيل الصوت وطلبات التركيز على الصوت وواجهات برمجة التطبيقات لتغيير مستوى الصوت. استنادًا إلى ملاحظاتك، أجرينا بعض التغييرات منذ الإصدار التجريبي 2، بما في ذلك حظر الوصول إلى targetSDK أثناء فرض تشغيل خدمة FGS أثناء الاستخدام وإعفاء صوت التنبيه. تتوفّر التفاصيل الكاملة في الإرشادات المعدَّلة.
  • بيان الوصول إلى وحدة المعالجة العصبية: يجب أن تُدرِج التطبيقات التي تستهدف الإصدار 17 من نظام التشغيل Android  FEATURE_NEURAL_PROCESSING_UNIT في ملف البيان الخاص بها لتجنُّب حظر وصولها إلى وحدة المعالجة العصبية. ويشمل ذلك التطبيقات التي تستخدم LiteRT NPU delegate وحِزم تطوير البرامج الخاصة بمورّدين معيّنين، بالإضافة إلى NNAPI المتوقّفة نهائيًا.

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

من المفترض أن يتلقّى جهاز Pixel الإصدار 17 من نظام التشغيل Android قريبًا إذا لم يسبق لك الانضمام إلى برنامج Android Beta. إذا لم يكن لديك جهاز Pixel، يمكنك استخدام صور نظام 64 بت مع "محاكي Android" في "استوديو Android". إذا كنت تستخدم حاليًا الإصدار التجريبي 4.1 من Android 17 ولم تستخدم بعد الإصدار التجريبي من Android 17 QPR1، يمكنك إلغاء الاشتراك في البرنامج وسيتم بعد ذلك توفير نسخة الإصدار من Android 17 عبر شبكة غير سلكيّة.

الحصول على الإصدار التجريبي من Android 17 على أجهزة الشركاء

يتوفّر الإصدار التجريبي من Android 17 على الهواتف والأجهزة اللوحية والأجهزة القابلة للطي من الشركاء، بما في ذلك Honor وiQOO وLenovo وOnePlus وOPPO وRealme وSharp وvivo وXiaomi.

android-17-beta-partners.jpg

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

نشكر مجددًا جميع المشاركين في برنامج الاستخدام المبكّر للمطوّرين وبرنامج الإصدار التجريبي من Android. ونتطلّع إلى معرفة كيف ستستفيد تطبيقاتك من التحديثات في Android 17، ونخطّط لإطلاعك على آخر الأخبار بوتيرة سريعة في المستقبل.

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

من تأليف:

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