المنتدى

المدونة 121 من Now in Android

مدّة القراءة: 9 دقائق
عرض الملف الشخصي لـ "دانيال غالباين"
Daniel Galpin مسؤول علاقات المطوّرين

مرحبًا بك في Now in Android، دليلك المستمر لمعرفة الميزات الجديدة والمهمة في عالم تطوير تطبيقات Android.

يمكنك مواصلة القراءة للتعرّف على الإصدار التجريبي الأول من Android 16 QPR2، وتحديث Narwhal من "استوديو Android" الذي يحتوي على ميزات جديدة، والإصدار 1.9 من Jetpack Compose، والإصدار 1.8 من Media 3، وميزة "تحويل الشكل" وميزة "الملء التلقائي" في Compose، وغير ذلك الكثير.

يمكنك مشاهدة ملخّص فيديو:

 

 

لدينا أيضًا بودكاست.

ولكن هذا المنشور يحتوي على المعلومات الأكثر تفصيلاً، لذا تابع القراءة!

الإصدار التجريبي الأول من Android 16 QPR2 متاح الآن ✨

يتوفّر الآن الإصدار التجريبي الأول من Android 16 QPR2، وهو أول إصدار من Android يتضمّن إصدارًا ثانويًا من حزمة تطوير البرامج (SDK) لنظام التشغيل Android. يمكن أن تتضمّن إصدارات حِزم تطوير البرامج (SDK) الثانوية واجهات برمجة تطبيقات جديدة توسّع ميزات النظام الأساسي، ولكن لا يمكنها إجراء تغييرات على السلوك الخاضع لـ targetSdkVersion، ما يقلّل من مقدار اختبار تطبيقاتك مقارنةً بها.

sdk-release-graph.webp

يمكنك استدعاء واجهات برمجة التطبيقات الجديدة من خلال التحقّق من SDK_INT_FULL مقابل تعداد VERSION_CODES_FULL:

if (Build.VERSION.SDK_INT_FULL >= Build.VERSION_CODES_FULL.BAKLAVA_1) {
  // Call new APIs from the Android 16 QPR2 release
}

لا يمكن استخدام VERSION_CODES_FULL في سمات بيان uses-sdk.

في ما يلي بعض التغييرات الرئيسية في الإصدار التجريبي الأول من QPR2.

واجهة المستخدم وتجربة النظام وتسهيل الاستخدام:

  • يوفّر خيار "توسيع المظهر الداكن" إمكانية عكس ألوان التطبيقات ذات المظهر الفاتح بذكاء للمستخدمين الذين يفضّلون المظهر الداكن.
  • يمكن للنظام إنشاء رموز تطبيقات مستوحاة من موضوع معيّن تلقائيًا إذا لم يوفّر تطبيقك طبقة أحادية اللون.
  • تُبقي جلسات الاختيار التفاعلية واجهة مستخدم تطبيقك نشطة أثناء فتح صفحة المشاركة، وذلك باستخدام ChooserManager وChooserSession.
  • تتيح واجهة برمجة التطبيقات الجديدة لنقل البيانات نقل البيانات بشكل أكثر موثوقية وأمانًا بين Android وiOS، ما يتطلّب تعديل ملف XML الخاص بقواعد استخراج البيانات في تطبيقك وتنفيذ BackupAgent.
  • تمت توسعة حزمة android.graphics.pdf لتتيح إضافة التعليقات التوضيحية إلى مستندات PDF وتعديلها من خلال PdfRenderer.Page.
  • ViewConfiguration أصبحت القيم الآن مخصّصة للأجهزة الافتراضية الفردية، لذا عليك نقل البيانات إلى ViewConfiguration.get(context) في سيناريوهات الشاشات المتعددة.
  • يمكنك التحكّم بشكل أكثر دقة في التجاوب الحسّي من خلال تحديد VibrationAttributes باستخدام View.performHapticFeedback(HapticFeedbackRequest)
  • يمكن الآن تخصيص مربّعات "الإعدادات السريعة" لفئات محدّدة مسبقًا في ملف AndroidManifest.xml.

الوسائط والصوت:

  • فك ترميز البرامج لـ "نماذج وتنسيقات الصوت الغامر" (IAMF)، وهو تنسيق صوت مكاني مفتوح المصدر
  • تم دمج ميزة "مشاركة الصوت الشخصي" لأجهزة Bluetooth LE Audio مباشرةً في "أداة التبديل بين أجهزة التشغيل" في النظام.
  • يمكن للمستخدمين التحكّم في سطوع محتوى HDR باستخدام شريط تمرير السطوع في محتوى HDR/SDR
  • يمكن لميزات "أداة اختيار الصور" الإضافية إبراز ألبومات أو طلبات بحث معيّنة.

