16 কেবি পৃষ্ঠার আকার সমর্থন করে

16 KB Google Play সামঞ্জস্যের প্রয়োজন
1লা নভেম্বর, 2025 থেকে, সমস্ত নতুন অ্যাপ এবং Google Play-তে জমা দেওয়া বিদ্যমান অ্যাপগুলির আপডেট এবং Android 15+ ডিভাইসগুলিকে লক্ষ্য করে 64-বিট ডিভাইসে 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 环境中测试应用

সুবিধা এবং কর্মক্ষমতা লাভ

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

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

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

আপনার অ্যাপ প্রভাবিত হয়েছে কিনা তা পরীক্ষা করুন

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

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

আপনার অ্যাপ কি নেটিভ কোড ব্যবহার করে?

আপনার অ্যাপটি নেটিভ কোড ব্যবহার করে যদি নিচের কোনটি প্রযোজ্য হয়:

  • আপনার অ্যাপ যেকোনো C/C++ (নেটিভ) কোড ব্যবহার করে। আপনার অ্যাপ যদি Android NDK ব্যবহার করে, তাহলে আপনার অ্যাপটি নেটিভ কোড ব্যবহার করে।
  • আপনার অ্যাপ যেকোন থার্ড-পার্টি নেটিভ লাইব্রেরি বা নির্ভরতা (যেমন SDK) এর সাথে লিঙ্ক করে যা সেগুলি ব্যবহার করে।
  • আপনার অ্যাপটি একটি থার্ড-পার্টি অ্যাপ নির্মাতা দ্বারা তৈরি করা হয়েছে যেটি ডিভাইসে নেটিভ লাইব্রেরি ব্যবহার করে।

APK বিশ্লেষক ব্যবহার করে নেটিভ লাইব্রেরি সনাক্ত করুন

APK বিশ্লেষক একটি টুল যা আপনাকে একটি নির্মিত APK এর বিভিন্ন দিক মূল্যায়ন করতে দেয়। আপনার অ্যাপটি নেটিভ কোড ব্যবহার করে কিনা তা পরীক্ষা করতে (এটি 16 KB সামঞ্জস্যপূর্ণ কিনা)

  1. অ্যান্ড্রয়েড স্টুডিও খুলুন, তারপরে ফাইল > খুলুন ক্লিক করুন এবং যেকোনো প্রকল্প বেছে নিন।
  2. মেনু বার থেকে, Build > Analyze APK... এ ক্লিক করুন।

    APK বিশ্লেষক চালু করতে স্টুডিও বিল্ড মেনু বিকল্প
  3. আপনি যে APK বিশ্লেষণ করতে চান সেটি বেছে নিন।

  4. lib ফোল্ডারের মধ্যে দেখুন, যেটি শেয়ার করা অবজেক্ট ( .so ) ফাইলগুলিকে হোস্ট করে যদি থাকে। কোনো শেয়ার করা অবজেক্ট ফাইল উপস্থিত থাকলে, আপনার অ্যাপ নেটিভ কোড ব্যবহার করে। সারিবদ্ধকরণ কলাম যে কোনো ফাইলের জন্য সতর্কতা বার্তা প্রদর্শন করে যেটিতে প্রান্তিককরণের সমস্যা রয়েছে। যদি কোনো শেয়ার করা অবজেক্ট ফাইল না থাকে বা কোনো lib ফোল্ডার না থাকে, তাহলে আপনার অ্যাপ নেটিভ কোড ব্যবহার করে না।

    APK বিশ্লেষক দৃশ্য দেখায় যে ভাগ করা অবজেক্ট ফাইল উপস্থিত রয়েছে

স্বয়ংক্রিয় চেকগুলির সাথে প্রান্তিককরণের সমস্যাগুলি সনাক্ত করুন৷

আপনার প্রি-বিল্ট লাইব্রেরি বা APK 16 KB অনুগত না হলে Android Studio আপনাকে সক্রিয়ভাবে সতর্ক করে। কোন লাইব্রেরি আপডেট করা দরকার বা কোন কোড পরিবর্তনের প্রয়োজন হলে তা পর্যালোচনা করতে APK বিশ্লেষক টুল ব্যবহার করুন।

একটি প্রকল্পে প্রান্তিককরণ সমস্যা সম্পর্কে স্টুডিও সতর্কতা বিজ্ঞপ্তি

