Android 17 का बीटा 3 वर्शन आज आधिकारिक तौर पर रिलीज़ हो गया है. इसका मतलब है कि एपीआई सरफेस लॉक हो गया है. अब, Android 17 के साथ काम करने से जुड़ी फ़ाइनल टेस्टिंग की जा सकती है. साथ ही, 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 API का इस्तेमाल करके, ग्रिड वाले व्यू के आसपेक्ट रेशियो में बदलाव किया जा सकता है. इसे स्टैंडर्ड 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 नाम का इस्तेमाल करके या audio/mp4a-latm एमआईएमई टाइप के लिए क्वेरी करके, MediaCodec API के ज़रिए इस एन्कोडर को ऐक्सेस किया जा सकता है.
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 की कई सुविधाएं और सुधार शामिल हैं. इनमें, Unicode के नए वर्शन के साथ काम करने की सुविधा और TLS में नेम ग्रुप के लिए बेहतर SSL सपोर्ट शामिल है.
Android 17 का इस्तेमाल शुरू करना
इस सुविधा के साथ काम करने वाले किसी भी Pixel डिवाइस को रजिस्टर किया जा सकता है या Android Emulator के साथ 64-बिट सिस्टम इमेज का इस्तेमाल किया जा सकता है.
- नए एसडीके के हिसाब से कंपाइल करें और सुझाव/राय देने या शिकायत करने वाले पेज पर समस्याएं बताएं.
- अपने मौजूदा ऐप्लिकेशन की जांच करें कि वह Android 17 के साथ काम करता है या नहीं. साथ ही, यह भी जानें कि Android 17 में हुए बदलावों का असर आपके ऐप्लिकेशन पर पड़ा है या नहीं.
पूरी जानकारी के लिए, Android 17 की डेवलपर साइट पर जाएं.
-
प्रॉडक्ट से जुड़ी खबरेंआज हम Android 17 को रिलीज़ कर रहे हैं. यह सुविधा, Android 17 के साथ काम करने वाले ज़्यादातर Pixel डिवाइसों पर उपलब्ध होगी. आने वाले महीनों में, Android 17 पर काम करने वाले नए डिवाइसों के बारे में जानें.
Matthew McCullough • पढ़ने में 13 मिनट लगेंगे -
प्रॉडक्ट से जुड़ी खबरेंआज हम लॉन्ग-हॉरिज़न टास्क (एलएचटी) का पहला सेट रिलीज़ कर रहे हैं. ये ऐसे मुश्किल टास्क होते हैं जिन्हें पूरा करने में इंजीनियर को कई दिन या एक हफ़्ता भी लग सकता है. हम एजेंटिक इवैल्यूएशन भी पेश कर रहे हैं. इसकी शुरुआत, मॉडल उपलब्ध कराने वाली कंपनियों के एजेंट से की जाएगी.
Matthew McCullough • 3 मिनट में पढ़ा जा सकता है -
प्रॉडक्ट से जुड़ी खबरेंAndroid का मुख्य मकसद, लोगों को बेहतरीन अनुभव देना है. इस मकसद को पूरा करने के लिए, यह ज़रूरी है कि डिवाइस तेज़ी से काम करें, रिस्पॉन्सिव हों, और भरोसेमंद हों.
Blair Harmon • पढ़ने में 2 मिनट लगेंगे
Android डेवलपमेंट से जुड़ी नई अहम जानकारी, हर हफ़्ते अपने इनबॉक्स में पाएं.