আচরণ পরিবর্তন: সমস্ত অ্যাপ্লিকেশন

অ্যান্ড্রয়েড 15 প্ল্যাটফর্মে এমন আচরণের পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণের পরিবর্তনগুলি সমস্ত অ্যাপের ক্ষেত্রে প্রযোজ্য যখন সেগুলি Android 15 এ চলে, targetSdkVersion নির্বিশেষে। আপনার অ্যাপটি পরীক্ষা করা উচিত এবং তারপরে যেখানে প্রযোজ্য সেখানে সঠিকভাবে সমর্থন করার জন্য প্রয়োজন অনুসারে এটি সংশোধন করা উচিত।

এছাড়াও আচরণ পরিবর্তনের তালিকা পর্যালোচনা করতে ভুলবেন না যা শুধুমাত্র Android 15 কে লক্ষ্য করে এমন অ্যাপগুলিকে প্রভাবিত করে

মূল কার্যকারিতা

Android 15 অ্যান্ড্রয়েড সিস্টেমের বিভিন্ন মূল ক্ষমতাগুলিকে সংশোধন বা প্রসারিত করে।

প্যাকেজ পরিবর্তন স্টপ অবস্থা

软件包 FLAG_STOPPED 状态(用户可以通过在 AOSP build 中长按应用图标并选择“强制停止”来启用此状态)的用途一直是让应用保持在此状态,直到用户通过直接启动应用或间接与应用互动(通过 Sharesheet 或 widget、将应用选择为动态壁纸等)来明确将应用从此状态移除。在 Android 15 中,我们更新了系统行为,使其与此预期行为保持一致。应用应仅通过直接或间接的用户操作从停止状态移除。

为了支持预期行为,除了现有限制之外,当应用在搭载 Android 15 的设备上进入停止状态时,系统还会取消所有待处理 intent。当用户的操作将应用从停止状态移除时,系统会将 ACTION_BOOT_COMPLETED 广播传送到应用,以便应用有机会重新注册所有待处理 intent。

您可以调用新的 ApplicationStartInfo.wasForceStopped() 方法来确认应用是否已进入停止状态。

16 KB পৃষ্ঠার আকারের জন্য সমর্থন

从历史上看,Android 仅支持 4 KB 内存页面大小,这优化了系统内存性能,以适应 Android 设备通常拥有的平均总内存量。从 Android 15 开始,AOSP 支持配置为使用 16 KB 页面大小的设备(16 KB 设备)。如果您的应用直接或通过 SDK 间接使用任何 NDK 库,则需要重新构建应用,才能在这些 16 KB 设备上运行。

随着设备制造商不断制造出具有更大物理内存 (RAM) 的设备,许多此类设备将采用 16 KB(最终甚至更大)的页面大小来优化设备性能。添加对 16 KB 页面大小设备的支持,可让您的应用在这些设备上运行,并帮助您的应用受益于相关的性能改进。如果不重新编译,应用将无法在未来 Android 版本的 16 KB 设备上运行。

为帮助您为应用添加支持,我们提供了相关指南,介绍了如何检查应用是否受到影响、如何重新构建应用(如果适用),以及如何使用模拟器(包括 Android 模拟器的 Android 15 系统映像)在 16 KB 环境中测试应用

Benefits and performance gains

16 KB পৃষ্ঠার আকারের সাথে কনফিগার করা ডিভাইসগুলি গড়ে সামান্য বেশি মেমরি ব্যবহার করে, তবে সিস্টেম এবং অ্যাপ উভয়ের জন্য বিভিন্ন কর্মক্ষমতা উন্নতিও লাভ করে:

  • সিস্টেম মেমরির চাপে থাকাকালীন অ্যাপ লঞ্চের সময় কম: গড়ে 3.16% কম, কিছু অ্যাপের জন্য আরও উল্লেখযোগ্য উন্নতি (30% পর্যন্ত) যা আমরা পরীক্ষা করেছি
  • অ্যাপ লঞ্চের সময় পাওয়ার ড্র কম হয়েছে: গড়ে 4.56% হ্রাস
  • দ্রুত ক্যামেরা লঞ্চ: গড়ে 4.48% দ্রুত গরম শুরু হয় এবং গড়ে 6.60% দ্রুত ঠান্ডা শুরু হয়
  • উন্নত সিস্টেম বুট সময়: গড়ে 8% (প্রায় 950 মিলিসেকেন্ড) দ্বারা উন্নত

