Android 14 প্ল্যাটফর্মে এমন আচরণগত পরিবর্তন রয়েছে যা আপনার অ্যাপকে প্রভাবিত করতে পারে। নিম্নলিখিত আচরণগত পরিবর্তনগুলি সমস্ত অ্যাপের ক্ষেত্রে প্রযোজ্য যখন তারা Android 14 এ চলে, targetSdkVersion নির্বিশেষে। আপনার অ্যাপটি পরীক্ষা করা উচিত এবং তারপরে প্রযোজ্য ক্ষেত্রে এগুলি সঠিকভাবে সমর্থন করার জন্য প্রয়োজন অনুসারে এটি পরিবর্তন করা উচিত।
শুধুমাত্র Android 14-কে লক্ষ্য করে এমন অ্যাপগুলিকে প্রভাবিত করে এমন আচরণগত পরিবর্তনের তালিকাটিও পর্যালোচনা করতে ভুলবেন না।
মূল কার্যকারিতা
ডিফল্টরূপে সঠিক অ্যালার্মের সময়সূচী বাতিল করা হয়
精确的闹钟适用于用户指定的通知,或是在确切时间需要执行的操作。从 Android 14 开始,系统不再向以 Android 13 及更高版本为目标平台的大多数新安装应用预先授予 SCHEDULE_EXACT_ALARM 权限,该权限默认处于拒绝状态。
详细了解安排精确闹钟的权限变化。
অ্যাপ ক্যাশে করার সময় প্রসঙ্গ-নিবন্ধিত সম্প্রচারগুলি সারিবদ্ধ থাকে
在 Android 14 中,当应用处于缓存状态时,系统可以将上下文注册的广播放入队列中。这与 Android 12(API 级别 31)为异步 binder 事务引入的队列行为类似。在清单中声明的广播不会加入队列,并且应用会从缓存状态中移除以进行广播传递。
当应用离开缓存状态(例如返回前台)时,系统会传递所有已加入队列的广播。某些广播的多个实例 可能会合并为一个广播。取决于其他因素,如系统 运行状况,则可能会从缓存状态中移除应用,以及之前排队 广播。
অ্যাপগুলি কেবল তাদের নিজস্ব ব্যাকগ্রাউন্ড প্রক্রিয়াগুলিকেই ধ্বংস করতে পারে
从 Android 14 开始,当您的应用调用 killBackgroundProcesses() 时,该 API 只能终止您自己应用的后台进程。
如果您传入另一个应用的软件包名称,此方法对该应用的后台进程没有影响,并且 Logcat 中会显示以下消息:
Invalid packageName: com.example.anotherapp
您的应用不应使用 killBackgroundProcesses() API,也不得以其他方式尝试影响其他应用的进程生命周期,即使在旧版操作系统上也是如此。Android 旨在让缓存应用在后台运行,并在系统需要内存时自动终止它们。如果您的应用会不必要地终止其他应用,则由于之后需要完全重启这些应用,因此可能会降低系统性能并增加耗电量,这比恢复现有缓存应用所消耗的资源要多得多。
প্রথম GATT ক্লায়েন্টের জন্য MTU 517 এ সেট করা হয়েছে যেটি MTU অনুরোধ করছে।
অ্যান্ড্রয়েড 14 থেকে শুরু করে, অ্যান্ড্রয়েড ব্লুটুথ স্ট্যাকটি ব্লুটুথ কোর স্পেসিফিকেশনের সংস্করণ 5.2কে আরও কঠোরভাবে মেনে চলে এবং যখন প্রথম GATT ক্লায়েন্ট BluetoothGatt#requestMtu(int) API ব্যবহার করে একটি MTU অনুরোধ করে তখন BLE ATT MTU-কে 517 বাইটে অনুরোধ করে এবং সমস্ত কিছু উপেক্ষা করে। সেই ACL সংযোগে পরবর্তী MTU অনুরোধ।
এই পরিবর্তনটি মোকাবেলা করতে এবং আপনার অ্যাপকে আরও শক্তিশালী করতে, নিম্নলিখিত বিকল্পগুলি বিবেচনা করুন:
- আপনার পেরিফেরাল ডিভাইসটি অ্যান্ড্রয়েড ডিভাইসের এমটিইউ অনুরোধে একটি যুক্তিসঙ্গত মান সহ সাড়া দেবে যা পেরিফেরাল দ্বারা মিটমাট করা যেতে পারে। চূড়ান্ত আলোচনার মানটি হবে ন্যূনতম Android অনুরোধ করা মান এবং দূরবর্তী প্রদত্ত মান (উদাহরণস্বরূপ,
min(517, remoteMtu))- এই ফিক্সটি বাস্তবায়নের জন্য পেরিফেরালের জন্য একটি ফার্মওয়্যার আপডেটের প্রয়োজন হতে পারে
- বিকল্পভাবে, আপনার পেরিফেরালের পরিচিত সমর্থিত মান এবং প্রাপ্ত MTU পরিবর্তনের মধ্যে ন্যূনতমের উপর ভিত্তি করে আপনার GATT বৈশিষ্ট্যের লেখাগুলিকে সীমাবদ্ধ করুন
- একটি অনুস্মারক যে আপনাকে হেডারগুলির জন্য সমর্থিত আকার থেকে 5 বাইট কমাতে হবে
- যেমন:
arrayMaxLength = min(SUPPORTED_MTU, GATT_MAX_ATTR_LEN(517)) - 5
একটি অ্যাপকে সীমাবদ্ধ স্ট্যান্ডবাই বাকেটে রাখার নতুন কারণ
Android 14 একটি অ্যাপকে সীমাবদ্ধ স্ট্যান্ডবাই বাকেটের মধ্যে স্থাপন করার একটি নতুন কারণ উপস্থাপন করেছে৷ onStartJob , onStopJob , বা onBind পদ্ধতির সময়সীমার কারণে অ্যাপের কাজগুলি একাধিকবার ANR ত্রুটিগুলিকে ট্রিগার করে৷ ( onStartJob এবং onStopJob এ পরিবর্তনের জন্য JobScheduler কলব্যাক এবং নেটওয়ার্ক আচরণকে শক্তিশালী করে দেখুন।)
অ্যাপটি সীমাবদ্ধ স্ট্যান্ডবাই বালতিতে প্রবেশ করেছে কিনা তা ট্র্যাক করতে, আমরা কাজ সম্পাদনে API UsageStatsManager.getAppStandbyBucket() অথবা অ্যাপ স্টার্টআপে UsageStatsManager.queryEventsForSelf() দিয়ে লগ করার পরামর্শ দিই।
mlock 64 KB-তে সীমাবদ্ধ
অ্যান্ড্রয়েড 14 (এপিআই লেভেল 34) এবং উচ্চতর, প্ল্যাটফর্মটি সর্বাধিক মেমরি কমিয়ে দেয় যা mlock() ব্যবহার করে লক করা যায় প্রতি প্রক্রিয়ায় 64 KB। পূর্ববর্তী সংস্করণগুলিতে, সীমাটি প্রতি প্রক্রিয়ায় 64 MB ছিল। এই সীমাবদ্ধতাটি অ্যাপ এবং সিস্টেম জুড়ে আরও ভাল মেমরি পরিচালনার প্রচার করে। ডিভাইস জুড়ে আরও ধারাবাহিকতা প্রদান করতে, Android 14 সামঞ্জস্যপূর্ণ ডিভাইসগুলিতে নতুন mlock() সীমার জন্য একটি নতুন CTS পরীক্ষা যোগ করে।
সিস্টেম ক্যাশেড-অ্যাপ রিসোর্স ব্যবহার জোরদার করে
ডিজাইন অনুসারে , একটি অ্যাপের প্রক্রিয়াটি একটি ক্যাশে অবস্থায় থাকে যখন এটিকে ব্যাকগ্রাউন্ডে সরানো হয় এবং অন্য কোনও অ্যাপ প্রক্রিয়া উপাদান চলমান থাকে না। এই ধরনের একটি অ্যাপ প্রক্রিয়া সিস্টেম মেমরি চাপের কারণে নিহত হওয়ার বিষয়। onStop() পদ্ধতি কল করার পরে এবং ফেরত দেওয়ার পরে যে কোনও কাজ যা Activity ইনস্ট্যান্স সঞ্চালন করে, এই অবস্থায়, অবিশ্বস্ত এবং দৃঢ়ভাবে নিরুৎসাহিত করা হয়।
অ্যান্ড্রয়েড 14 এই ডিজাইনে ধারাবাহিকতা এবং প্রয়োগের পরিচয় দেয়। একটি অ্যাপ প্রসেস ক্যাশ করা অবস্থায় প্রবেশ করার কিছুক্ষণ পরে, একটি প্রক্রিয়া উপাদান জীবনচক্রের একটি সক্রিয় অবস্থায় পুনঃপ্রবেশ না করা পর্যন্ত ব্যাকগ্রাউন্ডের কাজ অনুমোদিত নয়।
যে অ্যাপগুলি সাধারণত ফ্রেমওয়ার্ক-সমর্থিত লাইফসাইকেল API ব্যবহার করে – যেমন পরিষেবা , JobScheduler , এবং Jetpack WorkManager – এই পরিবর্তনগুলি দ্বারা প্রভাবিত হওয়া উচিত নয়৷
ব্যবহারকারীর অভিজ্ঞতা
ব্যবহারকারীরা কীভাবে খারিজযোগ্য নয় এমন বিজ্ঞপ্তিগুলি উপভোগ করেন তার পরিবর্তনগুলি
যদি আপনার অ্যাপ ব্যবহারকারীদের কাছে অ-খারিজ ফোরগ্রাউন্ড বিজ্ঞপ্তি দেখায়, তাহলে Android 14 ব্যবহারকারীদের এই ধরনের বিজ্ঞপ্তি খারিজ করার অনুমতি দেওয়ার জন্য আচরণ পরিবর্তন করেছে।
এই পরিবর্তনটি এমন অ্যাপের ক্ষেত্রে প্রযোজ্য যা ব্যবহারকারীদের Notification.FLAG_ONGOING_EVENT এর মাধ্যমে Notification.Builder#setOngoing(true) বা NotificationCompat.Builder#setOngoing(true) সেট করে ফোরগ্রাউন্ড বিজ্ঞপ্তি খারিজ করা থেকে বাধা দেয়। FLAG_ONGOING_EVENT এর আচরণ পরিবর্তিত হয়েছে যাতে ব্যবহারকারীর দ্বারা এই ধরনের বিজ্ঞপ্তিগুলিকে খারিজ করা যায়৷
নিম্নলিখিত শর্তে এই ধরনের বিজ্ঞপ্তিগুলি এখনও খারিজযোগ্য নয়:
- ফোন লক হয়ে গেলে
- যদি ব্যবহারকারী একটি ক্লিয়ার অল নোটিফিকেশন অ্যাকশন নির্বাচন করে (যা দুর্ঘটনাজনিত বরখাস্তের ক্ষেত্রে সাহায্য করে)
এছাড়াও, এই নতুন আচরণ নিম্নলিখিত ব্যবহারের ক্ষেত্রে বিজ্ঞপ্তিগুলিতে প্রযোজ্য নয়:
-
CallStyleবিজ্ঞপ্তি - এন্টারপ্রাইজের জন্য ডিভাইস পলিসি কন্ট্রোলার (ডিপিসি) এবং সমর্থনকারী প্যাকেজ
- মিডিয়া বিজ্ঞপ্তি
- ডিফল্ট অনুসন্ধান নির্বাচক প্যাকেজ
ডেটা সুরক্ষা তথ্য আরও দৃশ্যমান
为了加强用户隐私保护,Android 14 增加了系统显示您在 Play 管理中心表单中声明的信息的位置数量。目前,用户可以在 Google Play 中的应用详情的数据安全部分查看此信息。
我们建议您查看应用的位置数据分享政策,并花一点时间对应用的 Google Play“数据安全”部分进行任何适用的更新。
如需了解详情,请参阅有关如何在 Android 14 上以更显眼的方式显示数据安全信息的指南。
অ্যাক্সেসযোগ্যতা
নন-লিনিয়ার ফন্ট স্কেলিং ২০০% এ
从 Android 14 开始,系统支持将字体放大至最高 200%,为用户提供更多无障碍选项。
如果您已使用可缩放像素 (sp) 单位来定义文本大小,这项更改可能不会对您的应用产生太大影响。不过,您应在启用最大字号 (200%) 的情况下执行界面测试,确保应用能够在不影响易用性的情况下适应较大的字号。
নিরাপত্তা
ন্যূনতম ইনস্টলযোগ্য টার্গেট API স্তর
Android 14 দিয়ে শুরু করে, 23-এর কম targetSdkVersion সহ অ্যাপ ইনস্টল করা যাবে না। এই ন্যূনতম লক্ষ্য API স্তরের প্রয়োজনীয়তাগুলি পূরণ করার জন্য অ্যাপগুলির প্রয়োজন ব্যবহারকারীদের জন্য নিরাপত্তা এবং গোপনীয়তা উন্নত করে৷
নতুন অ্যান্ড্রয়েড সংস্করণে প্রবর্তিত নিরাপত্তা এবং গোপনীয়তা সুরক্ষাগুলিকে বাইপাস করার জন্য ম্যালওয়্যার প্রায়শই পুরানো API স্তরগুলিকে লক্ষ্য করে৷ উদাহরণস্বরূপ, Android 6.0 Marshmallow (API স্তর 23) দ্বারা 2015 সালে চালু করা রানটাইম অনুমতি মডেলের শিকার হওয়া এড়াতে কিছু ম্যালওয়্যার অ্যাপ 22-এর একটি targetSdkVersion ব্যবহার করে। এই Android 14 পরিবর্তন নিরাপত্তা এবং গোপনীয়তার উন্নতি এড়াতে ম্যালওয়্যারের জন্য কঠিন করে তোলে। একটি নিম্ন API স্তর লক্ষ্য করে একটি অ্যাপ ইনস্টল করার চেষ্টা করার ফলে একটি ইনস্টলেশন ব্যর্থ হবে, নিম্নলিখিত বার্তাটি লগক্যাটে উপস্থিত হবে:
INSTALL_FAILED_DEPRECATED_SDK_VERSION: App package must target at least SDK version 23, but found 7
Android 14-এ আপগ্রেড করা ডিভাইসগুলিতে, 23-এর কম targetSdkVersion সহ যেকোনও অ্যাপ ইনস্টল থাকবে।
আপনি যদি একটি পুরানো API স্তর লক্ষ্য করে একটি অ্যাপ্লিকেশন পরীক্ষা করতে চান, নিম্নলিখিত ADB কমান্ড ব্যবহার করুন:
adb install --bypass-low-target-sdk-block FILENAME.apk
মিডিয়া মালিকের প্যাকেজের নামগুলি হয়তো মুছে ফেলা হতে পারে
媒体库支持查询 OWNER_PACKAGE_NAME 列,该列表示存储特定媒体文件的应用。从 Android 14 开始,除非满足以下条件之一,否则系统会隐去此值:
- 存储媒体文件的应用有一个软件包名称始终对其他应用可见。
查询媒体库的应用会请求
QUERY_ALL_PACKAGES权限。
详细了解 Android 如何出于隐私保护目的而过滤软件包可见性。