অ্যান্ড্রয়েড স্টুডিওতে লিন্ট নেটিভ লাইব্রেরিগুলিও হাইলাইট করে যেগুলি 16 কেবি সারিবদ্ধ নয়।

একটি অ-সংযুক্ত নেটিভ লাইব্রেরি সম্পর্কে স্টুডিও লিন্টার সতর্কতা

শেয়ার্ড লাইব্রেরির জন্য ELF সেগমেন্টের প্রান্তিককরণ পরীক্ষা করুন

যেকোনো শেয়ার করা লাইব্রেরির জন্য, যাচাই করুন যে শেয়ার করা লাইব্রেরির ELF সেগমেন্টগুলি 16 KB ELF অ্যালাইনমেন্ট ব্যবহার করে সঠিকভাবে সারিবদ্ধ হয়েছে। আপনি যদি Linux বা macOS-তে বিকাশ করছেন, তাহলে নিচের বিভাগে বর্ণিত check_elf_alignment.sh স্ক্রিপ্টটি ব্যবহার করতে পারেন। আপনি সরাসরি কমান্ড-লাইন সরঞ্জামগুলিও ব্যবহার করতে পারেন।

check_elf_alignment.sh স্ক্রিপ্ট ব্যবহার করুন (Linux বা macOS)

check_elf_alignment.sh স্ক্রিপ্ট ব্যবহার করে ELF বিভাগগুলির প্রান্তিককরণ পরীক্ষা করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. check_elf_alignment.sh স্ক্রিপ্ট একটি ফাইলে সংরক্ষণ করুন।

  2. আপনার অ্যাপের APK ফাইলে স্ক্রিপ্টটি চালান:

    check_elf_alignment.sh APK_NAME.apk
    

    সমস্ত arm64-v8a শেয়ার করা লাইব্রেরিগুলির জন্য স্ক্রিপ্টটি ALIGNED বা UNALIGNED আউটপুট দেয়।

  3. যদি কোনো arm64-v8a বা x86_64 শেয়ার করা লাইব্রেরি UNALIGNED থাকে, তাহলে আপনাকে সেই লাইব্রেরিগুলির জন্য প্যাকেজিং আপডেট করতে হবে, তারপর আপনার অ্যাপটি পুনরায় কম্পাইল করুন এবং এই বিভাগের ধাপগুলি অনুসরণ করে পুনরায় পরীক্ষা করুন৷

সরাসরি কমান্ড-লাইন টুল ব্যবহার করুন