এই উন্নতিগুলি আমাদের প্রাথমিক পরীক্ষার উপর ভিত্তি করে করা হয়েছে এবং প্রকৃত ডিভাইসগুলির ফলাফলগুলি সম্ভবত আলাদা হতে পারে৷ আমরা আমাদের পরীক্ষা চালিয়ে যাওয়ার সাথে সাথে অ্যাপগুলির সম্ভাব্য লাভের অতিরিক্ত বিশ্লেষণ প্রদান করব।

Check if your app is impacted

如果您的应用使用了任何原生代码,则应重新构建应用,使其支持 16 KB 设备。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器来确定是否存在任何原生代码,然后检查您找到的任何共享库的 ELF 段对齐情况。Android Studio 还提供了一些功能,可帮助您自动检测对齐问题

如果您的应用仅使用以 Java 或 Kotlin 编程语言编写的代码(包括所有库或 SDK),则该应用已支持 16 KB 设备。不过,我们建议您在 16 KB 环境中测试应用,以验证应用行为是否出现意外的回归。

ব্যক্তিগত স্থান সমর্থন করার জন্য কিছু অ্যাপের জন্য প্রয়োজনীয় পরিবর্তন

Private space is a new feature in Android 15 that lets users create a separate space on their device where they can keep sensitive apps away from prying eyes, under an additional layer of authentication. Because apps in the private space have restricted visibility, some types of apps need to take additional steps to be able to see and interact with apps in a user's private space.

All apps

Because apps in the private space are kept in a separate user profile, similar to work profiles, apps shouldn't assume that any installed copies of their app that aren't in the main profile are in the work profile. If your app has logic related to work profile apps that make this assumption, you'll need to adjust this logic.

Medical apps

When a user locks the private space, all apps in the private space are stopped, and those apps can't perform foreground or background activities, including showing notifications. This behavior might critically impact the use and function of medical apps installed in the private space.

The private space setup experience warns users that the private space is not suitable for apps that need to perform critical foreground or background activities, such as showing notifications from medical apps. However, apps can't determine whether or not they're being used in the private space, so they can't show a warning to the user for this case.

For these reasons, if you develop a medical app, review how this feature might impact your app and take appropriate actions—such as informing your users not to install your app in the private space—to avoid disrupting critical app capabilities.

Launcher apps

If you develop a launcher app, you must do the following before apps in the private space will be visible:

  1. Your app must be assigned as the default launcher app for the device—that is, possessing the ROLE_HOME role.
  2. Your app must declare the ACCESS_HIDDEN_PROFILES normal permission in your app's manifest file.

Launcher apps that declare the ACCESS_HIDDEN_PROFILES permission must handle the following private space use cases:

  1. Your app must have a separate launcher container for apps installed in the private space. Use the getLauncherUserInfo() method to determine which type of user profile is being handled.
  2. The user must be able to hide and show the private space container.
  3. The user must be able to lock and unlock the private space container. Use the requestQuietModeEnabled() method to lock (by passing true) or unlock (by passing false) the private space.
  4. While locked, no apps in the private space container should be visible or discoverable through mechanisms such as search. Your app should register a receiver for the ACTION_PROFILE_AVAILABLE and ACTION_PROFILE_UNAVAILABLE broadcasts and update the UI in your app when the locked or unlocked state of the private space container changes. Both of these broadcasts include EXTRA_USER, which your app can use to refer to the private profile user.

    You can also use the isQuietModeEnabled() method to check whether the private space profile is locked or not.

App store apps

The private space includes an "Install Apps" button that launches an implicit intent to install apps into the user's private space. In order for your app to receive this implicit intent, declare an <intent-filter> in your app's manifest file with a <category> of CATEGORY_APP_MARKET.

PNG-ভিত্তিক ইমোজি ফন্ট সরানো হয়েছে