إمكانية الاتصال:

  • تتيح لك تحسينات "أداة إدارة الأجهزة المصاحبة" (CDM) توفير رموز مخصّصة للأجهزة، والاستماع إلى طلب معاودة الاتصال EVENT_ASSOCIATION_REMOVED، وتفعيل ميزة "التحقّق من التطبيقات" على مستوى التطبيقات باستخدام DeviceId.
  • تشمل تحديثات البلوتوث إتاحة البحث السلبي عن BluetoothLeScanner (ScanSettings.SCAN_TYPE_PASSIVE)، وأسباب فقدان الاتصال (BluetoothDevice.EXTRA_BOND_LOSS_REASON)، واسترداد معرّفات UUID للخدمة مباشرةً (BluetoothDevice.EXTRA_UUID_LE).
  • تتيح تحديثات Wi-Fi RTT Ranging (RttStationRangingParams) تحديد النطاق مقابل المحطات.
  • تتوفّر واجهة برمجة تطبيقات PhoneNumberManager جديدة لتحليل أرقام الهواتف والتحقّق من صحتها من عناوين IMS P-Associated-URI.
  • تتيح تحسينات خصوصية شبكة MediaRouter البث عبر وسائط جديدة، مثل البلوتوث والنطاق الفائق العرض (UWB). لذا، عليك استخدام "أداة تبديل الإخراج" في النظام أو طلب الحصول على أذونات NEARBY_DEVICES لأدوات الاختيار المخصّصة داخل التطبيق.

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

  • تتوفّر حالة أمان جديدة على مستوى النظام، وهي "قفل الجهاز بأمان"، والتي تقفل الأجهزة وتتطلّب المصادقة الأساسية لفتح قفلها.
  • تمت إضافة زر تبديل موجّه للمستخدمين في ميزة "الحماية من سرقة الهاتف" لتفعيل ميزة "القفل عند تعذّر المصادقة" أو إيقافها.

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

  • تتيح لك واجهات برمجة التطبيقات الجديدة في AppWidgetManager طلب البحث عن مقاييس التفاعل مع التطبيقات المصغّرة.
  • ستتلقّى الآن التطبيقات القابلة للتصحيح والمثبَّتة عبر ADB تحذيرات مبكرة بشأن التوافق مع حجم الصفحة البالغ 16 كيلوبايت.
  • يضيف ProfilingManager إمكانية استخدام عوامل تشغيل جديدة لإنشاء الملفات الشخصية التي يبدأها النظام وrequestRunningSystemTrace لتسجيل عمليات التتبُّع في الخلفية.
  • يوفّر مفتاح التبديل "تسجيل الطباعة المطوَّل" في "خيارات المطوّرين" معلومات إضافية حول تصحيح الأخطاء في إطار عمل الطباعة على Android.
  • يمكن إجراء اختبارات أكثر فعالية لتجارب أجهزة الكمبيوتر المكتبي والشاشات المتعددة من خلال واجهات برمجة التطبيقات الجديدة UiAutomation المخصّصة لأخذ لقطات الشاشة على الشاشات غير التلقائية وAccessibilityWindowInfo.refresh العامة.
  • تمت إضافة إمكانية استخدام واجهة برمجة التطبيقات مع مكتبة androidx.core:core-backported-fixes الجديدة.
  • أصبحت تطبيقات واجهة المستخدم الرسومية (GUI) متوافقة الآن مع Terminal في Linux
  • يتيح WindowInspector.addGlobalWindowViewsListener إرسال إشعارات فورية بشأن تغيير طريقة العرض الجذرية.

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

أصبح الإصدار الجديد من استوديو Android Narwhal ثابتًا، ويمكنك الآن بدء استخدام "وضع الوكيل" 🐳

narwhal.webp