সরাসরি কমান্ড-লাইন সরঞ্জাম ব্যবহার করে ELF বিভাগগুলির প্রান্তিককরণ পরীক্ষা করতে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. Android স্টুডিওতে SDK ম্যানেজার বা sdkmanager কমান্ড-লাইন টুল ব্যবহার করে Android SDK Build-Tools সংস্করণ 35.0.0 বা উচ্চতর এবং Android NDK উভয়ই ইনস্টল করা আছে তা নিশ্চিত করুন।
  2. আপনার অ্যাপের APK ফাইল বের করুন:

    লিনাক্স বা ম্যাকোস

    unzip APK_NAME.apk -d /tmp/my_apk_out
    

    উইন্ডোজ (পাওয়ারশেল)

    Expand-Archive -Path .\APK_NAME.apk -DestinationPath ~\tmp\my_apk_out
    
  3. যে অস্থায়ী ডিরেক্টরিতে আপনি আপনার APK ফাইলটি বের করেছেন, শেয়ার করা অবজেক্ট ( .so ) ফাইলগুলির জন্য lib ডিরেক্টরির বিষয়বস্তু পরীক্ষা করুন৷ এগুলি একই শেয়ার করা অবজেক্ট ফাইল যা আপনি APK অ্যানালাইজার ব্যবহার করে নেটিভ লাইব্রেরি শনাক্ত করার সময় দেখেছেন। প্রতিটি ভাগ করা বস্তু ফাইলে নিম্নলিখিত কমান্ড চালান:

    লিনাক্স বা ম্যাকোস

    SDK_ROOT_LOCATION/Android/sdk/ndk/NDK_VERSION/toolchains/llvm/prebuilt/darwin-x86_64/bin/llvm-objdump -p SHARED_OBJECT_FILE.so | grep LOAD
    

    উইন্ডোজ (পাওয়ারশেল)

    SDK_ROOT_LOCATION\Android\sdk\ndk\NDK_VERSION\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-objdump.exe -p SHARED_OBJECT_FILE.so | Select-String -Pattern "LOAD"
    

    যেখানে SDK_ROOT_LOCATION হল সেই ডিরেক্টরির পথ যেখানে আপনি Android SDK ইনস্টল করেছেন, SHARED_OBJECT_FILE হল শেয়ার্ড অবজেক্ট ফাইলের নাম যা আপনি চেক করছেন এবং NDK_VERSION হল Android NDK এর সংস্করণ যা আপনি ইনস্টল করেছেন (উদাহরণস্বরূপ, 28.0.12433566 )৷ আপনার চেক করা প্রতিটি ফাইলের জন্য আউটপুটটি নীচের মত কিছু দেখাবে:

    LOAD off    0x0000000000000000 vaddr 0x0000000000000000 paddr 0x0000000000000000 align 2**14
    LOAD off    0x0000000000042a90 vaddr 0x0000000000043a90 paddr 0x0000000000043a90 align 2**14
    LOAD off    0x0000000000046230 vaddr 0x0000000000048230 paddr 0x0000000000048230 align 2**14
    
  4. লোড সেগমেন্টের মান 2**14 এর কম নেই তা নিশ্চিত করতে আউটপুট লাইনগুলি পরীক্ষা করুন। যদি কোনো লোড সেগমেন্ট 2**13 , 2**12 , বা নিম্নমানের হয়, তাহলে আপনাকে সেই লাইব্রেরিগুলির জন্য প্যাকেজিং আপডেট করতে হবে, তারপরে আপনার অ্যাপটি পুনরায় কম্পাইল করুন এবং এই বিভাগের ধাপগুলি অনুসরণ করে পুনরায় পরীক্ষা করুন৷

  5. এরপরে, আপনার অ্যাপের APK ফাইলে zipalign কমান্ড-লাইন টুলটি চালান:

    লিনাক্স বা ম্যাকোস

    SDK_ROOT_LOCATION/Android/sdk/build-tools/35.0.0/zipalign -v -c -P 16 4 APK_NAME.apk
    

    উইন্ডোজ (পাওয়ারশেল)

    SDK_ROOT_LOCATION\Android\sdk\build-tools\35.0.0\zipalign.exe -v -c -P 16 4 APK_NAME.apk
    

    যেখানে SDK_ROOT_LOCATION হল সেই ডিরেক্টরির পথ যেখানে আপনি Android SDK ইনস্টল করেছেন এবং APK_NAME হল আপনার অ্যাপের APK ফাইলের নাম৷ আউটপুটের শেষ লাইনটি বলবে "যাচাই সফল হয়েছে" যদি সমস্ত ভাগ করা লাইব্রেরি সঠিকভাবে সারিবদ্ধ থাকে।

    যাচাইকরণ ব্যর্থ হলে, কিছু ভাগ করা লাইব্রেরি পুনরায় সাজাতে হবে, তাই আপনাকে সেই লাইব্রেরির জন্য প্যাকেজিং আপডেট করতে হবে, তারপর আপনার অ্যাপটি পুনরায় কম্পাইল করুন এবং এই বিভাগে পদক্ষেপগুলি অনুসরণ করে পুনরায় পরীক্ষা করুন৷

16 KB ডিভাইসের জন্য সমর্থন সহ আপনার অ্যাপ তৈরি করুন

যদি আপনার অ্যাপটি নেটিভ কোড ব্যবহার করে, তাহলে আপনার অ্যাপটি 16 KB ডিভাইস সমর্থন করে কিনা তা নিশ্চিত করতে নিম্নলিখিত বিভাগে বর্ণিত ধাপগুলি সম্পূর্ণ করুন:

  1. আপনার ভাগ করা লাইব্রেরিগুলির প্যাকেজিং আপডেট করুন৷
  2. 16 KB ELF প্রান্তিককরণ ব্যবহার করে আপনার অ্যাপ কম্পাইল করুন
  3. কোড ঠিক করুন এবং রানটাইম সমস্যা সমাধান করুন
  4. 16 KB সমর্থনের জন্য SDK চেক করুন