উত্তরাধিকার, PNG-ভিত্তিক ইমোজি ফন্ট ফাইল ( NotoColorEmojiLegacy.ttf ) সরানো হয়েছে, শুধুমাত্র ভেক্টর-ভিত্তিক ফাইলটি রেখে। অ্যান্ড্রয়েড 13 (API লেভেল 33) থেকে শুরু করে, সিস্টেম ইমোজি রেন্ডারার দ্বারা ব্যবহৃত ইমোজি ফন্ট ফাইলটি একটি PNG-ভিত্তিক ফাইল থেকে ভেক্টর ভিত্তিক ফাইলে পরিবর্তিত হয়েছে । সিস্টেমটি সামঞ্জস্যের কারণে অ্যান্ড্রয়েড 13 এবং 14 এ লিগ্যাসি ফন্ট ফাইলটি ধরে রেখেছে, যাতে তাদের নিজস্ব ফন্ট রেন্ডারার সহ অ্যাপগুলি আপগ্রেড করতে সক্ষম না হওয়া পর্যন্ত লিগ্যাসি ফন্ট ফাইলটি ব্যবহার করা চালিয়ে যেতে পারে।

আপনার অ্যাপ প্রভাবিত হয়েছে কিনা তা পরীক্ষা করতে, NotoColorEmojiLegacy.ttf ফাইলের রেফারেন্সের জন্য আপনার অ্যাপের কোড খুঁজুন।

আপনি বিভিন্ন উপায়ে আপনার অ্যাপটিকে মানিয়ে নিতে বেছে নিতে পারেন:

  • টেক্সট রেন্ডারিংয়ের জন্য প্ল্যাটফর্ম API ব্যবহার করুন। আপনি একটি বিটম্যাপ-ব্যাকড Canvas পাঠ্য রেন্ডার করতে পারেন এবং প্রয়োজনে একটি কাঁচা চিত্র পেতে এটি ব্যবহার করতে পারেন।
  • আপনার অ্যাপে COLRv1 ফন্ট সমর্থন যোগ করুন। FreeType ওপেন সোর্স লাইব্রেরি 2.13.0 এবং উচ্চতর সংস্করণে COLRv1 সমর্থন করে।
  • শেষ অবলম্বন হিসাবে, আপনি আপনার APK-এ লিগ্যাসি ইমোজি ফন্ট ফাইল ( NotoColorEmoji.ttf ) বান্ডিল করতে পারেন, যদিও সেই ক্ষেত্রে আপনার অ্যাপটি সাম্প্রতিক ইমোজি আপডেটগুলি অনুপস্থিত থাকবে৷ আরও তথ্যের জন্য, নোটো ইমোজি গিটহাব প্রকল্প পৃষ্ঠাটি দেখুন।

23 থেকে 24 তে ন্যূনতম লক্ষ্য SDK সংস্করণ বৃদ্ধি করা হয়েছে৷

Android 15 builds on the the changes that were made in Android 14 and extends this security further. In Android 15, apps with a targetSdkVersion lower than 24 can't be installed. Requiring apps to meet modern API levels helps to ensure better security and privacy.

Malware often targets lower API levels in order to bypass security and privacy protections that have been introduced in higher Android versions. For example, some malware apps use a targetSdkVersion of 22 to avoid being subjected to the runtime permission model introduced in 2015 by Android 6.0 Marshmallow (API level 23). This Android 15 change makes it harder for malware to avoid security and privacy improvements. Attempting to install an app targeting a lower API level results in an installation failure, with a message like the following one appearing in Logcat:

INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 24, but found 7

On devices upgrading to Android 15, any apps with a targetSdkVersion lower than 24 remain installed.

If you need to test an app targeting an older API level, use the following ADB command:

adb install --bypass-low-target-sdk-block FILENAME.apk

নিরাপত্তা এবং গোপনীয়তা

Android 15 introduces robust measures to combat one-time passcode (OTP) fraud and to protect the user's sensitive content, focusing on hardening the Notification Listener Service and screenshare protections. Key enhancements include redacting OTPs from notifications accessible to untrusted apps, hiding notifications during screenshare, and securing app activities when OTPs are posted. These changes aim to keep the user's sensitive content safe from unauthorized actors.