أصبح تحديث ميزات استوديو Android Narwhal مستقرًا الآن، وتشمل الميزات والتحسينات الجديدة ما يلي:

  • ميزة Agent Mode ضمن "Gemini في استوديو Android" متاحة لمهام الترميز المتعدّدة المستويات
  • قواعد مكتبة الطلبات تتيح لك تخصيص مخرجات الذكاء الاصطناعي في Gemini لتلبية احتياجات مشروعك.
  • تستخدم ميزة تحويل واجهة المستخدم باستخدام Gemini واجهة مستخدم بلغة طبيعية لتكرار واجهة مستخدم Compose.
  • دعم تطوير التجارب الغامرة باستخدام محاكي Android XR المضمّن، ونموذج XR جديد، و"أداة فحص التنسيق" المضمّنة في XR
  • الوصول الموسّع إلى الأجهزة من خلال "مختبرات أجهزة شركاء Android" في ميزة "استعراض التطبيقات على أجهزة Android"
  • تحسين معاينات Compose من خلال تحسين التنقّل في الرموز البرمجية وأداة اختيار معاينة Compose الجديدة
  • تفعيل برنامج التجميع K2 Kotlin تلقائيًا لتحسين أداء عملية الإنشاء
  • أدوات حجم الصفحة 16 كيلوبايت مع تحذيرات Lint والتحليل والمحاكي لمساعدتك في الاستعداد للأجهزة القادمة التي تستخدم حجم الصفحة 16 كيلوبايت.

ميزة "بث جهاز Android" من Firebase

device-streaming.webp

أطلقت ميزة "عرض شاشة جهاز Android"، المستندة إلى Firebase، دعمًا ثابتًا لميزة Android Partner Device Labs، ما يتيح لك الاتصال عن بُعد بأجهزة Android المضيفة لدى شركاء المصنّعين الأصليين للأجهزة، بما في ذلك Samsung وXiaomi وOPPO وOnePlus وvivo.

تسريع عملية التطوير من خلال إصدارات شهرية من "استوديو Android"، أي بمعدّل مرتين أكثر من السابق

accelarating-releases.webp

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

الميزات الجديدة في إصدار أغسطس 2025 من Jetpack Compose 🚀

jetpack-compose.webp

أصبح الإصدار الثابت من Jetpack Compose لشهر أغسطس 2025 (الإصدار 1.9) متاحًا الآن. يقدّم هذا الإصدار Modifier.dropShadow وModifier.innerShadow لعرض تأثيرات ظل المربّع. يتيح لك المعدّلان الجديدان onVisibilityChanged وonFirstVisible تتبُّع مستوى ظهور العناصر لتحديثات واجهة المستخدم أو تسجيل مرّات الظهور. يمكنك تطبيق أنماط منسّقة ضمن OutputTransformation باستخدام TextFieldBuffer.addStyle لتحويل النص.

أصبحت العناصر الأساسية في LazyLayout مستقرة الآن، ويمكنك تحديد LazyLayoutCacheWindow لتحسين أداء Lazy List وGrid من خلال ميزة الجلب المُسبَق المحسّنة. تتيح واجهة برمجة التطبيقات Scrollable2D التمرير ثنائي الأبعاد، بما في ذلك التمرير السريع والتمرير المتداخل، مع تحسينات مختلفة على إمكانية التشغيل التفاعلي للتمرير والتمرير المتداخل مع "طرق العرض". توفّر واجهة برمجة التطبيقات (Composer.setDiagnosticStackTraceEnabled) التي تتطلب الموافقة تفاصيل أكثر عن موقع العُطل في تتبُّع تسلسل استدعاء الدوال البرمجية، ويُنصح باستخدامها في الإصدارات المخصّصة لتصحيح الأخطاء فقط. تتوفّر تعليقات توضيحية جديدة من النوعين @RememberInComposition و@FrequentlyChangingValue، بالإضافة إلى عمليات التحقّق من Lint المرتبطة بها، في مكتبة تعليقات توضيحية جديدة لوقت التشغيل. يمكن تخصيص قوائم السياق باستخدام Modifier.appendTextContextMenuComponents وModifier.filterTextContextMenuComponents. يجب الآن استخدام الإصدار 8.8.2 أو إصدار أحدث من المكوّن الإضافي لنظام Gradle المتوافق مع Android ‏ (AGP) أو Lint.

الإصدار 1.8.0 من Media3: ما الجديد؟ 🚀

media3.webp

يتوفّر الآن الإصدار 1.8.0 من Media3، والذي يقدّم العديد من الميزات والتحسينات الجديدة. يوفّر ExoPlayer وضع التقديم والترجيع لعمليات البحث المتكررة التي يجريها المستخدم، ويمكنك تفعيله من خلال ExoPlayer.setScrubbingModeEnabled. HlsInterstitialsAdsLoader يتيح الآن أحداث البث المباشر لإدراج الإعلانات من خلال الخادم.

