پشتیبانی از اندازه صفحه 16 کیلوبایت

۱۶ کیلوبایت مورد نیاز برای سازگاری با گوگل پلی
از اول نوامبر ۲۰۲۵، تمام برنامه‌های جدید و به‌روزرسانی‌های برنامه‌های موجود که در گوگل پلی منتشر می‌شوند و دستگاه‌های اندروید ۱۵+ را هدف قرار می‌دهند، باید از اندازه صفحات ۱۶ کیلوبایتی در دستگاه‌های ۶۴ بیتی پشتیبانی کنند.

Historically, Android has only supported 4 KB memory page sizes, which has optimized system memory performance for the average amount of total memory that Android devices have typically had. Beginning with Android 15, AOSP supports devices that are configured to use a page size of 16 KB (16 KB devices). If your app uses any NDK libraries, either directly or indirectly through an SDK, then you will need to rebuild your app for it to work on these 16 KB devices.

As device manufacturers continue to build devices with larger amounts of physical memory (RAM), many of these devices will adopt 16 KB (and eventually greater) page sizes to optimize the device's performance. Adding support for 16 KB page size devices enables your app to run on these devices and helps your app benefit from the associated performance improvements. Without recompiling, apps won't work on 16 KB devices in future Android releases.

To help you add support for your app, we've provided guidance on how to check if your app is impacted, how to rebuild your app (if applicable), and how to test your app in a 16 KB environment using emulators (including Android 15 system images for the Android Emulator).

مزایا و افزایش عملکرد

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 Analyzer

تحلیلگر APK ابزاری است که به شما امکان می‌دهد جنبه‌های مختلف یک APK ساخته شده را ارزیابی کنید. برای بررسی اینکه آیا برنامه شما از کد بومی استفاده می‌کند یا خیر (صرف نظر از اینکه با حجم ۱۶ کیلوبایت سازگار است یا خیر):

  1. اندروید استودیو را باز کنید، سپس روی File > Open کلیک کنید و هر پروژه‌ای را انتخاب کنید.
  2. از نوار منو، روی ساخت > تجزیه و تحلیل APK... کلیک کنید.

    گزینه منوی Studio Build برای اجرای APK Analyzer
  3. APK مورد نظر برای تجزیه و تحلیل را انتخاب کنید.

  4. در صورت وجود، به پوشه lib که میزبان فایل‌های شیء مشترک ( .so ) است، نگاهی بیندازید. اگر فایل‌های شیء مشترک وجود داشته باشد، برنامه شما از کد بومی استفاده می‌کند. ستون Alignment پیام‌های هشدار دهنده‌ای را برای هر فایلی که مشکلات ترازبندی دارد، نمایش می‌دهد. اگر هیچ فایل شیء مشترکی وجود ندارد یا پوشه lib وجود ندارد، برنامه شما از کد بومی استفاده نمی‌کند.

    نمای تحلیلگر APK که نشان می‌دهد فایل‌های شیء مشترک وجود دارند

تشخیص مشکلات ترازبندی با بررسی‌های خودکار

اندروید استودیو اگر کتابخانه‌ها یا APKهای از پیش ساخته شده شما با حجم ۱۶ کیلوبایت سازگار نباشند، به شما هشدار می‌دهد. از ابزار APK Analyzer برای بررسی اینکه کدام کتابخانه‌ها نیاز به به‌روزرسانی دارند یا اینکه آیا تغییر کدی لازم است، استفاده کنید.

اعلان‌های هشدار استودیو در مورد مشکلات ترازبندی در یک پروژه

Lint در اندروید استودیو همچنین کتابخانه‌های بومی که با حجم ۱۶ کیلوبایت هم‌تراز نیستند را هایلایت می‌کند.

هشدار لینتر استودیو در مورد یک کتابخانه بومی غیرهم‌تراز

ترازبندی بخش‌های ELF را برای کتابخانه‌های مشترک بررسی کنید

برای هر کتابخانه اشتراکی، با استفاده از ترازبندی ELF شانزده کیلوبایتی، تأیید کنید که بخش‌های ELF کتابخانه‌های اشتراکی به درستی تراز شده‌اند. اگر در حال توسعه روی لینوکس یا macOS هستید، می‌توانید از اسکریپت check_elf_alignment.sh همانطور که در بخش زیر توضیح داده شده است، استفاده کنید. همچنین می‌توانید مستقیماً از ابزارهای خط فرمان استفاده کنید .

از اسکریپت check_elf_alignment.sh استفاده کنید (لینوکس یا macOS)