আপনার ভাগ করা লাইব্রেরিগুলির প্যাকেজিং আপডেট করুন৷

আমরা সুপারিশ করি যে আপনি AGP সংস্করণ 8.5.1 বা উচ্চতর সংস্করণে আপগ্রেড করুন এবং অসংকুচিত শেয়ার্ড লাইব্রেরি ব্যবহার করুন।

AGP সংস্করণ 8.5.1 বা উচ্চতর

16 KB ডিভাইসের জন্য এমন অ্যাপের প্রয়োজন হয় যেগুলিকে 16 KB জিপ-সারিবদ্ধ সীমারেখায় সারিবদ্ধ করার জন্য আনকমপ্রেসড শেয়ার্ড লাইব্রেরি সহ পাঠানো হয়। এটি করার জন্য, আপনাকে Android Gradle Plugin (AGP) সংস্করণ 8.5.1 বা উচ্চতর আপগ্রেড করতে হবে। আপগ্রেড প্রক্রিয়ার বিশদ বিবরণের জন্য Android Gradle প্লাগইন আপগ্রেড সহকারী বিভাগে পড়ুন।

AGP সংস্করণ 8.5 বা তার কম

আপনি যদি AGP-কে 8.5.1 বা উচ্চতর সংস্করণে আপগ্রেড করতে না পারেন, তাহলে বিকল্পটি হল সংকুচিত শেয়ার্ড লাইব্রেরি ব্যবহার করার জন্য স্যুইচ করা। আনলাইনড শেয়ার্ড লাইব্রেরিগুলির সাথে অ্যাপ ইনস্টলেশন সমস্যা এড়াতে আপনার অ্যাপ প্যাকেজ করার সময় Gradle আপনার শেয়ার করা লাইব্রেরিগুলিকে সংকুচিত করতে আপনার Gradle কনফিগারেশন আপডেট করুন।

গ্রোভি

আপনার build.gradle ফাইলে, নিম্নলিখিত বিকল্প যোগ করুন:

android {
  ...
  packagingOptions {
      jniLibs {
        useLegacyPackaging true
      }
  }
}

কোটলিন

আপনার build.gradle.kts ফাইলে, নিম্নলিখিত বিকল্প যোগ করুন:

android {
  ...
  packagingOptions {
      jniLibs {
        useLegacyPackaging = true
      }
  }
}

16 KB ELF প্রান্তিককরণ ব্যবহার করে আপনার অ্যাপ কম্পাইল করুন

আপনার অ্যাপটি চালানোর জন্য 16 KB ডিভাইসের জন্য শেয়ার করা লাইব্রেরির ELF সেগমেন্টগুলিকে 16 KB ELF অ্যালাইনমেন্ট ব্যবহার করে সঠিকভাবে সারিবদ্ধ করা প্রয়োজন।

গেম ডেভেলপারদের জন্য, যদি আপনার গেম ইউনিটি গেম ইঞ্জিনের উপরে চলে, ইউনিটি গাইড পড়ুন। যদি আপনার গেমটি অবাস্তব গেম ইঞ্জিনের উপরে চলে, তবে অবাস্তব গাইড পড়ুন। নেটিভ গেম ইঞ্জিনের জন্য, এই গাইডটি চালিয়ে যান।

16 KB ELF অ্যালাইনমেন্ট ব্যবহার করে আপনার অ্যাপ কম্পাইল করতে, আপনি যে Android NDK ব্যবহার করছেন তার সংস্করণের উপর নির্ভর করে নিম্নলিখিত বিভাগগুলির একটিতে ধাপগুলি সম্পূর্ণ করুন৷

Android NDK r28 এবং উচ্চতর

NDK সংস্করণ r28 এবং উচ্চতর কম্পাইল 16 KB- ডিফল্টরূপে সারিবদ্ধ।

অ্যান্ড্রয়েড NDK r27

অ্যান্ড্রয়েড NDK সংস্করণ r27 এবং উচ্চতর সহ 16 KB-সংরক্ষিত শেয়ার্ড লাইব্রেরি সংকলন সমর্থন করতে, আপনাকে আপনার ndk-build , build.gradle , build.gradle.kts , বা লিঙ্কার পতাকাগুলিকে নিম্নরূপ আপডেট করতে হবে:

ndk-বিল্ড

আপনার Application.mk এ:

APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true

গ্রোভি

আপনার build.gradle ফাইলে, আর্গুমেন্ট সেট করুন -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON :

android {
  ...
  defaultConfig {
    ...
    // This block is different from the one you use to link Gradle
    // to your CMake or ndk-build script.
    externalNativeBuild {
      // For ndk-build, instead use the ndkBuild block.
      cmake {
        // Passes optional arguments to CMake.
        arguments "-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON"
      }
    }
  }
}

কোটলিন

আপনার build.gradle.kts ফাইলে, আর্গুমেন্ট সেট করুন -DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON :

android {
  ...
  defaultConfig {
    ...
    // This block is different from the one you use to link Gradle
    // to your CMake or ndk-build script.
    externalNativeBuild {
      // For ndk-build, instead use the ndkBuild block.
      cmake {
        // Passes optional arguments to CMake.
        arguments += listOf("-DANDROID_SUPPORT_FLEXIBLE_PAGE_SIZES=ON")
      }
    }
  }
}

অন্যান্য বিল্ড সিস্টেম

নিম্নলিখিত লিঙ্কার ফ্ল্যাগগুলি নির্দিষ্ট করুন:

-Wl,-z,max-page-size=16384

Android NDK r26 এবং নিম্ন

অ্যান্ড্রয়েড এনডিকে সংস্করণ r26 বা তার নিচের 16 কেবি-সারিবদ্ধ শেয়ার্ড লাইব্রেরি সংকলন সমর্থন করতে, আপনাকে আপনার ndk-build বা cmake কনফিগারেশনটি নিম্নরূপ আপডেট করতে হবে:

ndk-বিল্ড

16 KB ELF প্রান্তিককরণ সক্ষম করতে আপনার Android.mk আপডেট করুন:

LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"

সিমেক

16 KB ELF প্রান্তিককরণ সক্ষম করতে আপনার CMakeLists.txt আপডেট করুন:

target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,max-page-size=16384")

Android NDK r22 এবং তার নিচের

NDK r26 এবং নীচের জন্য বর্ণিত ধাপের পাশাপাশি, আপনি যদি NDK r22 বা তার থেকে কম ব্যবহার করেন তাহলে আপনাকে অবশ্যই common-page-size=16384 সেট করতে হবে। GNU ld এবং LLVM lld লিঙ্কারগুলির পূর্ববর্তী সংস্করণগুলিতে বাগগুলির কারণে common-page-size=16384 সেট করা প্রয়োজন৷ যাইহোক, আমরা দৃঢ়ভাবে সুপারিশ করি যে আপনি এই বাগগুলি সম্পূর্ণরূপে এড়াতে আপনার টুলিংকে আরও সাম্প্রতিক সংস্করণে আপডেট করুন৷

অ্যান্ড্রয়েড NDK সংস্করণ r22 বা তার চেয়ে কম 16 KB-সামঞ্জস্যপূর্ণ শেয়ার্ড লাইব্রেরি কম্পাইল করতে, আপনার ndk-build বা cmake কনফিগারেশনটি নিম্নরূপ আপডেট করুন:

ndk-বিল্ড

16 KB সামঞ্জস্যপূর্ণ ELF তৈরি করতে আপনার Android.mk আপডেট করুন:

LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
LOCAL_LDFLAGS += "-Wl,-z,common-page-size=16384"

সিমেক

16 KB সামঞ্জস্যপূর্ণ ELF তৈরি করতে আপনার CMakeLists.txt আপডেট করুন:

target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,max-page-size=16384")
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,common-page-size=16384")

কোড ঠিক করুন এবং রানটাইম সমস্যা সমাধান করুন