تم تعديل MetadataRetriever للسماح لك باسترداد مُدد ملفات الوسائط بدون تشغيلها. بالنسبة إلى Transformer، يقدّم الإصدار عمليات قطع أسرع باستخدام قوائم تعديل MP4 مع experimentalSetMp4EditListTrimEnabled وتحسينات برامج الترميز الخاصة بشريحة التعريف من خلال CodecDbLite، والتي يتم تفعيلها من خلال طلب setEnableCodecDbLite على DefaultEncoderFactory.Builder.

تشمل التحديثات الإضافية إتاحة التنزيل الجزئي في Downloader باستخدام PreCacheHelper، والتوجيه التلقائي للصوت في الواقع الممتد في ExoPlayer، وتفاعلات MediaCodec أكثر كفاءة. تحافظ وحدة MediaSession الآن على ظهور الإشعارات لفترة أطول تلقائيًا، ويعرض التطبيق التجريبي لجلسة الوسائط وظيفة استئناف التشغيل. يعرض تطبيق Composition التجريبي الجديد، الذي تم إنشاؤه باستخدام Kotlin وCompose، ميزات متقدّمة لتعديل الفيديوهات المتعددة الأصول.

مقالات 📚

‫‎#WeArePlay: لنتعرّف على مطوّري البرامج الذين يسعون إلى بناء عالم أكثر استدامة

weareplay.webp

تسلّط مبادرة ‎#WeArePlay الضوء على تطبيقات وألعاب Android التي تعالج التحديات البيئية. لعبة BoRa — Iguaçu National Park، التي طوّرتها "مايلا" و"فلافيا" و"أندريا" و"أريان"، تقدّم تجارب تفاعلية ممتعة وسهلة الاستخدام للتعرّف على الطبيعة أثناء زيارة المتنزّه. يتيح تطبيق CyberTracker الذي طوّره "لويس" و"جاستن" للمتعقّبين الأصليين غير الملمّين بالقراءة والكتابة تسجيل بيانات التنوّع البيولوجي من خلال واجهة مستندة إلى الرموز، ما يدعم جهود الحفاظ على البيئة. أخيرًا، تقدّم مؤسسة Earth5R، التي شارك في تأسيسها "بهاراتي" و"سوراب"، برامج تعليمية بيئية وتتيح للمستخدمين فرص تدريب ومشاريع لتطوير مهاراتهم في مجال الاقتصاد الأخضر.

ما هي تقنية النطاق العالي الديناميكية (HDR)؟ 🌟

hdr.webp

تتيح تقنية النطاق العالي الديناميكية (HDR) لمطوّري برامج Android زيادة أعلى درجة سطوع مقارنةً بالنطاق الديناميكي العادي (SDR)، ما يوفّر دقة مرئية محسّنة. يتيح Android استخدام تقنية النطاق العالي الديناميكية (HDR) للفيديوهات والصور، بما في ذلك تقنيات مثل UltraHDR للتوافق مع الأنظمة القديمة.

فهم الألوان يتضمن ثلاثة مكونات:

  • عمق البت: يحدّد دقة تمثيل الألوان، ويوفّر العمق الأعلى انتقالات أكثر سلاسة.
  • دالة النقل: تربط قيم البكسل الرقمية بدرجة السطوع أو اللون المعروضَين، وتعدّل الاستجابة البصرية البشرية غير الخطية. ومن الأمثلة على ذلك sRGB وHLG وPQ.
  • سلسلة الألوان: تمثّل نطاق الألوان التي يمكن للجهاز إعادة إنتاجها.

المفاهيم الخاطئة الشائعة حول تقنية HDR:

  • الألوان النابضة بالحياة: كانت نطاقات الألوان الأوسع، مثل Display P3 وAdobe RGB، متاحة قبل تقنية النطاق العالي الديناميكية، ولا تزال معظم الشاشات تقتصر على P3، حتى مع محتوى BT.2020.
  • تباين أكبر/تفاصيل أفضل في الأجزاء السوداء: لا توفّر تقنية HDR بطبيعتها أجزاءً سوداء داكنة أكثر من تقنية SDR على الشاشة نفسها. وتوفّر شاشات OLED تباينًا لا نهائيًا لكليهما. على الرغم من أنّ ميزة PQ تخصص المزيد من وحدات البت للمناطق الداكنة، إلا أنّها ليست ميزة HDR عامة.
  • عمق بت أعلى: على الرغم من أنّ بعض ملفات تعريف الفيديو بنطاق عالي الديناميكية (مثل HDR10) تستخدم عمليات بث 10 بت أو 12 بت، فإنّ ذلك يقتصر على ملفات التعريف هذه وليس متأصلاً في النطاق العالي الديناميكية نفسه، كما أنّ عمق البت الأعلى شائع أيضًا في تنسيقات الصور الأخرى.

