प्रॉडक्ट से जुड़ी खबरें

Android 17 का तीसरा बीटा वर्शन

5 मिनट में पढ़ें
Matthew McCullough
वाइस प्रेसिडेंट, प्रॉडक्ट मैनेजमेंट, Android डेवलपर

Android 17, आज बीटा 3 के साथ प्लैटफ़ॉर्म की स्थिरता के लेवल पर पहुंच गया है. इसका मतलब है कि एपीआई की सतह लॉक हो गई है. अब Android 17 को टारगेट करने वाले ऐप्लिकेशन के लिए, फ़ाइनल कंपैटिबिलिटी टेस्टिंग की जा सकती है. साथ ही, उन्हें Play Store पर पुश किया जा सकता है. इसके अलावा, बीटा 3 में कई नई सुविधाएं जोड़ी गई हैं. इनकी मदद से, बेहतर, ज़्यादा सुरक्षित, और इंटिग्रेट किए गए ऐप्लिकेशन बनाए जा सकते हैं.

अपने ऐप्लिकेशन, लाइब्रेरी, टूल, और गेम इंजन तैयार करें!

अगर आपने कोई एसडीके, लाइब्रेरी, टूल या गेम इंजन बनाया है, तो ज़रूरी है कि आप उसके लिए ज़रूरी अपडेट अभी से तैयार कर लें. इससे, आपके डाउनस्ट्रीम ऐप्लिकेशन और गेम डेवलपर को कंपैटिबिलिटी से जुड़ी समस्याओं की वजह से ब्लॉक होने से बचाया जा सकेगा. साथ ही, उन्हें एसडीके की नई सुविधाओं को टारगेट करने की अनुमति दी जा सकेगी. कृपया अपने डाउनस्ट्रीम डेवलपर को बताएं कि Android 17 को पूरी तरह से सपोर्ट करने के लिए, अपडेट की ज़रूरत है या नहीं.

large_Android17Timeline01.png

टेस्टिंग के लिए, Android 17 के बीटा वर्शन 3 पर काम करने वाले किसी डिवाइस या एम्युलेटर पर, Google Play या किसी अन्य तरीके से, प्रोडक्शन ऐप्लिकेशन या टेस्ट ऐप्लिकेशन इंस्टॉल करें. इस ऐप्लिकेशन में, आपकी लाइब्रेरी या इंजन का इस्तेमाल किया गया हो. अपने ऐप्लिकेशन के सभी फ़्लो पर काम करें और फ़ंक्शन या यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्याओं को ढूंढें. टेस्टिंग पर फ़ोकस करने के लिए, व्यवहार में हुए बदलावों की समीक्षा करें. Android के हर वर्शन में, प्लैटफ़ॉर्म में ऐसे बदलाव किए जाते हैं जिनसे निजता, सुरक्षा, और उपयोगकर्ता अनुभव बेहतर होता है. इन बदलावों का असर आपके ऐप्लिकेशन पर पड़ सकता है. यहां कुछ ऐसे बदलाव दिए गए हैं जिन पर आपको फ़ोकस करना चाहिए:

मीडिया और कैमरे में किए गए सुधार

फ़ोटो पिकर को पसंद के मुताबिक बनाने के विकल्प

Android अब आपको फ़ोटो पिकर के विज़ुअल प्रज़ेंटेशन को अपने ऐप्लिकेशन के यूज़र इंटरफ़ेस (यूआई) के हिसाब से बनाने की अनुमति देता है. नए PhotoPickerUiCustomizationParams API का इस्तेमाल करके, ग्रिड व्यू के आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) को स्टैंडर्ड 1:1 स्क्वेयर से बदलकर 9:16 पोर्ट्रेट डिसप्ले किया जा सकता है. यह सुविधा, ACTION_PICK_IMAGES इंटेंट और एंबेड किए गए फ़ोटो पिकर, दोनों पर लागू होती है. इससे, उपयोगकर्ताओं के मीडिया के साथ इंटरैक्ट करने पर, एक जैसा अनुभव मिलता है.

large_(Default)11aspectratio.png

यह हमारी उस कोशिश का हिस्सा है जिसके तहत, हम निजता बनाए रखने वाले 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) API का इस्तेमाल करके, इन मोड के बारे में क्वेरी की जा सकती है.

कैमरा डिवाइस टाइप एपीआई: Android 17 के नए एपीआई की मदद से, डिवाइस के टाइप के बारे में क्वेरी की जा सकती है. इससे यह पता चलता है कि कैमरा, बिल्ट-इन हार्डवेयर है, बाहरी यूएसबी वेबकैम है या वर्चुअल कैमरा है.

ब्लूटूथ LE Audio के साथ काम करने वाली कान की मशीनों के लिए सहायता

Android में अब ब्लूटूथ लो एनर्जी (बीएलई) ऑडियो के साथ काम करने वाली कान की मशीनों के लिए, डिवाइस की एक खास कैटगरी शामिल की गई है. 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 में, उपयोगकर्ताओं के पास यह तय करने का विकल्प होता है कि सिस्टम की खास आवाज़ें कहां सुनाई दें. वे सूचनाएं, रिंगटोन, और अलार्म को कनेक्ट की गई कान की मशीनों या डिवाइस के बिल्ट-इन स्पीकर पर भेजने का विकल्प चुन सकते हैं.

