Android 过去仅支持 4 KB 内存页面大小, 优化了系统内存性能,以针对 Android 设备通常具备的功能。从 Android 15 开始,AOSP 支持 配置为使用 16 KB (16 KB) 页面大小的设备 设备)。如果您的应用使用任何 NDK 库,请直接使用 或者通过 SDK 间接创建,那么,您需要重新构建自己的应用 支持这些 16KB 设备。
随着设备制造商不断打造出 物理内存 (RAM),许多此类设备都会采用 16KB(以及 页面大小以优化设备的性能。正在添加 支持 16 KB 页面大小的设备,可使您的应用在这些设备上运行 并有助于您的应用从相关的广告效果中获益 改进。如果不重新编译,应用可能无法在 16KB 设备上运行 在未来的 Android 版本中正式推出。
为帮助您为应用添加支持,我们提供了有关如何检查 如果您的应用受到影响 重新构建您的应用(如果适用),以及如何在 Google Play 中 使用模拟器(包括 Android 15)的 16 KB 环境 系统映像)。
المزايا ومكاسب الأداء
配置为使用 16 KB 页面大小的设备平均会使用略多一些的内存,但系统和应用的性能也会得到各种提升:
- 缩短了系统内存压力时的应用启动时间:平均降低了 3.16%;对于我们测试的某些应用而言,改进幅度更大(最高可达 30%)
- 应用启动期间的功耗降低:平均降低了 4.56%
- 相机启动更快:热启动速度平均提高了 4.48%,冷启动速度平均提高了 6.60%
- 缩短了系统启动时间:平均缩短了 8%(约 950 毫秒)
这些改进基于我们的初始测试,实际设备上的结果可能会有所不同。随着测试的继续进行,我们将进一步分析应用的潜在收益。
التحقّق مما إذا كان تطبيقك قد تأثّر
如果您的应用使用了任何原生代码,则应重新构建应用以支持 16 KB 设备。如果您不确定自己的应用是否使用了原生代码,可以使用 APK 分析器确定是否存在任何原生代码,然后检查您找到的任何共享库的 ELF 段对齐情况。
如果您的应用仅使用以 Java 或 Kotlin 编程语言编写的代码(包括所有库或 SDK),则该应用已经支持 16 KB 设备。不过,我们建议您在 16 KB 环境中测试应用,以验证应用行为是否没有意外回归。
هل يستخدم تطبيقك رمزًا أصليًا؟
يستخدم تطبيقك رمزًا أصليًا في حال انطباق أيّ مما يلي:
- يستخدم تطبيقك أي رمز برمجي (أصلي) من C/C++. إذا كان تطبيقك يستخدم Android NDK، يعني ذلك أنّه يستخدم رمزًا أصليًا.
- يرتبط تطبيقك بأي مكتبات برمجية أصلية أو ملحقات (مثل حِزم تطوير البرامج (SDK)) تابعة لجهات خارجية تستخدمها.
- تم إنشاء تطبيقك بواسطة أداة إنشاء تطبيقات تابعة لجهة خارجية تستخدم مكتبات مجمّعة من رموز برمجية أصلية على الجهاز.
تحديد المكتبات المجمّعة من رموز برمجية أصلية باستخدام أداة تحليل ملفات APK
أداة تحليل حِزم APK هي أداة تتيح لك تقييم جوانب مختلفة من حِزمة APK التي تم إنشاؤها. للتحقّق مما إذا كان تطبيقك يستخدم رمزًا برمجيًا أصليًا (بغض النظر عمّا إذا كان متوافقًا مع حجم الصفحة الذي يبلغ 16 كيلوبايت):
- افتح Android Studio، ثم انقر على ملف > فتح واختَر أي مشروع.
من شريط القوائم، انقر على الإنشاء > تحليل حزمة APK...
اختَر حزمة APK التي تريد تحليلها.
ابحث في مجلد
lib
الذي يستضيف ملفات العناصر المشترَكة (.so
) في حال توفّرها. إذا كانت هناك أي ملفات مكونات مشترَكة، سيستخدم تطبيقك رمزًابرمجيًا مثبَّتًا. إذا لم تكن هناك ملفات مثيل مشترَكة أو لم يكن هناك مجلدlib
، هذا يعني أنّ تطبيقك لا يستخدم رمزًا أصليًا.
التحقّق من محاذاة أجزاء ELF للمكتبات المشتركة
بالنسبة إلى أي مكتبات مشتركة، تأكَّد من أنّ أقسام ELF للمكتبات المشتركة
محاذاة بشكل صحيح باستخدام محاذاة ELF بحجم 16 كيلوبايت. إذا كنت تُجري عملية التطوير على
نظام التشغيل Linux أو macOS، يمكنك استخدام النص البرمجي check_elf_alignment.sh
كما هو موضّح في
القسم التالي. يمكنك أيضًا استخدام أدوات سطر الأوامر مباشرةً.
استخدام النص البرمجي check_elf_alignment.sh (لنظام التشغيل Linux أو macOS)
اتّبِع الخطوات التالية للتحقّق من محاذاة أقسام ELF باستخدام نص ملف برمجي
check_elf_alignment.sh
:
احفظ نص
check_elf_alignment.sh
البرمجي في ملف.شغِّل النص البرمجي على ملف APK لتطبيقك باتّباع الخطوات التالية:
check_elf_alignment.sh APK_NAME.apk
يعرض النص البرمجي إما
ALIGNED
أوUNALIGNED
لجميعarm64-v8a
المكتبات المشتركة.إذا كانت أي من المكتبات المشتركة من النوع
arm64-v8a
أوx86_64
UNALIGNED
، عليك تعديل حِزم هذه المكتبات، ثم إعادة تجميع تطبيقك وإعادة الاختبار باتّباع الخطوات الواردة في هذا القسم.
استخدام أدوات سطر الأوامر مباشرةً
اتّبِع الخطوات التالية للتحقّق من محاذاة أقسام ELF باستخدام أدوات سطر الأوامر مباشرةً:
- تأكَّد من تثبيت الإصدار 35.0.0 أو إصدار أحدث من أدوات إنشاء حزمة تطوير البرامج (SDK) لنظام التشغيل Android و
مجموعة تطوير البرامج (NDK) لنظام التشغيل Android باستخدام مدير حِزم SDK في "استوديو Android" أو أداة سطر الأوامر
sdkmanager
. استخرِج ملف APK لتطبيقك باتّباع الخطوات التالية:
نظام التشغيل Linux أو macOS
unzip APK_NAME.apk -d /tmp/my_apk_out
نظام التشغيل Windows (PowerShell)
Expand-Archive -Path .\APK_NAME.apk -DestinationPath ~\tmp\my_apk_out
في الدليل المؤقت الذي استخرجت إليه ملف APK، تحقّق من محتويات الدليل
lib
بحثًا عن ملفات العناصر المشتركة (.so
). هذه هي ملفات العناصر المشتركة نفسها التي كنت ستظهر لك أثناء تحديد المكتبات الأصلية باستخدام أداة "محلل حِزم APK". نفِّذ الأمر التالي على كل ملف منملفّات العناصر المشترَكة:نظام التشغيل Linux أو 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
نظام التشغيل Windows (PowerShell)
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
هو المسار إلى directory الذي ثبَّت فيه حزمة تطوير البرامج (SDK) لنظام التشغيل Android، و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
راجِع أسطر الإخراج للتأكّد من أنّ أقسام الحمولة لا تحتوي على قيم أقل من
2**14
. إذا كانت أيّ أقسام تحميل ذات قيمة2**13
أو2**12
أو أقل، عليك تعديل حِزم هذه المكتبات، ثم إعادة تجميع تطبيقك وإعادة الاختبار باتّباع الخطوات الواردة في هذا القسم.بعد ذلك، يمكنك تشغيل أداة سطر الأوامر
zipalign
على ملف APK لتطبيقك:نظام التشغيل Linux أو macOS
SDK_ROOT_LOCATION/Android/sdk/build-tools/35.0.0/zipalign -v -c -P 16 4 APK_NAME.apk
نظام التشغيل Windows (PowerShell)
SDK_ROOT_LOCATION\Android\sdk\build-tools\35.0.0\zipalign.exe -v -c -P 16 4 APK_NAME.apk
حيث يشير
SDK_ROOT_LOCATION
إلى مسار الدليل الذي ثبَّت فيه حزمة تطوير البرامج (SDK) لنظام التشغيل Android، وAPK_NAME
هو اسم ملف APK لتطبيقك. سيظهر في السطر الأخير من الإخراج عبارة "تمّ التحقق بنجاح" إذا كانت كل مكتبات المشترَكة مُحاذاة بشكل صحيح.إذا تعذّر إكمال عملية التحقّق، يجب إعادة محاذاة بعض المكتبات المشتركة، لذلك عليك تعديل حِزم هذه المكتبات، ثم إعادة تجميع تطبيقك وإعادة الاختبار باتّباع الخطوات الواردة في هذا القسم.
إنشاء تطبيقك متوافقًا مع الأجهزة التي تستخدم صفحات ذاكرة بحجم 16 كيلوبايت
إذا كان تطبيقك يستخدم رمزًا برمجيًا أصليًا، أكمِل الخطوات الموضّحة في المقاطع التالية للتأكّد من توافق تطبيقك مع الأجهزة التي تستخدم صفحات ذاكرة بحجم 16 كيلوبايت:
- تعديل حِزم المكتبات المشتركة
- تجميع تطبيقك باستخدام محاذاة ELF بحجم 16 كيلوبايت
- إصلاح الرمز البرمجي وحلّ المشاكل المتعلّقة بوقت التشغيل
- التحقّق من توافق حِزم SDK مع صفحات الذاكرة بحجم 16 كيلوبايت
تعديل حِزم المكتبات المشتركة
ننصحك بالترقية إلى الإصدار 8.5.1 من AGP أو إصدار أحدث واستخدام المكتبات المشترَكة غير المضغوطة.
الإصدار 8.5.1 من AGP أو إصدار أحدث
تتطلّب الأجهزة التي تستخدم صفحات بحجم 16 كيلوبايت أن تكون التطبيقات التي تتضمّن مكتبات مشتركة غير مضغوطة مُحاذية على حدود مُحاذية بتنسيق ZIP بحجم 16 كيلوبايت. لإجراء ذلك، عليك الترقية إلى الإصدار 8.5.1 من المكوّن الإضافي لنظام Gradle المتوافق مع Android (AGP) أو إصدار أحدث. يُرجى الرجوع إلى القسم Android مساعِد ترقية مكوّنات Gradle الإضافية للاطّلاع على تفاصيل حول عملية الترقية.
الإصدار 8.5 من AGP أو إصدار أقدم
إذا لم تتمكّن من ترقية AGP إلى الإصدار 8.5.1 أو إصدار أحدث، يمكنك بدلاً من ذلك التبديل إلى استخدام المكتبات المشترَكة المضغوطة. عدِّل إعدادات Gradle ليقوم Gradle بضغط مكتباتك المشتركة عند تجميع تطبيقك لتجنُّب حدوث مشاكل في تثبيت التطبيق بسبب عدم محاذاة المكتبات المشتركة.
رائع
في ملف build.gradle
، أضِف الخيار التالي:
android {
...
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Kotlin
في ملف build.gradle.kts
، أضِف الخيار التالي:
android {
...
packagingOptions {
jniLibs {
useLegacyPackaging = true
}
}
}
تجميع تطبيقك باستخدام محاذاة ELF بحجم 16 كيلوبايت
تتطلّب الأجهزة التي تستخدم صفحات ذاكرة بحجم 16 كيلوبايت محاذاة أقسام ELF للمكتبات المشتركة بشكل صحيح باستخدام محاذاة ELF بحجم 16 كيلوبايت لكي يتمكّن تطبيقك من العمل.
بالنسبة إلى مطوّري الألعاب، إذا كانت لعبتك تعمل على Unity game engine، يُرجى الرجوع إلى دليل Unity. إذا كانت لعبتك تعمل على محرك ألعاب Unreal، راجِع دليل Unreal. بالنسبة إلى محرّكات الألعاب الأصلية، تابِع قراءة هذا الدليل.
لتجميع تطبيقك باستخدام محاذاة ELF بحجم 16 كيلوبايت، أكمِل الخطوات الواردة في أحد الأقسام التالية استنادًا إلى إصدار Android NDK الذي تستخدمه.
الإصدار r28 من Android NDK والإصدارات الأحدث
يُنشئ الإصدار r28 من NDK والإصدارات الأحدث ملفًا مُحاذاً بحجم 16 كيلوبايت تلقائيًا.
الإصدار r27 من مجموعة تطوير البرامج (NDK) لنظام التشغيل Android
لتفعيل ميزة تجميع المكتبات المشتركة المتوافقة مع 16 كيلوبايت باستخدام الإصدار ndk-build
من Android NDK
r27 والإصدارات الأحدث، عليك تعديل ndk-build
أو build.gradle
أو
build.gradle.kts
أو علامات الربط على النحو التالي:
ndk-build
في 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"
}
}
}
}
Kotlin
في ملف 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
الإصدار r26 من Android NDK والإصدارات الأقدم
لتفعيل تجميع المكتبات المشتركة التي تمّت محاذاتها بحجم 16 كيلوبايت باستخدام الإصدار r26 أو إصدار أقدم من Android NDK، عليك تعديل إعدادات ndk-build
أو cmake
على النحو التالي:
ndk-build
عليك تحديث Android.mk
لتفعيل محاذاة ELF بحجم 16 كيلوبايت:
LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
CMake
عليك تحديث CMakeLists.txt
لتفعيل محاذاة ELF بحجم 16 كيلوبايت:
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,max-page-size=16384")
الإصدار r22 من Android NDK والإصدارات الأقدم
بالإضافة إلى الخطوة الموضّحة لإصدار NDK r26 والإصدارات الأقدم، يجب
ضبط common-page-size=16384
إذا كنت تستخدم الإصدار NDK r22 أو إصدارًا أقدم. يجب ضبط القيمة
common-page-size=16384
بسبب الأخطاء في الإصدارات السابقة من أداتا الربط
GNU ld وLLVM lld. ومع ذلك، ننصحك بشدة
بالتحديث إلى إصدار أحدث من الأدوات لتجنُّب هذه الأخطاء تمامًا.
لتجميع مكتبات مشتركة متوافقة مع حجم 16 كيلوبايت باستخدام الإصدار r22 أو إصدار أقدم من Android NDK، عدِّل إعدادات ndk-build
أو cmake
على النحو التالي:
ndk-build
عليك تحديث Android.mk
لإنشاء ملف ELF متوافق مع صفحات الذاكرة بحجم 16 كيلوبايت:
LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
LOCAL_LDFLAGS += "-Wl,-z,common-page-size=16384"
CMake
عليك تحديث CMakeLists.txt
لإنشاء ملف ELF متوافق مع صفحات الذاكرة بحجم 16 كيلوبايت:
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 كيلوبايت، يمكن أن يواجه تطبيقك أخطاء إذا كانت مواضع في الرمز البرمجي تفترض أنّ الجهاز يستخدم حجم صفحة معيّنًا. لتجنُّب ذلك، يُرجى إكمال الخطوات التالية:
أزِل أيّ تبعيات مضمّنة تشير إلى الثابت
PAGE_SIZE
أو المثيلات في منطق الرمز البرمجي التي تفترض أنّ حجم صفحة الجهاز هو 4 كيلوبايت (4096
).استخدِم
getpagesize()
أوsysconf(_SC_PAGESIZE)
بدلاً من ذلك.ابحث عن استخدامات
mmap()
وواجهات برمجة التطبيقات الأخرى التي تتطلّب دالّات ALIGNED_TO_PAGE واستبدِلها ببدائل عند الضرورة.
في بعض الحالات، إذا كان تطبيقك يستخدم PAGE_SIZE
كقيمة ملائمة غير مرتبطة
بحجم الصفحة الأساسي، لن يؤدي ذلك إلى تعطُّل تطبيقك عند
استخدامه في وضع 16 كيلوبايت. ومع ذلك، إذا تم تمرير هذه القيمة إلى النواة باستخدام
mmap
بدون MAP_FIXED
، سيظلّ استخدام النواة لصفحة كاملة، ما يؤدي إلى إهدار
بعض الذاكرة. لهذه الأسباب، لا يتم تحديد PAGE_SIZE
عند تفعيل وضع 16 كيلوبايت
على NDK r27 والإصدارات الأحدث.
إذا كان تطبيقك يستخدم PAGE_SIZE
بهذه الطريقة ولا يُمرِّر هذه القيمة مباشرةً إلى
النواة، يمكنك إنشاء متغيّر جديد باسم
جديد بدلاً من استخدام PAGE_SIZE
للإشارة إلى أنّه يُستخدَم لأغراض أخرى ولا يشير إلى صفحة ذاكرةحقيقية.
التحقّق من توافق حِزم تطوير البرامج (SDK) مع صفحات الذاكرة بحجم 16 كيلوبايت
تتوافق العديد من حِزم SDK مع أحجام الصفحات التي تبلغ 16 كيلوبايت، خاصةً إذا كنت بصدد إنشائها بنفسك أو الحصول على حِزم مُسبقة الإنشاء حديثة. ومع ذلك، بما أنّ بعض الإصدارات المُسبقة من حزمة SDK أو إصدارات حزمة SDK غير متوافقة مع حجم 16 كيلوبايت، عليك الانتقال إلى الموقع الإلكتروني لكل موفِّر لحزمة SDK لتحديد الإصدار الذي يجب استخدامه مع حجم 16 كيلوبايت.
اختبار تطبيقك في بيئة بحجم 16 كيلوبايت
بعد إنشاء تطبيقك ليتوافق مع الأجهزة التي تستخدم صفحات ذاكرة بحجم 16 كيلوبايت، عليك اختبار تطبيقك في بيئة تستخدم صفحات ذاكرة بحجم 16 كيلوبايت لمعرفة ما إذا كان تطبيقك يواجه أي تراجع في الأداء. لإجراء هذا، اتبع هذه الخطوات:
إعداد إحدى بيئات الاختبار التالية:
شغِّل جهازك التجريبي، ثم نفِّذ الأمر التالي للتأكّد من أنّه يستخدم بيئة بسعة 16 كيلوبايت:
adb shell getconf PAGE_SIZE
من المفترض أن يعرض الأمر القيمة
16384
.شغِّل الأمر
zipalign
التالي للتحقّق من أنّ تطبيقك مُحاذاً بحجم 16 كيلوبايت، حيث يكون APK_NAME هو اسم ملف APK الخاص بتطبيقك:zipalign -c -P 16 -v 4 APK_NAME.apk
اختبِر تطبيقك بدقة، مع التركيز على أيّ أقسام قد تتأثّر ب تغيير نُسخ الرموز البرمجية التي تشير إلى أحجام صفحات معيّنة.
إعداد "محاكي Android" باستخدام صورة نظام Android 15 المستندة إلى 16 كيلوبايت
لإعداد بيئة بسعة 16 كيلوبايت باستخدام "محاكي Android"، اتّبِع الخطوات التالية:
تتوافق صور نظام المحاكي لنظام التشغيل Android 15 المستندة إلى 16 كيلوبايت مع IDE Android Studio Jellyfish | 2023.3.1 أو إصدار أحدث. للحصول على أفضل تجربة عند العمل على الأجهزة التي تبلغ سعتها 16 كيلوبايت، استخدِم الإصدار Android Studio Ladybug | 2024.2.1 أو إصدار أحدث.
نحن نعمل دائمًا على تطوير ميزات جديدة، لذا ننصحك بتنزيل الإصدارات الأحدث أو أحدث إصدار مبكر حصري من "استوديو Android" عند توفّرها.
تذكَّر أنّه يمكنك إبقاء الإصدار الحالي من Android Studio مثبّتًا، لأنّه يمكنك تثبيت إصدارات متعددة جنبًا إلى جنب.
في "استوديو Android"، انقر على الأدوات > أداة إدارة حِزم تطوير البرامج (SDK).
في علامة التبويب أنظمة تشغيل حِزم SDK، ضَع علامة في المربّع بجانب عرض تفاصيل الحزمة، ثم وسِّع قسم Android VanillaIceCream أو الإصدارات الأحدث واختَر صورة نظام المحاكي التالية أو كليهما، استنادًا إلى الأجهزة الافتراضية التي تريد إنشاؤها:
- صورة نظام Google APIs Experimental 16 KB Page Size ARM 64 v8a
- Google APIs Experimental 16 KB Page Size Intel x86_64 Atom System Image
انقر على تطبيق > حسنًا لتنزيل صور النظام التي اخترتها.
اتّبِع خطوات إعداد جهاز افتراضي لنظام التشغيل Android 15، وعندما يُطلب منك اختيار صورة نظام، اختَر صورة النظام التي تم تنزيلها بحجم 16 كيلوبايت. إذا لم يتم اقتراح هذا الخيار تلقائيًا، يمكنك العثور على صورة النظام التي تبلغ 16 كيلوبايت في علامة التبويب صور أخرى.
خطوات إضافية لبعض إصدارات المحاكي وصور النظام
بالنسبة إلى إصدارات Android Emulator من 35.1.5 إلى 35.1.20، وقبل المراجعة 4 لصور نظام Android 15.0 بحجم صفحة 16 كيلوبايت المعروضة في "مدير SDK"، لمحاكاة بيئة بحجم 16 كيلوبايت على أنظمة x86_64، عليك أيضًا إكمال الخطوات التالية. لا تكون هذه الخطوات ضرورية بعد الإصدار 35.1.21، ومع المراجعة 4 من نظام ملفّات 16 KB لنظام التشغيل Android 15.0 الصور أو الإصدارات الأحدث.
- في "مدير الأجهزة"، انقر على النقاط الثلاث بجانب الصورة التي تبلغ 16 كيلوبايت، ثم انقر على عرض على القرص.
- في هذا المجلد، ابحث عن ملف
config.ini
. أضِف السطر التالي إلى ملف
config.ini
واحفظ التغييرات:kernel.parameters = androidboot.page_shift=14
للتحقّق من التغييرات، شغِّل الأمر التالي الذي من المفترض أن يعرض القيمة التالية:
16384
:adb shell getconf PAGE_SIZE
تشغيل المحاكي
بعد الانتهاء من إعداد "محاكي Android" والأجهزة الافتراضية، يمكنك تشغيل الemuالمحاكي من قائمة الجهاز المستهدَف أو من سطر الأوامر.
使用开发者选项在设备上启用 16 KB 模式