تشير تقنية HDR في المقام الأول إلى أعلى درجة سطوع. يتم تعريف "نطاق HDR" على أنّه منطقة عائمة بالنسبة إلى نطاق SDR. في حين أنّ فيديوهات HDR التقليدية غالبًا ما ترمز إلى نطاق سطوع ثابت، تستخدم الشاشات الحديثة نطاق سطوع ديناميكي، ما قد يؤدي إلى اختلافات في الجودة. وتوفّر تكنولوجيات مثل "دقة HDR فائقة" و"خرائط الكسب" بدائل مع استخدام فعّال لوحدات البت. تستخدم حزمة تطوير واجهة المستخدم في Android واجهة برمجة التطبيقات extendedRangeBrightness لتقديم تجارب HDR، حتى مع RGBA_8888.

الفيديوهات 📹

العناصر المشتركة المتقدّمة مع تحويل الشكل | نصائح حول Jetpack Compose

تتيح حزمة Jetpack Compose الآن استخدام انتقالات متقدّمة للعناصر المشتركة، وتحويل الأشكال المعقّدة، واستخدام صور متحركة للكشف عن العناصر. يمكن للمطوّرين ضبط SharedTransitionLayout على المستوى الأعلى للتطبيق واستخدام Modifier.sharedBounds لربط العناصر.

تحويل الأشكال هي ميزة جديدة رئيسية، يتم تحقيقها من خلال الاستفادة من مكتبة أشكال الرسومات AndroidX في Material 3. يتضمن ذلك إنشاء كائن Morph بأشكال بداية/نهاية محددة، وتوجيه تقدمه باستخدام animateFloat (من AnimatedVisibilityScope)، وتطبيقه كمقطع عبر OverlayClip مخصص. تستخدم تأثيرات الكشف skipToLookaheadSize وskipToLookaheadPosition. تتوافق أيضًا جميع هذه الصور المتحركة المتقدّمة مع إيماءات إظهار شاشة الرجوع.

‫Gemini المتعدّد الوسائط في "استوديو Android": تطوير واجهة المستخدم المستنِدة إلى الذكاء الاصطناعي

يساعد الذكاء الاصطناعي من Gemini في "استوديو Android" في تطوير واجهة المستخدم من خلال إنشاء رموز برمجية من التصاميم (بما في ذلك تحويل الصور إلى رموز برمجية)، وإنشاء معاينات Compose باستخدام بيانات اصطناعية، وتحسين واجهة المستخدم الحالية من خلال أوامر مباشرة.

استخدام حزمة تطوير برامج (SDK) مفعّلة أثناء التشغيل

يقدّم Android 14 ميزة SDK Runtime، وهي تكنولوجيا جديدة تعزل حِزم تطوير البرامج (SDK) التابعة لجهات خارجية في وضع الحماية الآمن والمنفصل لتعزيز الخصوصية والأمان.

بالنسبة إلى المطوّرين:

  • يتم تنفيذ حِزم SDK المفعّلة أثناء التشغيل في هذه العملية المنفصلة.
  • تعمل حِزم SDK المتوافقة مع بيئة التشغيل كوسطاء داخل تطبيقك.
  • تحميل حِزم تطوير البرامج (SDK) لبيئة التشغيل المقيَّدة باستخدام SdkSandboxManagerCompat، مع مراعاة القيود (مثل التشغيل في المقدّمة والتحميل لمرة واحدة)
  • تسهّل أدوات Shim الاتصال المنخفض المستوى بين العمليات.
  • عرض واجهة المستخدم من حِزم SDK لبيئة التشغيل المقيَّدة باستخدام SandboxedSdkView وSandboxedUiAdapter
  • يمكنك بدء الأنشطة من SDK Runtime باستخدام SdkActivityLauncher.

