Android 15 प्लैटफ़ॉर्म में, ऐप्लिकेशन के काम करने के तरीके में कुछ बदलाव किए गए हैं. इन बदलावों का असर आपके ऐप्लिकेशन पर पड़ सकता है. ऐप्लिकेशन के काम करने के तरीके में ये बदलाव, Android 15 पर चलने वाले सभी ऐप्लिकेशन पर लागू होते हैं. इससे कोई फ़र्क़ नहीं पड़ता कि ऐप्लिकेशन targetSdkVersion
पर चल रहा है या नहीं. आपको अपने ऐप्लिकेशन की जांच करनी चाहिए और जहां लागू हो वहां इन सुविधाओं के सही तरीके से काम करने के लिए, ज़रूरत के हिसाब से उसमें बदलाव करना चाहिए.
मुख्य फ़ंक्शन
Android 15, Android सिस्टम की कई मुख्य सुविधाओं में बदलाव करता है या उन्हें बेहतर बनाता है.
पैकेज की रोकी गई स्थिति में बदलाव
软件包 FLAG_STOPPED
状态(用户可以通过长按应用图标并选择“强行停止”来参与 AOSP build)一直是为了让应用保持此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、选择应用作为动态壁纸等)将应用从此状态明确移除。在 Android 15 中,我们将更新系统的行为,以符合这一预期行为。只能通过用户直接或间接操作将应用从停止状态中移除。
为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态中移除时,系统会向应用传递 ACTION_BOOT_COMPLETED
广播,让用户有机会重新注册任何待处理的 intent。
您可以调用新的 ApplicationStartInfo.wasForceStopped()
方法来确认应用是否已置于停止状态。
16 केबी वाले पेज साइज़ के लिए सहायता
अब तक, Android पर सिर्फ़ 4 केबी मेमोरी पेज का साइज़ काम करता था, जिसमें कुल मेमोरी की औसत मात्रा के लिए ऑप्टिमाइज़ की गई सिस्टम मेमोरी परफ़ॉर्मेंस आम तौर पर, Android डिवाइसों पर यह सुविधा ज़्यादा काम करती थी. Android 15 और इसके बाद के वर्शन में, AOSP काम करता है ऐसे डिवाइस जिन्हें 16 केबी (16 केबी) के पेज साइज़ का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है डिवाइसों के हिसाब से). अगर आपका ऐप्लिकेशन किसी भी NDK लाइब्रेरी का इस्तेमाल करता है, तो सीधे तौर पर है, तो आपको इसके लिए अपना ऐप्लिकेशन फिर से बनाना होगा: काम करता है.
जैसा कि डिवाइस बनाने वाली कंपनियां, बड़ी संख्या में डिवाइसों को बनाना जारी रख रही हैं फ़िज़िकल मेमोरी (रैम) का इस्तेमाल करते हैं, तो इनमें से कई डिवाइस 16 केबी (और पेज का साइज़ तय करना होता है. जोड़ा जा रहा है 16 केबी वाले पेज साइज़ वाले डिवाइसों पर काम करने से, आपका ऐप्लिकेशन इन डिवाइसों पर काम करता है डिवाइस और आपके ऐप्लिकेशन को इनसे जुड़ी परफ़ॉर्मेंस का फ़ायदा मिलता है सुधार किए गए हैं. फिर से कंपाइल किए बिना, हो सकता है कि ऐप्लिकेशन 16 केबी वाले डिवाइसों पर काम न करें करने के लिए डिज़ाइन किया गया है.
आपके ऐप्लिकेशन के लिए सहायता जोड़ने में आपकी मदद करने के लिए, हमने यह देखने का तरीका बताने के लिए दिशा-निर्देश दिए हैं अगर इसका असर आपके ऐप्लिकेशन पर पड़ा है, तो ऐप्लिकेशन को फिर से बनाएं (अगर लागू हो) और अपने ऐप्लिकेशन की जांच करने का तरीका एम्युलेटर का इस्तेमाल करके, 16 केबी एनवायरमेंट (इसमें Android 15 शामिल है) Android Emulator के लिए सिस्टम इमेज).
优势和性能提升
配置为 16 KB 页面的设备平均使用的内存会略多,但系统和应用性能也会有所提升:
- 在系统面临内存压力时缩短应用启动时间:平均降低了 3.16%,对于我们测试过的一些应用而言,改进幅度更显著(提升幅度高达 30%)
- 降低应用启动时的功耗:平均降低 4.56%
- 相机启动速度更快:平均热启动速度加快 4.48%,冷启动速度平均加快 6.60%
- 缩短了系统启动时间:平均缩短了 1.5%(约 0.8 秒)
这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。在继续测试的过程中,我们会进一步分析应用的潜在益处。
检查您的应用是否受到影响
अगर आपका ऐप्लिकेशन किसी नेटिव कोड का इस्तेमाल करता है, तो आपको अपने ऐप्लिकेशन को फिर से बनाना होगा, ताकि वह 16 केबी वाले डिवाइसों पर काम कर सके. अगर आपको नहीं पता कि आपका ऐप्लिकेशन नेटिव कोड का इस्तेमाल करता है या नहीं, तो APK ऐनालाइज़र का इस्तेमाल करके यह पता लगाया जा सकता है कि कोई नेटिव कोड मौजूद है या नहीं. इसके बाद, शेयर की गई किसी भी लाइब्रेरी के लिए, ईएलएफ़ सेगमेंट के अलाइनमेंट की जांच करें.
अगर आपका ऐप्लिकेशन सिर्फ़ Java प्रोग्रामिंग भाषा या Kotlin में लिखे गए कोड का इस्तेमाल करता है, तो इसका मतलब है कि आपका ऐप्लिकेशन पहले से ही 16 KB वाले डिवाइसों पर काम करता है. इसमें सभी लाइब्रेरी या SDK टूल भी शामिल हैं. इसके बावजूद, हमारा सुझाव है कि आप अपने ऐप्लिकेशन को 16 केबी वाले एनवायरमेंट में टेस्ट करें, ताकि यह पक्का किया जा सके कि ऐप्लिकेशन के व्यवहार में कोई अनचाहा बदलाव न हुआ हो.
प्राइवेट स्पेस का इस्तेमाल करने के लिए, कुछ ऐप्लिकेशन में ज़रूरी बदलाव किए गए हैं
प्राइवेट स्पेस, Android 15 की एक नई सुविधा है. इसकी मदद से, उपयोगकर्ता अपने डिवाइस पर एक अलग स्पेस बना सकते हैं. इस स्पेस में, वे संवेदनशील ऐप्लिकेशन को छिपाकर रख सकते हैं. इसके लिए, उन्हें पुष्टि करने की एक अतिरिक्त लेयर से गुज़रना होगा. प्राइवेट स्पेस में मौजूद ऐप्लिकेशन, सभी लोगों को नहीं दिखते. इसलिए, कुछ तरह के ऐप्लिकेशन को उपयोगकर्ता के प्राइवेट स्पेस में मौजूद ऐप्लिकेशन देखने और उनसे इंटरैक्ट करने के लिए, कुछ और कदम उठाने पड़ते हैं.
सभी ऐप्लिकेशन
प्राइवेट स्पेस में मौजूद ऐप्लिकेशन को एक अलग उपयोगकर्ता प्रोफ़ाइल में रखा जाता है. वर्क प्रोफ़ाइलों की बात की जाए, तो ऐप्लिकेशन को यह नहीं लगना चाहिए कि जो ऐप्लिकेशन की मुख्य प्रोफ़ाइल में मौजूद नहीं हैं उनकी कॉपी, वर्क प्रोफ़ाइल में मौजूद होती हैं. अगर आपने आपके ऐप्लिकेशन में वर्क प्रोफ़ाइल ऐप्लिकेशन से जुड़ा लॉजिक है, जो यह अनुमान लगाता है, आपको इस लॉजिक को अडजस्ट करना होगा.
चिकित्सा से जुड़े ऐप्लिकेशन
जब कोई उपयोगकर्ता प्राइवेट स्पेस को लॉक करता है, तो प्राइवेट स्पेस में मौजूद सभी ऐप्लिकेशन रुक जाते हैं. साथ ही, वे ऐप्लिकेशन फ़ोरग्राउंड या बैकग्राउंड से जुड़ी गतिविधियां नहीं कर सकते. इनमें ये गतिविधियां शामिल हैं सूचनाएँ दिखा रही हूँ. इस तरह के व्यवहार से मेडिकल ऐप्लिकेशन, जो प्राइवेट स्पेस में इंस्टॉल किए गए हों.
प्राइवेट स्पेस के सेटअप से जुड़े अनुभव में, उपयोगकर्ताओं को चेतावनी दी जाती है कि प्राइवेट स्पेस उन ऐप्लिकेशन के लिए सही है जिन्हें फ़ोरग्राउंड या बैकग्राउंड में बेहतर परफ़ॉर्मेंस की ज़रूरत होती है स्वास्थ्य से जुड़े ऐप्लिकेशन की सूचनाएं दिखाने जैसी गतिविधियां. हालांकि, ऐप्लिकेशन यह पता नहीं लगा सकते कि उनका इस्तेमाल प्राइवेट स्पेस में किया जा रहा है या नहीं. ताकि वे इस मामले में उपयोगकर्ता को कोई चेतावनी न दिखाएं.
इन वजहों से, अगर आपने कोई मेडिकल ऐप्लिकेशन बनाया है, तो देखें कि यह सुविधा किस तरह आपके ऐप्लिकेशन पर असर पड़ सकता है और उसके हिसाब से ज़रूरी कार्रवाइयां की जा सकती हैं. जैसे, उपयोगकर्ताओं को ये बताना कि वे ऐसा न करें अपने ऐप्लिकेशन को प्राइवेट स्पेस में इंस्टॉल करें, ताकि ज़रूरी ऐप्लिकेशन में कोई रुकावट न आए सुविधाएं.
लॉन्चर ऐप्लिकेशन
अगर आपने कोई लॉन्चर ऐप्लिकेशन डेवलप किया है, तो निजी स्पेस में ऐप्लिकेशन दिखने से पहले, आपको ये काम करने होंगे:
- आपके ऐप्लिकेशन को डिवाइस के लिए डिफ़ॉल्ट लॉन्चर ऐप्लिकेशन के तौर पर असाइन किया जाना चाहिए. इसका मतलब है कि आपके ऐप्लिकेशन के पास
ROLE_HOME
भूमिका होनी चाहिए. - आपके ऐप्लिकेशन को
ACCESS_HIDDEN_PROFILES
सामान्य अनुमति के बारे में बताना होगा. इसके लिए, आपको अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में यह जानकारी देनी होगी.
ACCESS_HIDDEN_PROFILES
अनुमति का एलान करने वाले लॉन्चर ऐप्लिकेशन को, प्राइवेट स्पेस के इस्तेमाल के इन उदाहरणों को मैनेज करना होगा:
- में इंस्टॉल किए गए ऐप्लिकेशन के लिए आपके ऐप्लिकेशन का एक अलग लॉन्चर कंटेनर होना चाहिए
प्राइवेट स्पेस.
getLauncherUserInfo()
तरीके का इस्तेमाल करके, यह पता लगाएं कि किस तरह की उपयोगकर्ता प्रोफ़ाइल मैनेज की जा रही है. - उपयोगकर्ता के पास प्राइवेट स्पेस कंटेनर को छिपाने और दिखाने का विकल्प होना चाहिए.
- उपयोगकर्ता के पास प्राइवेट स्पेस के कंटेनर को लॉक और अनलॉक करने की सुविधा होनी चाहिए. प्राइवेट स्पेस को लॉक करने (
true
पास करके) या अनलॉक करने (false
पास करके) के लिए,requestQuietModeEnabled()
तरीके का इस्तेमाल करें. लॉक होने पर, प्राइवेट स्पेस कंटेनर में मौजूद कोई भी ऐप्लिकेशन न दिखे या खोज जैसे तरीकों से न मिल पाए. आपके ऐप्लिकेशन को
ACTION_PROFILE_AVAILABLE
औरACTION_PROFILE_UNAVAILABLE
ब्रॉडकास्ट के लिए एक रिसीवर रजिस्टर करना चाहिए. साथ ही, प्राइवेट स्पेस कंटेनर की लॉक या अनलॉक की गई स्थिति में बदलाव होने पर, अपने ऐप्लिकेशन में यूज़र इंटरफ़ेस (यूआई) को अपडेट करना चाहिए. इन दोनों ब्रॉडकास्ट मेंEXTRA_USER
शामिल होता है. आपका ऐप्लिकेशन, निजी प्रोफ़ाइल के उपयोगकर्ता को रेफ़र करने के लिए इसका इस्तेमाल कर सकता है.isQuietModeEnabled()
तरीके का इस्तेमाल करके भी यह देखा जा सकता है कि प्राइवेट स्पेस प्रोफ़ाइल लॉक है या नहीं.
ऐप स्टोर के ऐप्लिकेशन
प्राइवेट स्पेस में "ऐप्लिकेशन इंस्टॉल करें" बटन होता है. इस बटन को दबाने पर, उपयोगकर्ता के प्राइवेट स्पेस में ऐप्लिकेशन इंस्टॉल करने के लिए, एक इंटेंट शुरू होता है. आपके ऐप्लिकेशन को यह इंप्लिसिट इंटेंट पाने के लिए, अपनी ऐप्लिकेशन मेनिफ़ेस्ट फ़ाइल में <intent-filter>
का एलान करें. साथ ही, CATEGORY_APP_MARKET
के <category>
का इस्तेमाल करें.
PNG-आधारित इमोजी फ़ॉन्ट हटाया गया
लेगसी, PNG आधारित इमोजी फ़ॉन्ट फ़ाइल (NotoColorEmojiLegacy.ttf
) से
निकाल दिया जाता है, जिससे केवल वेक्टर-आधारित फ़ाइल बच जाती है. Android 13 (एपीआई) से शुरू करना
लेवल 33), सिस्टम के इमोजी रेंडरर की ओर से इस्तेमाल की जाने वाली इमोजी फ़ॉन्ट फ़ाइल किसी
वेक्टर आधारित फ़ाइल में PNG-आधारित फ़ाइल. सिस्टम में कोई बदलाव नहीं हुआ
Android 13 और 14 के लिए लेगसी फ़ॉन्ट फ़ाइल का इस्तेमाल कर सके, ताकि
ऐसे ऐप्लिकेशन जिनके खुद के फ़ॉन्ट रेंडरर हैं, वे लेगसी फ़ॉन्ट फ़ाइल का इस्तेमाल जारी रख सकते हैं
जब तक कि वे अपग्रेड नहीं कर लेते.
यह देखने के लिए कि आपके ऐप्लिकेशन पर असर पड़ा है या नहीं, अपने ऐप्लिकेशन के कोड में
NotoColorEmojiLegacy.ttf
फ़ाइल.
अपने ऐप्लिकेशन को कई तरीकों से ऑप्टिमाइज़ किया जा सकता है:
- टेक्स्ट रेंडरिंग के लिए प्लैटफ़ॉर्म एपीआई का इस्तेमाल करें. टेक्स्ट को बिट मैप पर रेंडर किया जा सकता है
Canvas
और अगर ज़रूरी हो, तो रॉ इमेज पाने के लिए इसका इस्तेमाल करें. - अपने ऐप्स में COLRv1 फ़ॉन्ट समर्थन जोड़ें. FreeType ओपन सोर्स लाइब्रेरी वर्शन 2.13.0 में COLRv1 के साथ काम करता है और उच्च.
- आखिरी उपाय के तौर पर, लेगसी इमोजी फ़ॉन्ट फ़ाइल को बंडल किया जा सकता है
(
NotoColorEmoji.ttf
) को डाउनलोड करने, हालांकि, इस मामले में आपके ऐप्लिकेशन के लिए इमोजी के नए अपडेट उपलब्ध नहीं होंगे. इसके लिए ज़्यादा जानकारी के लिए, नोटो इमोजी GitHub प्रोजेक्ट देखें पेज पर जाएं.
SDK टूल के टारगेट किए जाने वाले कम से कम वर्शन को 23 से बढ़ाकर 24 कर दिया गया
Android 15, Android 15 के साथ
Android 14 में किए गए बदलावों को ध्यान में रखते हुए बनाया गया है.
सुरक्षा को बेहतर किया है. Android 15 में, 24 से कम targetSdkVersion
वाले ऐप्लिकेशन इंस्टॉल नहीं किए जा सकते.
आधुनिक एपीआई लेवल को पूरा करने के लिए ऐप्लिकेशन की ज़रूरत, बेहतर सुरक्षा और
निजता.
मैलवेयर, सुरक्षा और निजता को बायपास करने के लिए, अक्सर एपीआई लेवल के निचले हिस्से को टारगेट करता है
सुरक्षा से जुड़ी सुविधाएं मौजूद हैं जो Android के नए वर्शन में उपलब्ध कराई गई हैं. उदाहरण के लिए,
कुछ मैलवेयर ऐप्लिकेशनtargetSdkVersion
रनटाइम अनुमति मॉडल को 2015 में Android 6.0 Marshmallow (एपीआई) ने लॉन्च किया था
लेवल 23). Android 15 में किए गए इस बदलाव की वजह से, मैलवेयर से सुरक्षा को रोकना मुश्किल हो गया है
और निजता में सुधार किए गए हैं. कम एपीआई को टारगेट करने वाला ऐप्लिकेशन इंस्टॉल करने की कोशिश
के स्तर के कारण इंस्टॉलेशन विफल हो जाता है, जिसमें ऐसा मैसेज दिखाई देता है
Logcat में दिखाई दे रहा है:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7
Android 15 पर अपग्रेड करने वाले डिवाइसों पर, targetSdkVersion
24 से कम वाले सभी ऐप्लिकेशन इंस्टॉल रहेंगे.
अगर आपको पुराने एपीआई लेवल को टारगेट करने वाले किसी ऐप्लिकेशन की जांच करनी है, तो यहां दिए गए ADB का इस्तेमाल करें आदेश:
adb install --bypass-low-target-sdk-block FILENAME.apk
कैमरा और मीडिया
Android 15 में, सभी ऐप्लिकेशन के लिए कैमरे और मीडिया के व्यवहार में ये बदलाव किए गए हैं.
रिसॉर्स की सीमा पूरी होने पर, डायरेक्ट और ऑफ़लोड किए गए ऑडियो ट्रैक को चलाने पर, पहले से खुले डायरेक्ट या ऑफ़लोड किए गए ऑडियो ट्रैक अमान्य हो जाते हैं
在 Android 15 之前,如果某个应用在另一个应用正在播放音频时请求直接播放或分流音频播放,并且已达到资源限制,此应用将无法打开新的 AudioTrack
。
从 Android 15 开始,当应用请求直接或分流播放并且达到资源限制时,系统会使当前打开的所有 AudioTrack
对象失效,从而阻止执行新的轨道请求。
(直接和分流音轨通常会打开,以播放压缩的音频格式。播放直接音频的常见用例包括通过 HDMI 将编码音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)
उपयोगकर्ता अनुभव और सिस्टम यूज़र इंटरफ़ेस (यूआई)
Android 15 में कुछ बदलाव किए गए हैं. इनका मकसद, उपयोगकर्ताओं को ज़्यादा बेहतर और आसान अनुभव देना है.
ऑप्ट-इन किए गए ऐप्लिकेशन के लिए, अनुमानित बैक ऐनिमेशन चालू किए गए
从 Android 15 开始,移除了预测性返回动画的开发者选项。现在,对于已完全或在 activity 级别选择启用预测性返回手势的应用,系统现在会显示“返回主屏幕”“跨任务”和“跨 activity”等系统动画。如果您的应用受到影响,请执行以下操作:
- 确保您的应用已正确迁移,以使用预测性返回手势。
- 确保您的 fragment 转换支持预测性返回导航。
- 停止使用动画和框架转换,并改用 Animator 和 AndroidX 转换。
- 从
FragmentManager
不知道的返回堆栈中迁出。请改用由FragmentManager
或 Navigation 组件管理的返回堆栈。
जब कोई उपयोगकर्ता किसी ऐप्लिकेशन को ज़बरदस्ती बंद करता है, तो विजेट बंद हो जाते हैं
如果用户在搭载 Android 15 的设备上强行停止某个应用,系统会暂时停用该应用的所有 widget。这些 widget 会灰显,用户无法与它们互动。这是因为,从 Android 15 开始,当应用被强行停止时,系统会取消应用的所有待处理 intent。
系统会在用户下次启动应用时重新启用这些 widget。
如需了解详情,请参阅对软件包停止状态的更改。
मीडिया प्रोजेक्शन स्टेटस बार चिप, उपयोगकर्ताओं को स्क्रीन शेयर करने, कास्ट करने, और रिकॉर्ड करने के बारे में सूचना देता है
Screen projection exploits expose private user data such as financial information because users don't realize their device screen is being shared. Android has until now shown screen cast and screen record icons on the status bar, but the icons are small and often overlooked. Also, stopping screen sharing or recording is cumbersome because controls are in Quick Settings.
Android 15 introduces a new status bar chip that is large and prominent, which should alert users to any in-progress screen projection. Users can tap the chip to stop their screen from being shared, cast, or recorded.
To provide an intuitive user experience, screen projection now automatically stops when the device screen is locked.
Benefits and performance gains
The new media projection status bar chip enhances the user experience as follows:
- Alerts users to in-progress screen sharing, casting, or recording
- Enable users to terminate screen projection by tapping the chip
Automatic suspension of screen projection when the device screen is locked ensures user privacy.
Check if your app is impacted
By default, your app includes the new status bar chip and automatically suspends
screen projection when the lock screen activates. Test your app by implementing
the
onStop()
method of the
MediaProjection.Callback
.
Verify that your app responds appropriately when the screen projection stops as
a result of the user tapping the status bar chip or when the lock screen
activates.
अब काम नहीं करने वाले वर्शन
हर रिलीज़ के साथ, कुछ Android एपीआई पुराने हो सकते हैं या उन्हें फिर से तैयार करने की ज़रूरत पड़ सकती है. ऐसा, डेवलपर को बेहतर अनुभव देने या प्लैटफ़ॉर्म की नई सुविधाओं के साथ काम करने के लिए किया जाता है. इन मामलों में, हम आधिकारिक तौर पर, पुराने एपीआई का इस्तेमाल बंद कर देते हैं. साथ ही, डेवलपर को इसके बजाय अन्य एपीआई का इस्तेमाल करने के लिए कहते हैं.
बंद होने का मतलब है कि हमने एपीआई के लिए आधिकारिक सहायता बंद कर दी है. हालांकि, ये डेवलपर के लिए उपलब्ध रहेंगे. Android के इस वर्शन में, काम न करने वाले अहम API के बारे में ज़्यादा जानने के लिए, काम न करने वाले API का पेज देखें.