切换以 16KB 页面大小启动设备开发者选项,以便在 16 KB 模式下启动设备。
从 Android 15 QPR1 开始,您可以使用某些设备上提供的开发者选项,以 16 KB 模式启动设备并执行设备端测试。在使用开发者选项之前,请依次前往“设置”->“系统”->“软件更新”,然后应用所有可用的更新。
此开发者选项适用于以下设备:
Pixel 8 和 Pixel 8 Pro(搭载 Android 15 QPR1 或更高版本)
警告:由于 Android 15 QPR2 Beta 版 3 存在已知问题,在安装 Android 15 QPR2 Beta 版 3 并以 16 KB 模式启动设备后,Pixel 8 设备上的触摸屏无法正常使用。此问题不会影响 Pixel 8 Pro 设备。
Pixel 8a(搭载 Android 15 QPR1 或更高版本)
警告:由于 Android 15 QPR2 Beta 版 3 存在已知问题,在安装 Android 15 QPR2 Beta 版 3 并以 16 KB 模式启动设备后,Pixel 8a 设备上的触摸屏无法正常使用。
Pixel 9、Pixel 9 Pro 和 Pixel 9 Pro XL(搭载 Android 15 QPR2 Beta 2 或更高版本)
متطلبات التوافق مع Google Play
وبما أنّ مصنعي الأجهزة يزوّدون الأجهزة بمزيد من ذاكرة الوصول العشوائي (RAM) لتحسين الأداء، ستتبنى العديد من الشركات أحجام صفحات أكبر، مثل 16 كيلوبايت. استعدادًا لإطلاق هذه الأجهزة القادمة، يفرض Google Play شرط التوافق على جميع التطبيقات الجديدة وتحديثات التطبيقات الحالية التي تستهدف أجهزة Android 15 والإصدارات الأحدث لتعمل باستخدام صفحات بحجم 16 كيلوبايت اعتبارًا من 1 تشرين الثاني (نوفمبر) 2025.
لقراءة المزيد من المعلومات عن متطلبات التوافق هذه، يُرجى الاطّلاع على مشاركة المدونة هذه.