এমনকি যদি আপনার অ্যাপটি 16 KB-সারিবদ্ধ হয়, তবে আপনার অ্যাপটি ত্রুটির সম্মুখীন হতে পারে যদি আপনার কোডের স্থানগুলি ধরে নেয় যে একটি ডিভাইস একটি নির্দিষ্ট পৃষ্ঠার আকার ব্যবহার করছে। এটি এড়াতে, নিম্নলিখিত পদক্ষেপগুলি সম্পূর্ণ করুন:

  1. আপনার কোড লজিকের PAGE_SIZE ধ্রুবক বা দৃষ্টান্তগুলিকে উল্লেখ করে এমন কোনও হার্ড-কোডেড নির্ভরতা সরান যা অনুমান করে যে একটি ডিভাইসের পৃষ্ঠার আকার 4 KB ( 4096 )।

    পরিবর্তে getpagesize() বা sysconf(_SC_PAGESIZE) ব্যবহার করুন।

  2. mmap() এবং অন্যান্য API-এর ব্যবহারগুলি সন্ধান করুন যার জন্য পৃষ্ঠা-সারিবদ্ধ আর্গুমেন্ট প্রয়োজন এবং যেখানে প্রয়োজন সেখানে বিকল্পগুলির সাথে প্রতিস্থাপন করুন।

কিছু ক্ষেত্রে, যদি আপনার অ্যাপ PAGE_SIZE একটি সুবিধাজনক মান হিসাবে ব্যবহার করে যা অন্তর্নিহিত পৃষ্ঠার আকারের সাথে আবদ্ধ না থাকে, তাহলে এটি 16 KB মোডে ব্যবহার করার সময় আপনার অ্যাপটি ভেঙে যাবে না। যাইহোক, যদি এই মানটি MAP_FIXED ছাড়া mmap সহ কার্নেলে প্রেরণ করা হয়, কার্নেল এখনও একটি সম্পূর্ণ পৃষ্ঠা ব্যবহার করে, যা কিছু মেমরি নষ্ট করে। এই কারণে, NDK r27 এবং উচ্চতর 16 KB মোড সক্ষম হলে PAGE_SIZE অনির্ধারিত থাকে৷

যদি আপনার অ্যাপটি এইভাবে PAGE_SIZE ব্যবহার করে এবং কখনই সরাসরি এই মানটি কার্নেলে না দেয়, তাহলে PAGE_SIZE ব্যবহার করার পরিবর্তে, একটি নতুন নাম দিয়ে একটি নতুন ভেরিয়েবল তৈরি করুন যাতে এটি প্রতিফলিত হয় যে এটি অন্য উদ্দেশ্যে ব্যবহার করা হয় এবং একটি বাস্তব মেমরি পৃষ্ঠা প্রতিফলিত করে না।

16 KB সমর্থনের জন্য SDK চেক করুন

অনেক SDK 16 KB পৃষ্ঠার আকারের সাথে সামঞ্জস্যপূর্ণ, বিশেষ করে যদি আপনি সেগুলি নিজে তৈরি করেন বা সাম্প্রতিক প্রিবিল্টগুলি পান। যাইহোক, যেহেতু কিছু SDK প্রিবিল্ট বা SDK সংস্করণ 16 KB সামঞ্জস্যপূর্ণ নয়, তাই 16 KB এর সাথে কোন সংস্করণটি ব্যবহার করবেন তা নির্ধারণ করতে আপনার প্রতিটি SDK প্রদানকারীর জন্য ওয়েবসাইটটি পরীক্ষা করা উচিত।

16 KB পরিবেশে আপনার অ্যাপ পরীক্ষা করুন

আপনি 16 KB ডিভাইসের জন্য সমর্থন সহ আপনার অ্যাপ তৈরি করার পরে, আপনি আপনার অ্যাপটি 16 KB এনভায়রনমেন্টে পরীক্ষা করে দেখতে চাইবেন যে আপনার অ্যাপ কোনো রিগ্রেশনের সম্মুখীন হচ্ছে কিনা। এটি করার জন্য, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. Android 15 SDK সেট আপ করুন

  2. নিম্নলিখিত পরীক্ষার পরিবেশগুলির মধ্যে একটি সেট আপ করুন:

  3. আপনার পরীক্ষা ডিভাইস শুরু করুন, তারপর এটি একটি 16 KB পরিবেশ ব্যবহার করছে তা যাচাই করতে নিম্নলিখিত কমান্ডটি চালান:

    adb shell getconf PAGE_SIZE
    

    কমান্ডটি 16384 এর একটি মান প্রদান করবে।

  4. আপনার অ্যাপটি 16 KB-সারিবদ্ধ তা যাচাই করতে নিম্নলিখিত zipalign কমান্ডটি চালান, যেখানে APK_NAME হল আপনার অ্যাপের APK ফাইলের নাম:

    zipalign -c -P 16 -v 4 APK_NAME.apk
    
  5. আপনার অ্যাপটি পুঙ্খানুপুঙ্খভাবে পরীক্ষা করুন, নির্দিষ্ট পৃষ্ঠার আকারের উল্লেখ করে এমন কোডের দৃষ্টান্ত পরিবর্তনের দ্বারা প্রভাবিত হতে পারে এমন যেকোনো ক্ষেত্রের উপর ফোকাস করুন।