تحويل الأشكال في Material 3 على WearOS | نصائح حول Jetpack Compose

تسهّل الآن حزمة Wear OS Material 3 for Compose عملية تحويل الأشكال. يمكن للمطوّرين بسهولة إضافة تغييرات في الأشكال المتحركة إلى الأزرار الدائرية باستخدام IconButtonDefaults.animatedShapes، وإنشاء مجموعات أزرار تحرّك تغييرات العرض باستخدام المكوّن ButtonGroup وModifier.animateWidth()، وإنشاء قوائم تمرير عمودية (TransformingLazyColumn) حيث يتم تغيير حجم العناصر وتحويلها باستخدام TransformationSpec عند اقترابها من حواف الشاشة.

إصدارات AndroidX 🚀

في ما يلي ملخّص لتغييرات AndroidX، مع إعطاء الأولوية للتغييرات الأكثر صلة بمطوّري تطبيقات Android:

التغيير العام المؤثر في مكتبات Compose:

  • رفع الحد الأدنى التلقائي لإصدار حزمة تطوير البرامج (SDK) minSdk إلى المستوى 23 من واجهة برمجة التطبيقات: بالنسبة إلى androidx.compose animation وfoundation وmaterial وruntime وui، تم رفع الحد الأدنى التلقائي لإصدار حزمة تطوير البرامج (SDK) من المستوى 21 إلى المستوى 23 من واجهة برمجة التطبيقات. هذا يعني أنّه إذا كنت تستخدم أحدث إصدارات ألفا من مكتبات Compose هذه، سيتطلّب تطبيقك ضمنيًا الإصدار 6.0 من نظام التشغيل Android (Marshmallow) أو إصدارًا أحدث.

أهم التغييرات لمطوّري Compose:

  • واجهة برمجة تطبيقات جديدة للاحتفاظ بالبيانات (Compose Runtime): تقدّم واجهة برمجة تطبيقات للاحتفاظ بالبيانات مشابهة لـ rememberSaveable، ولكن للقيم التي تخرج من التسلسل الهرمي للإنشاء بدون أن يتم تسلسلها. ويكون عمرها أقصر من القيم المحفوظة وتعمل بشكل مشابه لـ ViewModel، ما يوفّر طريقة جديدة لإدارة الحالة للدوال المركّبة التي قد تدخل في التركيب وتخرج منه.
  • تحسينات على ميزة "انتقالات العناصر المشتركة" (Compose Animation وواجهة المستخدم): تتيح واجهات برمجة التطبيقات الجديدة تفعيل العناصر المشتركة أو إيقافها ديناميكيًا، ومراعاة الانتقالات الجارية، وضبط حدود مستهدَفة بديلة عند التخلص من عنصر مشترك. يتوفّر أيضًا Modifier.skipToLookaheadPosition جديد لتثبيت التنسيقات.
  • تحسين الجلب المُسبَق في Pager (مكتبة Compose Foundation): تستخدم استراتيجية الجلب المُسبَق في Pager الآن "نافذة ذاكرة التخزين المؤقت" (حجم إطار عرض واحد) بدلاً من عنصر واحد، ويتم تفعيل الجلب المُسبَق الأولي تلقائيًا. يتم أيضًا الاحتفاظ بالعناصر لفترة أطول لتسهيل التمرير السلس.
  • تحسين معالجة التركيز للماوس/لوحة اللمس (Compose Foundation وواجهة المستخدم): سيزيل ComposeViews الآن التركيز تلقائيًا عند حدوث حدث الضغط على المؤشر (من الماوس أو لوحة اللمس) خارج العقدة التي يتم التركيز عليها. ويمكن إيقاف هذا الخيار.
  • مستطيلات التركيز القابلة للتخصيص (Compose Foundation): يتيح لك FocusProperties الآن تحديد منطقة تركيز مخصّصة بدلاً من استخدام المربّع المحيط تلقائيًا، ما يحسّن التنقّل في التركيز ومنطق "الإبقاء في العرض" في الحاويات القابلة للتمرير.
  • دالة LifecycleOwner المركّبة (Lifecycle): تتيح دالة مركّبة جديدة إنشاء نُسخ LifecycleOwner ذات نطاق محدّد مباشرةً داخل شجرة واجهة المستخدم. ويُعدّ ذلك مفيدًا بشكل خاص لإدارة مراحل نشاط المكوّنات بشكل مستقل، وللمكتبات مثل Navigation.
  • إتاحة الأنواع التي يمكن أن تقبل القيم الفارغة في SavedStateHandle (Lifecycle وSavedState): تم تبسيط عملية حفظ واستعادة الخصائص القابلة لأن تكون فارغة من خلال إتاحة ذلك في SavedStateHandle وSavedStateRegistryOwner.
  • ميزة جديدة LineHeightStyle.Mode.Tight (Compose Foundation وواجهة المستخدم): يساعد وضع "الضيق" الجديد في فرض ارتفاعات أصغر للأسطر، حتى لو كان ذلك يعني احتمال قطع الرموز الأطول، ما يوفّر تحكّمًا أكثر دقة في تنسيق النص.
  • النقر مرّتين لاختيار كلمة (Compose Foundation): تمت إضافة ميزة النقر مرّتين لاختيار الكلمات في SelectionContainer وBasicTextField.
  • تغييرات في سلوك WindowInsets (واجهة مستخدم Compose وFoundation):
    ◦ واجهة برمجة تطبيقات WindowInsets.cutoutPath جديدة للحصول على مسار الصورة المقطوعة للشاشة.
    ◦ تمت إزالة العلامة isWindowInsetsDefaultPassThroughEnabled، وتم ضبط WindowInsets تلقائيًا على عدم الاستهلاك، ما يسمح لعناصر View الثانوية بتلقّيها.
  • AndroidView requestRectangleOnScreen إصلاح (Compose Foundation): يتم الآن نشر الطلبات التي يتم إجراؤها من خلال AndroidViews (مثل EditText محاولة البقاء على الشاشة) بشكل صحيح إلى Compose.
  • تحسين التمرير الثنائي الأبعاد بعجلة الماوس (Compose Foundation وUI): تم تحسين دعم أحداث التمرير الثنائي الأبعاد بعجلة الماوس، مع توفير واجهات برمجة تطبيقات جديدة للاختبار وعلامة للتحكّم في السلوك.