Developers need to be aware of the following to ensure their apps are compatible with the changes in Android 15:

OTP Redaction

Android will stop untrusted apps that implement a NotificationListenerService from reading unredacted content from notifications where an OTP has been detected. Trusted apps such as companion device manager associations are exempt from these restrictions.

Screenshare Protection

  • Notification content is hidden during screen sharing sessions to preserve the user's privacy. If the app implements setPublicVersion(), Android shows the public version of the notification which serves as a replacement notification in insecure contexts. Otherwise, the notification content is redacted without any further context.
  • Sensitive content like password input is hidden from remote viewers to prevent revealing the user's sensitive information.
  • Activities from apps that post notifications during screenshare where an OTP has been detected will be hidden. App content is hidden from the remote viewer when launched.
  • Beyond Android's automatic identification of sensitive fields, developers can manually mark parts of their app as sensitive using setContentSensitivity, which is hidden from remote viewers during screenshare.
  • Developers can choose to toggle the Disable screen share protections option under Developer Options to be exempted from the screenshare protections for demo or testing purposes. The default system screen recorder is exempted from these changes, since the recordings remain on-device.

ক্যামেরা এবং মিডিয়া

Android 15 সমস্ত অ্যাপের জন্য ক্যামেরা এবং মিডিয়া আচরণে নিম্নলিখিত পরিবর্তনগুলি করে৷

প্রত্যক্ষ এবং অফলোড অডিও প্লেব্যাক পূর্বে খোলা সরাসরি বা অফলোড অডিও ট্র্যাকগুলি অবৈধ করে যখন সংস্থান সীমা পৌঁছে যায়

在 Android 15 之前,如果某个应用在另一个应用播放音频且达到资源限制时请求直接或分流音频播放,该应用将无法打开新的 AudioTrack

从 Android 15 开始,当应用请求直接播放或分流播放且达到资源限制时,系统会使任何当前打开的 AudioTrack 对象失效,以防止执行新轨道请求。

(直接音轨和分流音轨通常会打开,以播放压缩音频格式。播放直接音频的常见用例包括通过 HDMI 将编码的音频流式传输到电视。分流轨道通常用于在具有硬件 DSP 加速的移动设备上播放压缩音频。)

ব্যবহারকারীর অভিজ্ঞতা এবং সিস্টেম UI

অ্যান্ড্রয়েড 15-এ এমন কিছু পরিবর্তন রয়েছে যা আরও সামঞ্জস্যপূর্ণ, স্বজ্ঞাত ব্যবহারকারীর অভিজ্ঞতা তৈরি করার উদ্দেশ্যে করা হয়েছে।

অপ্ট-ইন করা অ্যাপগুলির জন্য ভবিষ্যদ্বাণীমূলক ব্যাক অ্যানিমেশন সক্ষম করা হয়েছে৷

অ্যান্ড্রয়েড 15 থেকে শুরু করে, ভবিষ্যদ্বাণীমূলক ব্যাক অ্যানিমেশনের জন্য বিকাশকারী বিকল্পটি সরানো হয়েছে। সিস্টেম অ্যানিমেশন যেমন ব্যাক-টু-হোম, ক্রস-টাস্ক, এবং ক্রস-অ্যাক্টিভিটি এখন এমন অ্যাপগুলির জন্য উপস্থিত হয় যেগুলি সম্পূর্ণরূপে বা কোনও কার্যকলাপ স্তরে পূর্বাভাসমূলক ব্যাক জেসচারে বেছে নিয়েছে ৷ আপনার অ্যাপ প্রভাবিত হলে, নিম্নলিখিত পদক্ষেপগুলি নিন:

  • ভবিষ্যদ্বাণীমূলক ব্যাক জেসচার ব্যবহার করতে আপনার অ্যাপটি সঠিকভাবে স্থানান্তরিত হয়েছে তা নিশ্চিত করুন।
  • নিশ্চিত করুন যে আপনার টুকরো রূপান্তরগুলি পূর্বাভাসমূলক ব্যাক নেভিগেশনের সাথে কাজ করে৷
  • অ্যানিমেশন এবং ফ্রেমওয়ার্ক ট্রানজিশন থেকে দূরে সরে যান এবং পরিবর্তে অ্যানিমেটর এবং অ্যান্ড্রয়েডক্স ট্রানজিশন ব্যবহার করুন।
  • FragmentManager জানেন না এমন ব্যাক স্ট্যাকগুলি থেকে দূরে স্থানান্তর করুন৷ এর পরিবর্তে FragmentManager বা নেভিগেশন উপাদান দ্বারা পরিচালিত ব্যাক স্ট্যাকগুলি ব্যবহার করুন৷

