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

16 KB Google Play সামঞ্জস্যের প্রয়োজন
1লা নভেম্বর, 2025 থেকে, সমস্ত নতুন অ্যাপ এবং Google Play-তে জমা দেওয়া বিদ্যমান অ্যাপগুলির আপডেট এবং Android 15+ ডিভাইসগুলিকে লক্ষ্য করে 64-বিট ডিভাইসে 16 KB পৃষ্ঠার আকার সমর্থন করতে হবে।

ঐতিহাসিকভাবে, অ্যান্ড্রয়েড শুধুমাত্র 4 KB মেমরি পৃষ্ঠার আকার সমর্থন করে, যা অ্যান্ড্রয়েড ডিভাইসে সাধারণত থাকা মোট মেমরির গড় পরিমাণের জন্য সিস্টেম মেমরির কার্যকারিতা অপ্টিমাইজ করেছে। অ্যান্ড্রয়েড 15 দিয়ে শুরু করে, AOSP 16 KB (16 KB ডিভাইস) এর পৃষ্ঠার আকার ব্যবহার করার জন্য কনফিগার করা ডিভাইসগুলিকে সমর্থন করে। যদি আপনার অ্যাপটি SDK-এর মাধ্যমে প্রত্যক্ষ বা পরোক্ষভাবে কোনও NDK লাইব্রেরি ব্যবহার করে, তাহলে এই 16 KB ডিভাইসে কাজ করার জন্য আপনাকে আপনার অ্যাপটি পুনর্নির্মাণ করতে হবে।

যেহেতু ডিভাইস নির্মাতারা বৃহত্তর পরিমাণে ভৌত মেমরি (RAM) সহ ডিভাইসগুলি তৈরি করতে থাকে, এই ডিভাইসগুলির মধ্যে অনেকগুলি ডিভাইসের কার্যকারিতা অপ্টিমাইজ করার জন্য 16 KB (এবং শেষ পর্যন্ত আরও বড়) পৃষ্ঠার আকার গ্রহণ করবে। 16 KB পৃষ্ঠার আকারের ডিভাইসগুলির জন্য সমর্থন যোগ করা আপনার অ্যাপটিকে এই ডিভাইসগুলিতে চালানোর জন্য সক্ষম করে এবং আপনার অ্যাপটিকে সংশ্লিষ্ট কর্মক্ষমতা উন্নতি থেকে উপকৃত হতে সাহায্য করে। পুনরায় কম্পাইল করা ছাড়া, অ্যাপগুলি ভবিষ্যতের Android রিলিজে 16 KB ডিভাইসে কাজ করবে না।

আপনার অ্যাপের জন্য সমর্থন যোগ করতে আপনাকে সাহায্য করার জন্য, আমরা কীভাবে আপনার অ্যাপ প্রভাবিত হয়েছে কিনা তা পরীক্ষা করতে , কীভাবে আপনার অ্যাপটি পুনর্নির্মাণ করতে হয় (যদি প্রযোজ্য হয়), এবং কীভাবে এমুলেটর ব্যবহার করে আপনার অ্যাপটি 16 কেবি পরিবেশে পরীক্ষা করতে হয় (অ্যান্ড্রয়েড এমুলেটরের জন্য অ্যান্ড্রয়েড 15 সিস্টেমের ছবি সহ) নির্দেশিকা প্রদান করেছি।

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

Devices configured with 16 KB page sizes use slightly more memory on average, but also gain various performance improvements for both the system and apps:

  • Lower app launch times while the system is under memory pressure: 3.16% lower on average, with more significant improvements (up to 30%) for some apps that we tested
  • Reduced power draw during app launch: 4.56% reduction on average
  • Faster camera launch: 4.48% faster hot starts on average, and 6.60% faster cold starts on average
  • Improved system boot time: improved by 8% (approximately 950 milliseconds) on average

These improvements are based on our initial testing, and results on actual devices will likely differ. We'll provide additional analysis of potential gains for apps as we continue our testing.

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

If your app uses any native code, then you should rebuild your app with support for 16 KB devices. If you are unsure if your app uses native code, you can use the APK Analyzer to identify whether any native code is present and then check the alignment of ELF segments for any shared libraries that you find. Android Studio also provides features that help you to automatically detect alignment issues.

If your app only uses code written in the Java programming language or in Kotlin, including all libraries or SDKs, then your app already supports 16 KB devices. Nevertheless, we recommend that you test your app in a 16 KB environment to verify that there are no unexpected regressions in app behavior.

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

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

  • আপনার অ্যাপ যেকোনো 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
    

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

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

Enable 16 KB mode on a device using developer options

Toggle the Boot with 16KB page size developer option to boot a device in 16 KB mode.

Starting with Android 15 QPR1, you can use the developer option that's available on certain devices to boot the device in 16 KB mode and perform on-device testing. Before using the developer option, go to Settings > System > Software updates and apply any updates that are available.

This developer option is available on the following devices:

  • Pixel 8 and 8 Pro (with Android 15 QPR1 or higher)

  • Pixel 8a (with Android 15 QPR1 or higher)

  • Pixel 9, 9 Pro, and 9 Pro XL (with Android 15 QPR2 Beta 2 or higher)

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

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

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