Android 17 का बीटा 3 वर्शन आज आधिकारिक तौर पर रिलीज़ हो गया है. इसका मतलब है कि एपीआई की सतह लॉक हो गई है. अब कंपैटिबिलिटी की फ़ाइनल टेस्टिंग की जा सकती है. साथ ही, Android 17 को टारगेट करने वाले ऐप्लिकेशन को Play Store पर पुश किया जा सकता है. इसके अलावा, Beta 3 में कई नई सुविधाएं जोड़ी गई हैं. इनसे आपको बेहतर, ज़्यादा सुरक्षित, और इंटिग्रेट किए गए ऐप्लिकेशन बनाने में मदद मिलेगी.
अपने ऐप्लिकेशन, लाइब्रेरी, टूल, और गेम इंजन तैयार करें!
अगर आपने कोई एसडीके, लाइब्रेरी, टूल या गेम इंजन बनाया है, तो ज़रूरी अपडेट अभी से तैयार करना और भी ज़रूरी है. इससे, ऐप्लिकेशन और गेम डेवलपर को कंपैटिबिलिटी से जुड़ी समस्याओं की वजह से ब्लॉक होने से बचाया जा सकेगा. साथ ही, उन्हें एसडीके की नई सुविधाओं को टारगेट करने की अनुमति दी जा सकेगी. कृपया डाउनस्ट्रीम डेवलपर को बताएं कि Android 17 को पूरी तरह से सपोर्ट करने के लिए, अपडेट ज़रूरी हैं या नहीं.
टेस्टिंग में, अपने प्रोडक्शन ऐप्लिकेशन या ऐसे टेस्ट ऐप्लिकेशन को इंस्टॉल करना शामिल है जो Google Play या अन्य तरीकों का इस्तेमाल करके, आपकी लाइब्रेरी या इंजन का इस्तेमाल करता है. इसे Android 17 Beta 3 पर काम करने वाले डिवाइस या एम्युलेटर पर इंस्टॉल किया जाता है. अपने ऐप्लिकेशन के सभी फ़्लो आज़माएं और फ़ंक्शन या यूज़र इंटरफ़ेस (यूआई) से जुड़ी समस्याओं का पता लगाएं. टेस्टिंग पर फ़ोकस करने के लिए, व्यवहार में हुए बदलावों की समीक्षा करें. Android के हर वर्शन में, प्लैटफ़ॉर्म से जुड़े ऐसे बदलाव होते हैं जिनसे निजता, सुरक्षा, और उपयोगकर्ता अनुभव बेहतर होता है. इन बदलावों का असर आपके ऐप्लिकेशन पर पड़ सकता है. यहां कुछ बदलाव दिए गए हैं जिन पर आपको ध्यान देना चाहिए:
- बड़ी स्क्रीन पर साइज़ बदलने की सुविधा: Android 17 को टारगेट करने के बाद, बड़ी स्क्रीन पर ओरिएंटेशन, साइज़ बदलने, और आसपेक्ट रेशियो (लंबाई-चौड़ाई का अनुपात) से जुड़ी पाबंदियों को बनाए रखने की सुविधा से ऑप्ट आउट नहीं किया जा सकेगा.
- डाइनैमिक कोड लोडिंग: अगर आपका ऐप्लिकेशन Android 17 या इसके बाद के वर्शन को टारगेट करता है, तो Android 14 में DEX और JAR फ़ाइलों के लिए शुरू की गई, ज़्यादा सुरक्षित डाइनैमिक कोड लोडिंग (डीसीएल) की सुविधा अब नेटिव लाइब्रेरी के लिए भी उपलब्ध है. System.load() का इस्तेमाल करके लोड की गई सभी नेटिव फ़ाइलों को रीड-ओनली के तौर पर मार्क किया जाना चाहिए. ऐसा न होने पर, सिस्टम UnsatisfiedLinkError दिखाता है.
- सीटी को डिफ़ॉल्ट रूप से चालू करें: सर्टिफ़िकेट ट्रांसपैरेंसी (सीटी) डिफ़ॉल्ट रूप से चालू होती है. (Android 16 पर, सीटी उपलब्ध है. हालांकि, ऐप्लिकेशन को इसके लिए ऑप्ट इन करना पड़ता है.)
- लोकल नेटवर्क की सुरक्षा: 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) 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 में, सिस्टम की ओर से उपलब्ध कराया गया Extended HE-AAC सॉफ़्टवेयर एन्कोडर शामिल है. यह एनकोडर, यूनीफ़ाइड स्पीच और ऑडियो कोडिंग का इस्तेमाल करके, कम और ज़्यादा, दोनों तरह के बिटरेट पर काम करता है. c2.android.xheaac.encoder नाम का इस्तेमाल करके MediaCodec एपीआई के ज़रिए इस एनकोडर को ऐक्सेस किया जा सकता है. इसके अलावा, 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
)
निजता से जुड़े अपडेट
सिस्टम की ओर से उपलब्ध कराया गया लोकेशन बटन
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 साइनिंग
क्वांटम कंप्यूटिंग में होने वाले आने वाले समय के बदलावों के लिए, Android नई v3.2 APK सिग्नेचर स्कीम के ज़रिए पोस्ट-क्वांटम क्रिप्टोग्राफ़ी (पीक्यूसी) के लिए सहायता उपलब्ध करा रहा है. इस स्कीम में हाइब्रिड अप्रोच का इस्तेमाल किया जाता है. इसमें क्लासिकल सिग्नेचर को एमएल-डीएसए सिग्नेचर के साथ जोड़ा जाता है.
उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)
बाहरी डिसप्ले पर विजेट के लिए बेहतर सहायता
इस सुविधा से, कनेक्ट किए गए या बाहरी डिसप्ले पर ऐप्लिकेशन विजेट को एक जैसा दिखाया जाता है. ऐसा तब होता है, जब विजेट को अलग-अलग पिक्सल डेंसिटी वाले डिसप्ले पर डीपी या एसपी यूनिट का इस्तेमाल करके दिखाया जाता है.
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) {}
}
)
स्क्रीन रिकॉर्डिंग टूलबार का नया डिज़ाइन
मुख्य फ़ंक्शन
वीपीएन ऐप्लिकेशन को बाहर रखने की सेटिंग
ACTION_VPN_APP_EXCLUSION_SETTINGS Intent का इस्तेमाल करके, आपका ऐप्लिकेशन सिस्टम की ओर से मैनेज की गई सेटिंग स्क्रीन लॉन्च कर सकता है. इस स्क्रीन पर, उपयोगकर्ता ऐसे ऐप्लिकेशन चुन सकते हैं जिनके लिए वीपीएन टनल को बायपास किया जा सकता है.
val intent = Intent(Settings.ACTION_VPN_APP_EXCLUSION_SETTINGS)
if (intent.resolveActivity(packageManager) != null) {
startActivity(intent)
}
OpenJDK 25 और 21 API के अपडेट
इस अपडेट में, OpenJDK 21 और OpenJDK 25 की कई सुविधाएं और सुधार शामिल हैं. इनमें, यूनिकोड के नए वर्शन के लिए सपोर्ट और टीएलएस में नेम ग्रुप के लिए बेहतर एसएसएल सपोर्ट शामिल है.
Android 17 का इस्तेमाल शुरू करना
इस सुविधा के साथ काम करने वाले किसी भी Pixel डिवाइस को रजिस्टर किया जा सकता है. इसके अलावा, Android Emulator के साथ 64-बिट सिस्टम इमेज का इस्तेमाल किया जा सकता है.
- नए एसडीके के हिसाब से कंपाइल करें और राय/सुझाव पेज पर समस्याएं रिपोर्ट करें.
- अपने मौजूदा ऐप्लिकेशन की जांच करें कि वह Android 17 के साथ काम करता है या नहीं. साथ ही, यह भी जानें कि Android 17 में हुए बदलावों का असर आपके ऐप्लिकेशन पर पड़ा है या नहीं.
पूरी जानकारी के लिए, Android 17 डेवलपर साइट पर जाएं.
पढ़ना जारी रखें
-
प्रॉडक्ट से जुड़ी खबरें
आज हम Android डेवलपमेंट को बेहतर बनाने के लिए, Gemma 4 को लॉन्च कर रहे हैं. यह हमारा सबसे नया और बेहतरीन ओपन मॉडल है. इसे जटिल तर्कों को समझने और टूल को अपने-आप कॉल करने की क्षमताओं के साथ डिज़ाइन किया गया है.
Matthew McCullough • दो मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
Android नेटवर्क का एक अहम हिस्सा, उपयोगकर्ताओं का भरोसा बनाए रखने के लिए हमारी साझा प्रतिबद्धता है. मोबाइल डिवाइसों के इस्तेमाल में बदलाव होने के साथ-साथ, हम संवेदनशील जानकारी को सुरक्षित रखने के तरीके में भी बदलाव करते हैं.
Robert Clifford • तीन मिनट में पढ़ें
-
प्रॉडक्ट से जुड़ी खबरें
हम चाहते हैं कि आप अच्छी क्वालिटी वाले Android ऐप्लिकेशन को तेज़ी से और आसानी से बना सकें. हम एआई को आपके लिए उपलब्ध करा रहे हैं, ताकि आप ज़्यादा से ज़्यादा काम कर सकें.
Matthew McCullough • दो मिनट में पढ़ें
अप-टू-डेट रहें
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.