ব্যবহারকারী যখন কোনো অ্যাপকে জোর করে থামিয়ে দেয় তখন উইজেট অক্ষম করা হয়

If a user force-stops an app on a device running Android 15, the system temporarily disables all the app's widgets. The widgets are grayed out, and the user cannot interact with them. This is because beginning with Android 15, the system cancels all an app's pending intents when the app is force-stopped.

The system re-enables those widgets the next time the user launches the app.

For more information, see Changes to package stopped state.

মিডিয়া প্রজেকশন স্ট্যাটাস বার চিপ ব্যবহারকারীদের স্ক্রিন শেয়ারিং, কাস্টিং এবং রেকর্ডিং সম্পর্কে সতর্ক করে

屏幕投影漏洞会泄露用户的私密数据(例如财务信息),因为用户不知道自己的设备屏幕正在共享。

对于搭载 Android 15 QPR1 或更高版本的设备上运行的应用,系统会在状态栏中显示一个醒目的大条状标签,以提醒用户正在进行的任何屏幕投影。用户可以点按该条状标签,停止共享、投放或录制其屏幕。此外,当设备屏幕锁定时,屏幕投影会自动停止。

স্ক্রিন শেয়ারিং, কাস্টিং এবং রেকর্ডিংয়ের জন্য স্ট্যাটাস বার চিপ।

Check if your app is impacted

By default, your app includes the status bar chip and automatically suspends screen projection when the lock screen activates.

To learn more about how to test your app for these use cases, see Status bar chip and auto stop.

পটভূমি নেটওয়ার্ক অ্যাক্সেস সীমাবদ্ধতা

在 Android 15 中,如果应用在有效的进程生命周期之外启动网络请求,则会收到异常。通常是 UnknownHostException 或其他与套接字相关的 IOException。在有效生命周期之外发生的网络请求通常是因为应用在不再活跃后,不知不觉地继续发出网络请求。

为缓解此异常,请使用生命周期感知型组件,确保您的网络请求具有生命周期感知功能,并在离开有效的进程生命周期时取消。如果您非常重视即使用户离开应用也要发出网络请求,请考虑使用 WorkManager 调度网络请求,或使用前台服务继续执行对用户可见的任务。

অবজ্ঞা

প্রতিটি প্রকাশের সাথে, নির্দিষ্ট Android APIগুলি অপ্রচলিত হয়ে যেতে পারে বা আরও ভাল বিকাশকারীর অভিজ্ঞতা প্রদান করতে বা নতুন প্ল্যাটফর্মের সক্ষমতাগুলিকে সমর্থন করার জন্য পুনরায় ফ্যাক্টর করতে হবে৷ এই ক্ষেত্রে, আমরা আনুষ্ঠানিকভাবে অপ্রচলিত API গুলিকে অবমূল্যায়ন করি এবং পরিবর্তে ব্যবহার করার জন্য বিকল্প APIগুলিতে বিকাশকারীদের নির্দেশ করি৷

অবচয় মানে আমরা API-এর জন্য অফিসিয়াল সমর্থন বন্ধ করে দিয়েছি, কিন্তু সেগুলি ডেভেলপারদের কাছে উপলব্ধ থাকবে। অ্যান্ড্রয়েডের এই রিলিজে উল্লেখযোগ্য অবচয় সম্পর্কে আরও জানতে, অবচয় পৃষ্ঠাটি দেখুন।