برای بررسی ترازبندی بخش‌های ELF با استفاده از اسکریپت check_elf_alignment.sh ، این مراحل را دنبال کنید:

  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 Build-Tools نسخه 35.0.0 یا بالاتر و هم Android NDK با استفاده از SDK Manager در اندروید استودیو یا ابزار خط فرمان sdkmanager نصب شده باشند.
  2. فایل APK برنامه خود را استخراج کنید:

    لینوکس یا macOS

    unzip APK_NAME.apk -d /tmp/my_apk_out
    

    ویندوز (پاورشل)

    Expand-Archive -Path .\APK_NAME.apk -DestinationPath ~\tmp\my_apk_out
    
  3. در دایرکتوری موقتی که فایل APK خود را در آن استخراج کرده‌اید، محتویات دایرکتوری lib را برای فایل‌های شیء مشترک ( .so ) بررسی کنید. این‌ها همان فایل‌های شیء مشترکی هستند که هنگام شناسایی کتابخانه‌های بومی با استفاده از APK Analyzer دیده‌اید. دستور زیر را روی هر فایل شیء مشترک اجرا کنید:

    لینوکس یا macOS

    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. در مرحله بعد، ابزار خط فرمان zipalign را روی فایل APK برنامه خود اجرا کنید:

    لینوکس یا macOS

    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 مسیر دایرکتوری است که SDK اندروید را در آن نصب کرده‌اید و APK_NAME نام فایل APK برنامه شماست. اگر همه کتابخانه‌های اشتراکی به درستی تراز شده باشند، آخرین خط خروجی عبارت "تأیید موفقیت‌آمیز" را نشان می‌دهد.

    اگر تأیید ناموفق بود، برخی از کتابخانه‌های اشتراکی نیاز به تنظیم مجدد دارند، بنابراین باید بسته‌بندی آن کتابخانه‌ها را به‌روزرسانی کنید ، سپس برنامه خود را دوباره کامپایل کنید و با دنبال کردن مراحل این بخش، دوباره تست کنید.

برنامه خود را با پشتیبانی از دستگاه‌های ۱۶ کیلوبایتی بسازید

اگر برنامه شما از کد بومی استفاده می‌کند، مراحلی را که در بخش‌های زیر ذکر شده است، انجام دهید تا مطمئن شوید که برنامه شما از دستگاه‌های ۱۶ کیلوبایتی پشتیبانی می‌کند:

  1. بسته‌بندی کتابخانه‌های اشتراکی خود را به‌روزرسانی کنید
  2. برنامه خود را با استفاده از ترازبندی ELF با حجم ۱۶ کیلوبایت کامپایل کنید
  3. اصلاح کد و حل مشکلات زمان اجرا
  4. بررسی پشتیبانی SDKها از ۱۶ کیلوبایت

بسته‌بندی کتابخانه‌های اشتراکی خود را به‌روزرسانی کنید

توصیه می‌کنیم که به نسخه AGP 8.5.1 یا بالاتر ارتقا دهید و از کتابخانه‌های اشتراکی غیرفشرده استفاده کنید.

نسخه AGP 8.5.1 یا بالاتر

دستگاه‌های ۱۶ کیلوبایتی برای تراز کردن برنامه‌هایی که با کتابخانه‌های اشتراکی غیرفشرده ارائه می‌شوند، روی یک مرز ۱۶ کیلوبایتی زیپ‌شده به برنامه‌هایی نیاز دارند که آنها را هم‌تراز کند. برای انجام این کار، باید افزونه‌ی اندروید گریدل (AGP) را به نسخه ۸.۵.۱ یا بالاتر ارتقا دهید. برای جزئیات بیشتر در مورد فرآیند ارتقا، به بخش دستیار ارتقاء افزونه‌ی اندروید گریدل مراجعه کنید.

نسخه AGP 8.5 یا پایین‌تر

اگر نمی‌توانید AGP را به نسخه ۸.۵.۱ یا بالاتر ارتقا دهید، راه حل جایگزین این است که از کتابخانه‌های اشتراکی فشرده استفاده کنید. پیکربندی Gradle خود را به‌روزرسانی کنید تا Gradle هنگام بسته‌بندی برنامه، کتابخانه‌های اشتراکی شما را فشرده کند تا از مشکلات نصب برنامه با کتابخانه‌های اشتراکی ناهم‌تراز جلوگیری شود.

گرووی

در فایل build.gradle خود، گزینه زیر را اضافه کنید:

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

کاتلین

در فایل build.gradle.kts خود، گزینه زیر را اضافه کنید:

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

برنامه خود را با استفاده از ترازبندی ELF با حجم ۱۶ کیلوبایت کامپایل کنید

