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 फ़ाइलों के लिए शुरू की गई, Safer Dynamic Code Loading (DCL) की सुरक्षा अब नेटिव लाइब्रेरी पर भी लागू होती है. 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 सॉफ़्टवेयर एन्कोडर लॉन्च किया गया है. यह एनकोडर, यूनीफ़ाइड स्पीच और ऑडियो कोडिंग का इस्तेमाल करके, कम और ज़्यादा, दोनों तरह के बिटरेट पर काम करता है. इस एन्कोडर को MediaCodec एपीआई के ज़रिए ऐक्सेस किया जा सकता है. इसके लिए, c2.android.xheaac.encoder नाम का इस्तेमाल करें या 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)परफ़ॉर्मेंस और बैटरी से जुड़ी सुविधाएं बेहतर बनाई गई हैं
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 डेवलपर साइट पर जाएं.
-
प्रॉडक्ट से जुड़ी खबरेंGoogle I/O '26 में, Android डेवलपर के लिए 17 अहम घोषणाएं की गई हैं. इनमें एजेंट की मदद से काम करने की क्षमता, यूज़र इंटरफ़ेस (यूआई) के स्टैंडर्ड के तौर पर Compose First, और बढ़ते हुए इकोसिस्टम के लिए हाई-परफ़ॉर्मेंस मीडिया और अडैप्टिव डेवलपमेंट पर फ़ोकस किया गया है.
Matthew McCullough • 8 मिनट में पढ़ा जा सकता है -
प्रॉडक्ट से जुड़ी खबरेंआज The Android Show के दौरान यह एलान किया गया कि Android, ऑपरेटिंग सिस्टम से इंटेलिजेंस सिस्टम में बदल रहा है. इससे आपके ऐप्लिकेशन के साथ लोगों की दिलचस्पी बढ़ाने के ज़्यादा अवसर मिलेंगे.
Matthew McCullough • पढ़ने में 4 मिनट लगेंगे -
प्रॉडक्ट से जुड़ी खबरेंआज हम Android डेवलपमेंट को बेहतर बनाने के लिए, Gemma 4 को लॉन्च कर रहे हैं. यह हमारा सबसे नया और बेहतरीन ओपन मॉडल है. इसे जटिल तर्कों को समझने और टूल को अपने-आप कॉल करने की सुविधाओं के साथ डिज़ाइन किया गया है.
Matthew McCullough • दो मिनट में पढ़ें
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.