Android 17 اليوم، حقّق رسميًا ثباتًا في النظام الأساسي مع الإصدار التجريبي 3. ويعني ذلك أنّ سطح واجهة برمجة التطبيقات أصبح ثابتًا، ويمكنك إجراء اختبار التوافق النهائي ونشر تطبيقاتك التي تستهدف Android 17 على "متجر Play". بالإضافة إلى ذلك، يقدّم الإصدار التجريبي 3 مجموعة من الإمكانات الجديدة لمساعدتك في إنشاء تطبيقات أفضل وأكثر أمانًا وتكاملاً.
جهِّز تطبيقاتك ومكتباتك وأدواتك ومحرّكات الألعاب.
إذا كنت تطوّر حزمة تطوير برامج (SDK) أو مكتبة أو أداة أو محرّك ألعاب، من المهم أكثر من أي وقت مضى إعداد أي تحديثات ضرورية الآن لمنع مطوّري التطبيقات والألعاب من التعرّض لمشاكل التوافق والسماح لهم باستهداف أحدث ميزات حزمة تطوير البرامج (SDK). يُرجى إعلام المطوّرين الذين يستخدمون حزمة تطوير البرامج (SDK) الخاصة بك إذا كانت هناك حاجة إلى تحديثات لدعم Android 17 بشكل كامل.
يتضمّن الاختبار تثبيت تطبيقك الأساسي أو تطبيق اختبار يستخدم مكتبتك أو محرّكك على جهاز أو محاكي يعمل بالإصدار Android 17 التجريبي 3 باستخدام "متجر Google Play" أو وسائل أخرى. يُرجى الانتقال إلى جميع مسارات تطبيقك والبحث عن المشاكل الوظيفية أو مشاكل واجهة المستخدم. راجِع التغييرات في السلوك للتركيز على الاختبار. يحتوي كل إصدار من Android على تغييرات في النظام الأساسي تعمل على تحسين الخصوصية والأمان وتجربة المستخدم بشكل عام، ويمكن أن تؤثر هذه التغييرات في تطبيقاتك. في ما يلي بعض التغييرات التي يجب التركيز عليها:
- تغيير الحجم على الشاشات الكبيرة: عند استهداف Android 17، لن يعود بإمكانك إيقاف الحفاظ على قيود الاتجاه وتغيير الحجم ونسبة العرض إلى الارتفاع على الشاشات الكبيرة.
- تحميل الرمز الديناميكي: إذا كان تطبيقك يستهدف Android 17 أو إصدارًا أعلى، فإنّ الحماية الأكثر أمانًا لتحميل الرمز الديناميكي (DCL) التي تم تقديمها في Android 14 لملفات DEX وJAR تشمل الآن المكتبات الأصلية. يجب وضع علامة "للقراءة فقط" على جميع الملفات الأصلية التي يتم تحميلها باستخدام System.load(). وإلا، سيظهر الخطأ UnsatisfiedLinkError.
- تفعيل ميزة "الشفافية في الشهادات" (CT) تلقائيًا: تكون ميزة "الشفافية في الشهادات" (CT) مفعّلة تلقائيًا. (في Android 16، تتوفّر ميزة "الشفافية في الشهادات" (CT)، ولكن كان على التطبيقات تفعيلها.)
- وسائل الحماية للشبكة المحلية: يتم حظر الوصول إلى الشبكة المحلية تلقائيًا للتطبيقات التي تستهدف Android 17 أو إصدارًا أعلى. يُرجى التبديل إلى استخدام أدوات اختيار تحافظ على الخصوصية إن أمكن، واستخدام الإذن الجديد ACCESS_LOCAL_NETWORK للوصول الواسع النطاق والمستمر.
تحسينات على الوسائط والكاميرا
خيارات تخصيص "منتقي الصور"
يتيح لك Android الآن تخصيص العرض المرئي لأداة اختيار الصور لتحسين واجهة مستخدم تطبيقك. باستخدام واجهة برمجة التطبيقات الجديدة PhotoPickerUiCustomizationParams، يمكنك تعديل نسبة العرض إلى الارتفاع في عرض على شكل مربّعات من المربّع العادي بنسبة 1:1 إلى عرض عمودي بنسبة 9:16. ينطبق هذا المرونة على كلّ من الغرض ACTION_PICK_IMAGES وأداة اختيار الصور المضمّنة، ما يتيح لك الحفاظ على مظهر متناسق عندما يتفاعل المستخدمون مع الوسائط.
يأتي ذلك في إطار جهودنا للمساعدة في جعل "أداة اختيار الصور" على Android التي تحافظ على الخصوصية تتناسب بسلاسة مع تجربة تطبيقك. مزيد من المعلومات عن كيفية تضمين أداة اختيار الصور مباشرةً في تطبيقك للحصول على أفضل تجربة أصلية.
val params = PhotoPickerUiCustomizationParams.Builder()
.setAspectRatio(PhotoPickerUiCustomizationParams.ASPECT_RATIO_PORTRAIT_9_16)
.build()
val intent = Intent(MediaStore.ACTION_PICK_IMAGES).apply {
putExtra(MediaStore.EXTRA_PICK_IMAGES_UI_CUSTOMIZATION_PARAMS, params)
}
startActivityForResult(intent, REQUEST_CODE)
إتاحة تنسيق الصور RAW14: يتيح Android 17 تنسيق الصور RAW14، وهو المعيار الفعلي في المجال للتصوير الرقمي المتطوّر، وذلك من خلال الثابت الجديد ImageFormat.RAW14. RAW14 هو تنسيق أحادي القناة، و14 بت لكل بكسل، ويستخدم تنسيقًا مضغوطًا يتم فيه تجميع كل أربع وحدات بكسل متتالية في سبعة بايتات.
إضافات الكاميرا المحدّدة من قِبل مورّد الجهاز: يضيف Android 17 إضافات محدّدة من قِبل مورّد الجهاز لتمكين شركاء الأجهزة من تحديد أوضاع إضافات الكاميرا المخصّصة وتنفيذها لتزويدك بأفضل ميزات الكاميرا وأحدثها، مثل "الدقة الفائقة" أو التحسينات المتطوّرة المستندة إلى الذكاء الاصطناعي. يمكنك طلب هذه الأوضاع باستخدام واجهة برمجة التطبيقات isExtensionSupported(int).
واجهات برمجة التطبيقات لنوع جهاز الكاميرا: تتيح لك واجهات برمجة التطبيقات الجديدة في Android 17 طلب نوع الجهاز الأساسي لتحديد ما إذا كانت الكاميرا عبارة عن جهاز مدمج أو كاميرا ويب خارجية متصلة بمنفذ USB أو كاميرا افتراضية.
إتاحة سماعات الأذن الطبية التي تعمل بتكنولوجيا Bluetooth LE Audio
يتضمّن Android الآن فئة أجهزة خاصة لسماعات الأذن الطبية التي تعمل بتكنولوجيا بلوتوث منخفض الطاقة (BLE) Audio. من خلال إضافة الثابت AudioDeviceInfo.TYPE_BLE_HEARING_AID، يمكن لتطبيقك الآن التمييز بين سماعات الأذن الطبية وسماعات الرأس العادية.
val audioManager = getSystemService(Context.AUDIO_SERVICE) as AudioManager
val devices = audioManager.getDevices(AudioManager.GET_DEVICES_OUTPUTS)
val isHearingAidConnected = devices.any { it.type == AudioDeviceInfo.TYPE_BLE_HEARING_AID }
توجيه الصوت الدقيق لسماعات الأذن الطبية
يتيح Android 17 للمستخدمين إدارة مكان تشغيل أصوات النظام المحدّدة بشكل مستقل. يمكنهم اختيار توجيه الإشعارات ونغمات الرنين والمنبّهات إلى سماعات الأذن الطبية المتصلة أو إلى مكبّر الصوت المدمج في الجهاز.
برنامج ترميز Extended HE-AAC
يقدّم Android 17 برنامج ترميز Extended HE-AAC يوفّره النظام. يتيح برنامج الترميز هذا معدّلات نقل البيانات المنخفضة والعالية باستخدام ترميز موحّد للكلام والصوت. يمكنك الوصول إلى برنامج الترميز هذا من خلال MediaCodec API باستخدام الاسم c2.android.xheaac.encoder أو من خلال طلب نوع MIME audio/mp4a-latm.
val encoder = MediaCodec.createByCodecName("c2.android.xheaac.encoder")
val format = MediaFormat.createAudioFormat(MediaFormat.MIMETYPE_AUDIO_AAC, 48000, 1)
format.setInteger(MediaFormat.KEY_BIT_RATE, 24000)
format.setInteger(MediaFormat.KEY_AAC_PROFILE, MediaCodecInfo.CodecProfileLevel.AACObjectXHE)
encoder.configure(format, null, null, MediaCodec.CONFIGURE_FLAG_ENCODE)
تحسينات على الأداء والبطارية
الحدّ من عمليات تنشيط الجهاز باستخدام إتاحة المستمعين للمنبّهات التي يتم تشغيلها أثناء وضع الخمول
يقدّم Android 17 نوعًا جديدًا من AlarmManager.setExactAndAllowWhileIdle يقبل OnAlarmListener بدلاً من PendingIntent. تُعدّ هذه الآلية الجديدة المستندة إلى معاودة الاتصال مثالية للتطبيقات التي تعتمد حاليًا على عمليات تنشيط الجهاز المستمرة لتنفيذ مهام دورية، مثل تطبيقات المراسلة التي تحافظ على اتصالات المقبس.
val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)
تحديثات بشأن الخصوصية
زر الموقع الجغرافي الذي يوفّره النظام
يقدّم Android زر مشاركة الموقع الجغرافي يتم عرضه من قِبل النظام، وسيتمكّن من تضمينه مباشرةً في تنسيق تطبيقك باستخدام مكتبة Android Jetpack. عندما ينقر المستخدم على زر النظام هذا، يتم منح تطبيقك إذن الوصول إلى الموقع الجغرافي الدقيق للجلسة الحالية فقط. لتنفيذ ذلك، عليك الإشارة إلى استخدام الإذن USE_LOCATION_BUTTON.
إعدادات منفصلة لإظهار كلمات المرور للوحات المفاتيح التي تعمل باللمس ولوحات المفاتيح الخارجية
تقسّم هذه الميزة إعداد النظام الحالي "إظهار كلمات المرور" إلى خيارَين منفصلَين يفضّلهما المستخدم: أحدهما للإدخالات المستندة إلى اللمس والآخر للإدخالات من لوحة المفاتيح الخارجية (الأجهزة). يتم الآن إخفاء الأحرف التي يتم إدخالها عبر لوحات المفاتيح الخارجية تلقائيًا على الفور.
val isPhysical = event.source and InputDevice.SOURCE_KEYBOARD == InputDevice.SOURCE_KEYBOARD val shouldShow = android.text.ShowSecretsSetting.shouldShowPassword(context, isPhysical)
الأمان
فرض تحميل الرمز الديناميكي للقراءة فقط
لتحسين الأمان ضدّ هجمات إدخال الرمز، يفرض Android الآن أن تكون المكتبات الأصلية التي يتم تحميلها ديناميكيًا للقراءة فقط. إذا كان تطبيقك يستهدف Android 17 أو إصدارًا أعلى، يجب وضع علامة "للقراءة فقط" على جميع الملفات الأصلية التي يتم تحميلها باستخدام System.load() مسبقًا.
val libraryFile = File(context.filesDir, "my_native_lib.so") // Mark the file as read-only before loading to comply with Android 17+ security requirements libraryFile.setReadOnly() System.load(libraryFile.absolutePath)
توقيع حزمة APK المختلط باستخدام التشفير ما بعد الكم (PQC)
استعدادًا للتطوّرات المستقبلية في الحوسبة الكمية، يتيح Android التشفير ما بعد الكم (PQC) من خلال الإصدار 3.2 الجديد من مخطّط توقيع حزمة APK. يستخدم هذا المخطّط نهجًا مختلطًا، حيث يجمع بين توقيع كلاسيكي وتوقيع ML-DSA.
تجربة المستخدم وواجهة مستخدم النظام
تحسين إتاحة الأدوات على شاشات العرض الخارجية
تحسّن هذه الميزة التناسق المرئي لأدوات التطبيقات عند عرضها على شاشات العرض الخارجية أو المتصلة التي تتضمّن كثافات بكسل مختلفة باستخدام وحدات البكسل غير المرتبطة بالكثافة أو وحدات البكسل المستقلة عن الحجم.
val options = appWidgetManager.getAppWidgetOptions(appWidgetId) val displayId = options.getInt(AppWidgetManager.OPTION_APPWIDGET_DISPLAY_ID) val remoteViews = RemoteViews(context.packageName, R.layout.widget_layout) remoteViews.setViewPadding( R.id.container, 16f, 8f, 16f, 8f, TypedValue.COMPLEX_UNIT_DIP )
إخفاء تصنيفات التطبيقات على الشاشة الرئيسية
يتيح Android الآن إعدادًا للمستخدم لإخفاء أسماء التطبيقات (التصنيفات) على مساحة عمل الشاشة الرئيسية. يُرجى التأكّد من أنّ رمز تطبيقك مميّز ويمكن التعرّف عليه.
نافذة ضمن النافذة تفاعلية على سطح المكتب
على عكس ميزة "نافذة ضمن النافذة" التقليدية، تظل هذه النوافذ المثبّتة تفاعلية وتظهر دائمًا فوق نوافذ التطبيقات الأخرى في وضع الكمبيوتر المكتبي.
val appTask: ActivityManager.AppTask = activity.getSystemService(ActivityManager::class.java).appTasks[0]
appTask.requestWindowingLayer(
ActivityManager.AppTask.WINDOWING_LAYER_PINNED,
context.mainExecutor,
object : OutcomeReceiver<Int, Exception> {
override fun onResult(result: Int) {
if (result == ActivityManager.AppTask.WINDOWING_LAYER_REQUEST_GRANTED) {
// Task successfully moved to pinned layer
}
}
override fun onError(error: Exception) {}
}
)
إعادة تصميم شريط أدوات تسجيل الشاشة
الوظيفة الأساسية
إعدادات استبعاد تطبيقات VPN
باستخدام الغرض الجديد ACTION_VPN_APP_EXCLUSION_SETTINGS، يمكن لتطبيقك تشغيل شاشة "الإعدادات" التي يديرها النظام، حيث يمكن للمستخدمين اختيار التطبيقات لاستبعاد نفق VPN.
val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}
تعديلات على واجهات برمجة التطبيقات OpenJDK 25 و21
يقدّم هذا التحديث ميزات وتحسينات شاملة من OpenJDK 21 وOpenJDK 25، بما في ذلك أحدث إتاحة لترميز Unicode وإتاحة محسّنة لبروتوكول أمان طبقة النقل (SSL) للمجموعات المسماة في بروتوكول أمان طبقة النقل (TLS).
البدء في استخدام Android 17
يمكنك تسجيل أي جهاز Pixel متوافق أو استخدام صور النظام 64 بت مع "محاكي Android".
- يمكنك تجميع التطبيق باستخدام حزمة تطوير البرامج (SDK) الجديدة والإبلاغ عن المشاكل في صفحة الملاحظات.
- اختبِر تطبيقك الحالي للتأكّد من توافقه ومعرفة ما إذا كان تطبيقك متأثرًا بالتغييرات في Android 17.
للحصول على معلومات كاملة، يُرجى الانتقال إلى الموقع الإلكتروني للمطوّرين في Android 17.
متابعة القراءة
-
أخبار المنتجات
أعلنّا اليوم خلال The Android Show أنّ Android ينتقل من نظام تشغيل إلى نظام ذكاء اصطناعي، ما يوفّر المزيد من فرص التفاعل مع تطبيقاتك.
Matthew McCullough • قراءة لمدة 4 دقائق
-
أخبار المنتجات
نعمل اليوم على تحسين تطوير تطبيقات Android باستخدام Gemma 4، وهو أحدث نموذج متطوّر ومتاح للجميع مصمّم بإمكانات معقدة للاستنتاج واستدعاء الأدوات بشكل مستقل.
Matthew McCullough • قراءة لمدة دقيقتَين
-
أخبار المنتجات
من الركائز الأساسية لمنظومة Android المتكاملة التزامنا المشترك بثقة المستخدمين. مع تطوّر الأجهزة الجوّالة، يتطوّر أيضًا نهجنا لحماية المعلومات الحسّاسة.
Robert Clifford • قراءة لمدة 3 دقائق
البقاء على اطّلاع على آخر التحديثات
يمكنك تلقّي أحدث الإحصاءات حول تطوير تطبيقات Android في بريدك الوارد أسبوعيًا.