एक्सटेंडेड HE-AAC सॉफ़्टवेयर एन्कोडर

Android 17 में, सिस्टम की ओर से उपलब्ध कराया गया एक्सटेंडेड HE-AAC सॉफ़्टवेयर एन्कोडर शामिल है. यह एन्कोडर, यूनीफ़ाइड स्पीच और ऑडियो कोडिंग का इस्तेमाल करके, कम और ज़्यादा, दोनों बिटरेट को सपोर्ट करता है. MediaCodec API का इस्तेमाल करके, इस एन्कोडर को ऐक्सेस किया जा सकता है. इसके लिए, c2.android.xheaac.encoder नाम का इस्तेमाल करें या audio/mp4a-latm MIME टाइप के लिए क्वेरी करें.

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)

परफ़ॉर्मेंस और बैटरी से जुड़े सुधार

allow-while-idle अलार्म के लिए, लिसनर की सुविधा का इस्तेमाल करके वेकलॉक कम करना

Android 17 में, AlarmManager.setExactAndAllowWhileIdle का नया वैरिएंट जोड़ा गया है. यह PendingIntent के बजाय, OnAlarmListener को स्वीकार करता है. कॉल बैक पर आधारित यह नया मैकेनिज़्म, उन ऐप्लिकेशन के लिए सही है जो फ़िलहाल समय-समय पर टास्क पूरे करने के लिए, लगातार वेकलॉक पर निर्भर हैं. जैसे, मैसेजिंग ऐप्लिकेशन, सॉकेट कनेक्शन बनाए रखते हैं.

val alarmManager = getSystemService(AlarmManager::class.java)
val listener = AlarmManager.OnAlarmListener {
// Do work here
}
alarmManager.setExactAndAllowWhileIdle(
AlarmManager.ELAPSED_REALTIME_WAKEUP,
SystemClock.elapsedRealtime() + 60000,
listener,
null
)

निजता से जुड़े अपडेट

सिस्टम की ओर से उपलब्ध कराया गया लोकेशन बटन

localcafe.jpg

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)

पोस्ट-क्वांटम क्रिप्टोग्राफ़ी (पीक्यूसी) हाइब्रिड एपीके साइनिंग

क्वांटम कंप्यूटिंग में होने वाले आने वाले समय के सुधारों के लिए, Android, पोस्ट-क्वांटम क्रिप्टोग्राफ़ी (पीक्यूसी) के लिए सहायता उपलब्ध करा रहा है. यह सुविधा, एपीके सिग्नेचर स्कीम के नए वर्शन 3.2 के ज़रिए उपलब्ध है. इस स्कीम में हाइब्रिड अप्रोच का इस्तेमाल किया जाता है. इसमें क्लासिकल सिग्नेचर को एमएल-डीएसए सिग्नेचर के साथ जोड़ा जाता है.

उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)

बाहरी डिसप्ले पर विजेट के लिए बेहतर सहायता

इस सुविधा से, ऐप्लिकेशन विजेट की विज़ुअल कंसिस्टेंसी बेहतर होती है. ऐसा तब होता है, जब उन्हें डीपी या एसपी यूनिट का इस्तेमाल करके, अलग-अलग पिक्सल डेंसिटी वाले कनेक्ट किए गए या बाहरी डिसप्ले पर दिखाया जाता है.

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
)

होम स्क्रीन पर ऐप्लिकेशन के लेबल छिपाना

Hiddenapplabelsonthehomescreen.png

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) {}
}
)

स्क्रीन रिकॉर्डिंग के टूलबार का नया डिज़ाइन

large_Recording-redesign.png

मुख्य फ़ंक्शन

वीपीएन इस्तेमाल करने से रोके गए ऐप्लिकेशन की सेटिंग

नए ACTION_VPN_APP_EXCLUSION_SETTINGS इंटेंट का इस्तेमाल करके, आपका ऐप्लिकेशन, सिस्टम से मैनेज की जाने वाली सेटिंग स्क्रीन लॉन्च कर सकता है. इस स्क्रीन पर, उपयोगकर्ता उन ऐप्लिकेशन को चुन सकते हैं जिन्हें वीपीएन टनल से बाहर रखा जाना है.

val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}

OpenJDK 25 और 21 के एपीआई अपडेट

इस अपडेट में, OpenJDK 21 और OpenJDK 25 की कई सुविधाएं और सुधार शामिल हैं. इनमें, यूनीकोड के लिए नया सपोर्ट और टीएलएस में नाम वाले ग्रुप के लिए, बेहतर एसएसएल सपोर्ट शामिल है.

Android 17 का इस्तेमाल शुरू करना

Android Emulator के साथ, 64-बिट सिस्टम इमेज का इस्तेमाल किया जा सकता है. इसके अलावा, Android 17 को सपोर्ट करने वाले किसी भी Pixel डिवाइस को एनरोल किया जा सकता है.

  • नए एसडीके के हिसाब से कंपाइल करें और सुझाव/राय या शिकायत पेज पर समस्याओं की रिपोर्ट करें.
  • अपने मौजूदा ऐप्लिकेशन की कंपैटिबिलिटी की जांच करें और जानें कि Android 17 में किए गए बदलावों का असर आपके ऐप्लिकेशन पर पड़ा है या नहीं.

पूरी जानकारी के लिए, Android 17 की डेवलपर साइट पर जाएं.

इसे लिखा है:

पढ़ना जारी रखें