المكتبات والأدوات المساعدة الجديدة:

  • androidx.core:core-backported-fixes (مكتبة جديدة): تتيح هذه المكتبة الجديدة للمطوّرين التحقّق من تطبيق إصلاحات الأخطاء المُلحّة (مثل المشاكل على مستوى النظام الأساسي، كأخطاء معيّنة في الكاميرا) على الجهاز. ويتيح ذلك تقديم تجارب مختلفة للمستخدمين استنادًا إلى ما إذا تم حلّ خطأ معروف أم لا.

تغييرات أخرى مهمة:

  • نشاط الألعاب والإدخال: تمت إضافة دعم تلقائي لصفحات بحجم 16 كيلوبايت ودعم الماوس في GameActivity.
  • تحديد موضع تلميحات Material3: تمت إضافة المزيد من موفّري المواضع لتلميحات الشاشة، ما يتيح وضعها أعلى نقطة الارتساء أو أسفلها أو يسارها أو يمينها.
  • إصلاحات DatePicker Material3: يضمن هذا الإصلاح أن يلتزم DatePicker بإعدادات اللغة الخاصة به لتنسيق الأرقام، كما يحلّ مشاكل العرض من اليمين إلى اليسار.
  • إتاحة السمة display_override في تطبيقات الويب الموثوقة (المتصفّح): تمت إتاحة السمة display_override في ملف بيان تطبيقات الويب الموثوقة، ما يوفّر مزيدًا من التحكّم في عرض هذه التطبيقات.
  • فتح عنوان URL الأولي في تطبيق خارجي (متصفّح): تمت إضافة Intent للسماح بفتح عنوان URL الأولي لتطبيق ويب موثوق به في متصفّح خارجي.

Android Developers Backstage

عاد بودكاست Android Developers Backstage بحلقة جديدة.

الملء التلقائي في Compose

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

 

والآن… 👋

هذا كل ما لدينا في هذه الحلقة، حيث تناولنا الإصدار التجريبي الأول من Android 16 QPR2، ومجموعة الميزات الجديدة في استوديو Android Narwhal، والإصدار 1.9 من Jetpack Compose، والإصدار 1.8 من Media 3، وميزة Shape Morphing وميزة "الملء التلقائي" في Compose، وغير ذلك الكثير.

يُرجى التحقّق مرة أخرى قريبًا لمعرفة آخر الأخبار من عالم مطوّري برامج Android.

من كتابة:
متابعة القراءة