دستگاه‌های ۱۶ کیلوبایتی برای اجرای برنامه شما نیاز دارند که بخش‌های ELF کتابخانه‌های اشتراکی با استفاده از ترازبندی ELF ۱۶ کیلوبایتی به درستی تراز شوند.

برای توسعه‌دهندگان بازی، اگر بازی شما با موتور بازی Unity اجرا می‌شود، به راهنمای Unity مراجعه کنید. اگر بازی شما با موتور بازی Unreal اجرا می‌شود، به راهنمای Unreal مراجعه کنید. برای موتورهای بازی native، با این راهنما ادامه دهید.

برای کامپایل برنامه خود با استفاده از ترازبندی ELF با حجم ۱۶ کیلوبایت، بسته به نسخه Android NDK مورد استفاده خود، مراحل یکی از بخش‌های زیر را انجام دهید.

اندروید NDK نسخه r28 و بالاتر

نسخه NDK r28 و بالاتر به طور پیش‌فرض با حجم ۱۶ کیلوبایت کامپایل می‌شود.

اندروید NDK r27

برای پشتیبانی از کامپایل کتابخانه‌های اشتراکی ۱۶ کیلوبایتی با اندروید NDK نسخه r27 و بالاتر، باید پرچم‌های ndk-build ، build.gradle ، build.gradle.kts یا linker خود را به شرح زیر به‌روزرسانی کنید:

ساخت 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

اندروید NDK نسخه r26 و پایین‌تر

همیشه NDK خود را به‌روزرسانی کنید. این فقط باید به عنوان آخرین راه حل استفاده شود و هیچ پشتیبانی تضمین شده‌ای وجود ندارد.

برای پشتیبانی از کامپایل کتابخانه‌های اشتراکی ۱۶ کیلوبایتی با اندروید NDK نسخه r26 یا پایین‌تر، باید پیکربندی ndk-build یا cmake خود را به شرح زیر به‌روزرسانی کنید:

ساخت ndk

برای فعال کردن ترازبندی ELF با حجم ۱۶ کیلوبایت، Android.mk خود را به‌روزرسانی کنید:

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

سی‌میک

CMakeLists.txt خود را به‌روزرسانی کنید تا ترازبندی ELF با حجم ۱۶ کیلوبایت فعال شود:

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

اندروید NDK نسخه r22 و پایین‌تر سازگار نیست.

همیشه NDK خود را به‌روزرسانی کنید. این فقط باید به عنوان آخرین راه حل استفاده شود و هیچ پشتیبانی تضمین شده‌ای وجود ندارد.

علاوه بر مراحل مربوط به NDK r26 و پایین‌تر، common-page-size=16384 می‌تواند اشکالات موجود در لینکرهای قدیمی GNU ld و LLVM lld را برطرف کند. این تنها در صورتی کار می‌کند که ELF بخش .relro_padding را نیز داشته باشد. این به نسخه لینکر و برنامه خاصی که نوشته شده است بستگی دارد. هیچ پشتیبانی برای این نسخه‌های NDK وجود ندارد و اگر کار نمی‌کند، قبل از گزارش هرگونه مشکل، نسخه NDK را به‌روزرسانی کنید.

اصلاح کد و حل مشکلات زمان اجرا

حتی اگر برنامه شما ۱۶ کیلوبایت حجم داشته باشد، اگر بخش‌هایی از کد شما فرض کنند که یک دستگاه از اندازه صفحه خاصی استفاده می‌کند، برنامه شما می‌تواند با خطا مواجه شود. برای جلوگیری از این مشکل، مراحل زیر را انجام دهید:

  1. هرگونه وابستگیِ کدنویسی‌شده‌ی سخت که به ثابت PAGE_SIZE ارجاع می‌دهند یا مواردی در منطق کد شما که فرض می‌کنند اندازه‌ی صفحه‌ی دستگاه ۴ کیلوبایت ( 4096 ) است را حذف کنید.

    به جای آن از getpagesize() یا sysconf(_SC_PAGESIZE) استفاده کنید.

  2. به دنبال کاربردهای mmap() و سایر APIهایی باشید که به آرگومان‌های هم‌تراز با صفحه نیاز دارند و در صورت لزوم آنها را با جایگزین‌های مناسب جایگزین کنید.

در برخی موارد، اگر برنامه شما از PAGE_SIZE به عنوان یک مقدار مناسب که به اندازه صفحه اصلی وابسته نیست استفاده کند، این باعث نمی‌شود که برنامه شما هنگام استفاده در حالت ۱۶ کیلوبایت از کار بیفتد. با این حال، اگر این مقدار با mmap و بدون MAP_FIXED به هسته منتقل شود، هسته همچنان از کل صفحه استفاده می‌کند که مقداری از حافظه را هدر می‌دهد. به همین دلایل، PAGE_SIZE هنگام فعال بودن حالت ۱۶ کیلوبایت در NDK r27 و بالاتر تعریف نشده است.