একটি 16-KB-ভিত্তিক, Android 15 সিস্টেম চিত্র সহ Android এমুলেটর সেট আপ করুন৷

Android এমুলেটর ব্যবহার করে একটি 16 KB পরিবেশ সেট আপ করতে, এই পদক্ষেপগুলি অনুসরণ করুন:

  1. 16-KB-ভিত্তিক, অ্যান্ড্রয়েড 15 এমুলেটর সিস্টেমের ছবিগুলি অ্যান্ড্রয়েড স্টুডিও জেলিফিশের সাথে সামঞ্জস্যপূর্ণ | 2023.3.1 বা তার বেশি। যাইহোক, 16 KB ডিভাইসের সাথে কাজ করার সময় সেরা অভিজ্ঞতার জন্য, Android Studio Ladybug | ব্যবহার করুন 2024.2.1 বা তার বেশি।

    আমরা সবসময় নতুন বৈশিষ্ট্য নিয়ে কাজ করছি, তাই নতুন সংস্করণ বা Android স্টুডিওর সর্বশেষ পূর্বরূপ সংস্করণ উপলব্ধ হওয়ার সাথে সাথে ডাউনলোড করার কথা বিবেচনা করুন।

    মনে রাখবেন যে আপনি আপনার Android স্টুডিওর বিদ্যমান সংস্করণ ইনস্টল রাখতে পারেন, কারণ আপনি পাশাপাশি একাধিক সংস্করণ ইনস্টল করতে পারেন।

  2. অ্যান্ড্রয়েড স্টুডিওতে, টুলস > SDK ম্যানেজার-এ ক্লিক করুন।

  3. SDK প্ল্যাটফর্ম ট্যাবে, প্যাকেজ বিশদ দেখান চেক করুন, তারপরে Android VanillaIceCream বা উচ্চতর বিভাগটি প্রসারিত করুন এবং আপনি যে ভার্চুয়াল ডিভাইসগুলি তৈরি করতে চান তার উপর নির্ভর করে নিম্নলিখিত এমুলেটর সিস্টেম চিত্রগুলির মধ্যে একটি বা উভয় নির্বাচন করুন:

    • Google APIs পরীক্ষামূলক 16 KB পৃষ্ঠার আকার ARM 64 v8a সিস্টেম চিত্র৷
    • Google APIs পরীক্ষামূলক 16 KB পৃষ্ঠার আকার Intel x86_64 Atom System Image
    SDK ম্যানেজার ব্যবহার করে 16 KB এমুলেটর সিস্টেমের ছবি ডাউনলোড করুন   অ্যান্ড্রয়েড স্টুডিও
  4. আপনি যে সিস্টেমের ছবি নির্বাচন করেছেন তা ডাউনলোড করতে প্রয়োগ করুন > ঠিক আছে ক্লিক করুন।

  5. Android 15 এর জন্য একটি ভার্চুয়াল ডিভাইস সেট আপ করার পদক্ষেপগুলি অনুসরণ করুন এবং যখন একটি সিস্টেম চিত্র নির্বাচন করার জন্য অনুরোধ করা হয়, তখন আপনার ডাউনলোড করা 16 KB সিস্টেম চিত্রটি নির্বাচন করুন৷ যদি এটি স্বয়ংক্রিয়ভাবে প্রস্তাবিত না হয়, আপনি অন্যান্য চিত্র ট্যাবে 16 KB সিস্টেম চিত্রটি খুঁজে পেতে পারেন।

    অন্যান্য চিত্র ট্যাবে 16 KB এমুলেটর চিত্রটি খুঁজুন

কিছু এমুলেটর সংস্করণ এবং সিস্টেম চিত্রের জন্য অতিরিক্ত পদক্ষেপ