اگر برنامه شما از PAGE_SIZE به این روش استفاده می‌کند و هرگز این مقدار را مستقیماً به هسته ارسال نمی‌کند، به جای استفاده از PAGE_SIZE ، یک متغیر جدید با نام جدید ایجاد کنید تا نشان دهد که برای اهداف دیگری استفاده می‌شود و یک صفحه حافظه واقعی را منعکس نمی‌کند.

بررسی پشتیبانی SDKها از ۱۶ کیلوبایت

بسیاری از SDKها با اندازه صفحات ۱۶ کیلوبایتی سازگار هستند، به خصوص اگر خودتان آنها را بسازید یا از نسخه‌های پیش‌ساخته اخیر استفاده کنید. با این حال، از آنجا که برخی از نسخه‌های پیش‌ساخته SDK یا نسخه‌های SDK با ۱۶ کیلوبایت سازگار نیستند، باید وب‌سایت هر ارائه‌دهنده SDK را بررسی کنید تا مشخص شود از کدام نسخه با ۱۶ کیلوبایت استفاده کنید.

برنامه خود را در یک محیط ۱۶ کیلوبایتی آزمایش کنید

بعد از اینکه برنامه خود را با پشتیبانی از دستگاه‌های ۱۶ کیلوبایتی ساختید، باید برنامه خود را در یک محیط ۱۶ کیلوبایتی آزمایش کنید تا ببینید آیا برنامه شما با پسرفت مواجه می‌شود یا خیر. برای انجام این کار، این مراحل را دنبال کنید:

  1. SDK اندروید ۱۵ یا بالاتر را نصب کنید.

  2. یکی از محیط‌های آزمایش زیر را تنظیم کنید:

  3. دستگاه آزمایشی خود را راه‌اندازی کنید، سپس دستور زیر را اجرا کنید تا تأیید کنید که از یک محیط ۱۶ کیلوبایتی استفاده می‌کند:

    adb shell getconf PAGE_SIZE
    

    این دستور باید مقدار 16384 را برگرداند.

  4. دستور zipalign زیر را اجرا کنید تا تأیید کنید که برنامه شما 16 کیلوبایت حجم دارد، که در آن APK_NAME نام فایل APK برنامه شماست:

    zipalign -c -P 16 -v 4 APK_NAME.apk
    
  5. برنامه خود را به طور کامل آزمایش کنید، و روی هر بخشی که ممکن است تحت تأثیر تغییر نمونه‌های کدی که به اندازه‌های خاص صفحه اشاره دارند، قرار گیرد، تمرکز کنید.

شبیه‌ساز اندروید را با یک ایمیج سیستمی مبتنی بر ۱۶ کیلوبایت راه‌اندازی کنید

برای تنظیم یک محیط ۱۶ کیلوبایتی با استفاده از شبیه‌ساز اندروید، مراحل زیر را دنبال کنید:

  1. در اندروید استودیو، روی ابزارها > مدیر SDK کلیک کنید.
  2. در تب SDK Platforms ، گزینه Show Package Details را تیک بزنید، سپس بخش Android VanillaIceCream یا بالاتر را باز کنید و بسته به دستگاه‌های مجازی که می‌خواهید ایجاد کنید، یک یا هر دو تصویر سیستم شبیه‌ساز زیر را انتخاب کنید:

    • تصویر آزمایشی رابط‌های برنامه‌نویسی کاربردی گوگل، ۱۶ کیلوبایت، اندازه صفحه، ARM 64 v8a
    • تصویر آزمایشی رابط‌های برنامه‌نویسی کاربردی گوگل، حجم صفحه ۱۶ کیلوبایت، سیستم اتم اینتل x86_64
    دانلود ایمیج‌های سیستم شبیه‌ساز ۱۶ کیلوبایتی با استفاده از SDK Manager در اندروید استودیو
  3. برای دانلود هر کدام از تصاویر سیستمی که انتخاب کرده‌اید، روی «اعمال» > «تأیید» کلیک کنید.

  4. مراحل راه‌اندازی یک دستگاه مجازی برای اندروید ۱۵ را دنبال کنید و وقتی از شما خواسته شد یک تصویر سیستمی انتخاب کنید، تصویر سیستمی ۱۶ کیلوبایتی را که دانلود کرده‌اید انتخاب کنید. اگر به طور خودکار توصیه نشد، می‌توانید تصویر سیستمی ۱۶ کیلوبایتی را در تب «سایر تصاویر» پیدا کنید.

    تصویر شبیه‌ساز ۱۶ کیلوبایتی را در تب «تصاویر دیگر» پیدا کنید.