অ্যান্ড্রয়েড এমুলেটর সংস্করণ 35.1.5 থেকে 35.1.20 পর্যন্ত, এবং SDK ম্যানেজারে অফার করা Android 15.0 16 KB পৃষ্ঠা আকারের সিস্টেম চিত্রগুলির সংশোধন 4 এর আগে, x86_64 সিস্টেমে একটি 16 KB পরিবেশ অনুকরণ করতে, আপনাকে নিম্নলিখিত পদক্ষেপগুলিও সম্পূর্ণ করতে হবে৷ 35.1.21 সংস্করণের পরে এবং Android 15.0 16 KB পৃষ্ঠা সাইজ সিস্টেমের ছবি বা পরবর্তী সংস্করণ 4-এর পরে এই পদক্ষেপগুলির প্রয়োজন নেই৷

  1. ডিভাইস ম্যানেজারে, 16 KB ছবির পাশে 3টি বিন্দুতে ক্লিক করুন, তারপর Disk এ Show এ ক্লিক করুন।
  2. এই ফোল্ডারে, config.ini ফাইলটি খুঁজুন।
  3. config.ini ফাইলে নিম্নলিখিত লাইন যোগ করুন এবং আপনার পরিবর্তনগুলি সংরক্ষণ করুন:

    kernel.parameters = androidboot.page_shift=14
    
  4. আপনার পরিবর্তনগুলি যাচাই করতে, নিম্নলিখিত কমান্ডটি চালান, যা 16384 রিটার্ন করবে:

    adb shell getconf PAGE_SIZE
    

এমুলেটর চালু করুন

আপনি অ্যান্ড্রয়েড এমুলেটর এবং ভার্চুয়াল ডিভাইসগুলি সেট আপ করা শেষ করার পরে, লক্ষ্য ডিভাইস মেনু থেকে বা কমান্ড লাইন থেকে এমুলেটরটি চালু করুন৷

বিকাশকারী বিকল্পগুলি ব্যবহার করে একটি ডিভাইসে 16 KB মোড সক্ষম করুন৷

16 KB মোডে একটি ডিভাইস বুট করতে 16KB পৃষ্ঠা আকারের বিকাশকারী বিকল্পের সাথে বুটটি টগল করুন।

Android 15 QPR1 দিয়ে শুরু করে, আপনি ডিভাইসটিকে 16 KB মোডে বুট করতে এবং ডিভাইসে পরীক্ষা করার জন্য নির্দিষ্ট ডিভাইসে উপলব্ধ ডেভেলপার বিকল্পটি ব্যবহার করতে পারেন। বিকাশকারী বিকল্পটি ব্যবহার করার আগে, সেটিংস > সিস্টেম > সফ্টওয়্যার আপডেটগুলিতে যান এবং উপলব্ধ যে কোনও আপডেট প্রয়োগ করুন।

এই বিকাশকারী বিকল্পটি নিম্নলিখিত ডিভাইসগুলিতে উপলব্ধ:

  • Pixel 8 এবং 8 Pro (Android 15 QPR1 বা উচ্চতর সহ)

  • Pixel 8a (Android 15 QPR1 বা উচ্চতর সহ)

  • Pixel 9, 9 Pro, এবং 9 Pro XL (Android 15 QPR2 বিটা 2 বা উচ্চতর সহ)

Google Play সামঞ্জস্যের প্রয়োজনীয়তা

যেহেতু ডিভাইস নির্মাতারা পারফরম্যান্স অপ্টিমাইজ করার জন্য ডিভাইসগুলিকে আরও RAM দিয়ে সজ্জিত করে, অনেকেই 16 KB এর মতো বড় পৃষ্ঠার আকার গ্রহণ করবে। এই আসন্ন ডিভাইসগুলির লঞ্চের জন্য প্রস্তুত করার জন্য, Google Play একটি নতুন সামঞ্জস্যের প্রয়োজনীয়তা প্রবর্তন করছে: 1লা নভেম্বর, 2025 থেকে, সমস্ত নতুন অ্যাপ এবং Google Play-তে জমা দেওয়া বিদ্যমান অ্যাপগুলির আপডেট এবং Android 15 (API স্তর 35) এবং উচ্চতর ডিভাইসগুলিকে 16 KB পৃষ্ঠার আকার সমর্থন করতে হবে।

এই সামঞ্জস্যের প্রয়োজনীয়তা সম্পর্কে আরও পড়তে, এই ব্লগ পোস্টটি দেখুন।