شبیه‌ساز را اجرا کنید

پس از اتمام راه‌اندازی شبیه‌ساز اندروید و دستگاه‌های مجازی، شبیه‌ساز را از منوی دستگاه هدف یا از خط فرمان اجرا کنید.

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.

In QPR versions of Android 15, 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)

حالت بک‌کامپایت ۱۶ کیلوبایتی

هشدار در حالت سازگاری اندازه صفحه

هشدار در حالت تطبیق اندازه صفحه

گزینه backcompat 16 کیلوبایتی زمانی در دسترس است که دستگاهی با هسته 16 کیلوبایتی در حال اجرا باشد. مدیر بسته، برنامه‌ای را در حالت backcompat 16 کیلوبایتی اجرا می‌کند، زمانی که شرایط زیر برآورده شود:

  • اگر برنامه دارای فایل‌های ELF (با پسوند .so ) با ترازبندی سگمنت LOAD به اندازه ۴ کیلوبایت باشد.
  • اگر فایل APK فشرده‌شده حاوی فایل‌های ELF غیرفشرده باشد که با فرمت ZIP به حجم ۴ کیلوبایت هم‌تراز شده‌اند.

اگر مدیر بسته حالت backcompat 16 کیلوبایتی را برای یک برنامه فعال کرده باشد، برنامه هنگام اولین اجرای خود هشداری مبنی بر اجرای آن در حالت backcompat 16 کیلوبایتی نمایش می‌دهد.

حالت backcompat با حجم ۱۶ کیلوبایت به برخی از برنامه‌ها اجازه کار می‌دهد، اما برای بهترین قابلیت اطمینان و پایداری، برنامه‌ها همچنان باید با حجم ۱۶ کیلوبایت هماهنگ باشند.

در صفحه اطلاعات برنامه، در قسمت پیشرفته (Advanced )، تنظیمات اجرای برنامه با حالت سازگاری اندازه صفحه (Run app with page size compat mode) را تغییر دهید تا حالت سازگاری ۱۶ کیلوبایتی (۱۶ KB backcompat mode) برای برنامه خاص فعال یا غیرفعال شود. این تنظیم فقط زمانی قابل مشاهده است که دستگاه با اندازه صفحه ۱۶ کیلوبایت در حال اجرا باشد.

تنظیم حالت تطبیق اندازه صفحه

تنظیم حالت تطبیق اندازه صفحه

برای فعال کردن ۱۶ کیلوبایت فضای ذخیره‌سازی Backcompat برای هر برنامه روی دستگاه:

adb shell setprop bionic.linker.16kb.app_compat.enabled true
adb shell setprop pm.16kb.app_compat.disabled false

برای غیرفعال کردن ۱۶ کیلوبایت فضای ذخیره‌سازی پشتیبان برای هر برنامه روی دستگاه:

adb shell setprop bionic.linker.16kb.app_compat.enabled false
adb shell setprop pm.16kb.app_compat.disabled true

برای فعال یا غیرفعال کردن حالت backcompat برای یک برنامه خاص در AndroidManifest.xml ، ویژگی android:pageSizeCompat روی enabled یا disabled تنظیم کنید. وقتی این ویژگی تنظیم شود، برنامه هنگام راه‌اندازی هشدارهای حالت backcompat را نمایش نمی‌دهد.

الزامات سازگاری با گوگل پلی

از آنجایی که تولیدکنندگان دستگاه‌ها، دستگاه‌های خود را به رم بیشتری برای بهینه‌سازی عملکرد مجهز می‌کنند، بسیاری از آنها اندازه صفحات بزرگتری مانند ۱۶ کیلوبایت را اتخاذ خواهند کرد. برای آماده‌سازی برای عرضه این دستگاه‌های آینده، گوگل پلی یک الزام سازگاری جدید را معرفی می‌کند: از اول نوامبر ۲۰۲۵، همه برنامه‌های جدید و به‌روزرسانی‌های برنامه‌های موجود که به گوگل پلی ارسال می‌شوند و دستگاه‌هایی را هدف قرار می‌دهند که اندروید ۱۵ (سطح API ۳۵) و بالاتر را اجرا می‌کنند، باید از اندازه صفحات ۱۶ کیلوبایت پشتیبانی کنند.

برای مطالعه بیشتر در مورد این الزام سازگاری، به این پست وبلاگ مراجعه کنید.