دعم أحجام صفحات بحجم 16 كيلوبايت

سابقًا، كان نظام Android لا يدعم سوى أحجام صفحات الذاكرة التي تبلغ 4 كيلوبايت، والتي تحتوي على لتحسين أداء ذاكرة النظام للحصول على متوسط إجمالي الذاكرة التي كان لديهم عادةً أجهزة Android. بدءًا من نظام التشغيل Android 15، يتوافق "بروتوكول AOSP" مع الأجهزة التي تم إعدادها لاستخدام حجم صفحة يبلغ 16 كيلوبايت (16 كيلوبايت) الأجهزة). إذا كان تطبيقك يستخدم أي مكتبات NDK، سواء بشكل مباشر أو بشكل غير مباشر من خلال إحدى حِزم SDK، ستحتاج إلى إعادة إنشاء التطبيق يعمل على هذه الأجهزة التي يبلغ حجمها 16 كيلوبايت.

مع استمرار الشركات المصنّعة للأجهزة في تصميم أجهزة تحتوي على كميات أكبر من ذاكرة فعلية (RAM)، ستعتمد العديد من هذه الأجهزة على سعة 16 كيلوبايت ( أكبر في النهاية) لتحسين أداء الجهاز. جارٍ الإضافة بالنسبة إلى الأجهزة التي حجمها 16 كيلوبايت، يمكن تشغيل تطبيقك على هذه الأجهزة وتساعد تطبيقك على الاستفادة من الأداء المرتبط التحسينات. قد لا تعمل التطبيقات على الأجهزة التي يبلغ حجمها 16 كيلوبايت بدون إعادة التجميع. عند إنتاجها في إصدارات Android المستقبلية.

ولمساعدتك على توفير الدعم لتطبيقك، قدّمنا إرشادات حول كيفية التحقق من إذا تأثّر تطبيقك إعادة إنشاء تطبيقك (إن أمكن)، وكيفية اختبار تطبيقك في بيئة بحجم 16 كيلوبايت باستخدام أدوات المحاكاة (بما في ذلك Android 15) صور النظام لمحاكي Android).

المزايا ومكاسب الأداء

تستهلك الأجهزة التي تم ضبطها على أحجام صفحات تبلغ 16 كيلوبايت مساحة أكبر قليلاً من الذاكرة في المتوسط، لكنها تُجري أيضًا تحسينات متنوعة في الأداء لكل من النظام والتطبيقات:

  • أوقات تشغيل التطبيق أقل عندما يكون النظام تحت ضغط الذاكرة: ‫3.16% انخفاضًا في المتوسط، مع تحسينات أكثر أهمية (تصل إلى %30) لبعض التطبيقات التي اختبرناها
  • انخفاض في استهلاك الطاقة أثناء تشغيل التطبيق: انخفاض بنسبة% 4.56 في المتوسّط
  • تشغيل أسرع للكاميرا: عمليات تشغيل أسرع بنسبة 4.48% في المتوسط، وعمليات تشغيل على البارد أسرع بنسبة 6.60% في المتوسط
  • مدة تشغيل النظام المحسَّنة: تحسّنت بنسبة %8 (950 ملي ثانية تقريبًا) في المتوسّط

تستند هذه التحسينات إلى اختبارنا الأوّلي، ومن المرجّح أن تختلف النتائج على الأجهزة الفعلية. وسنقدّم تحليلاً إضافيًا للفوائد المحتملة للتطبيقات أثناء مواصلة الاختبار.

التحقّق مما إذا كان تطبيقك قد تأثّر

إذا كان تطبيقك يستخدم أي رمز أصلي، عليك إعادة بناء تطبيقك ليتوافق مع الأجهزة التي تبلغ سعة ذاكرتها 16 كيلوبايت. إذا لم تكن متأكّدًا مما إذا كان تطبيقك يستخدم رمزًا أصليًا، يمكنك استخدام أداة APK Analyzer لتحديد ما إذا كان هناك أي رمز أصلي، ثم التحقّق من محاذاة أقسام ELF لذى أي مكتبات مشترَكة تعثر عليها.

إذا كان تطبيقك يستخدم فقط رمزًا برمجيًا مكتوبًا بلغة Java أو Kotlin، بما في ذلك جميع المكتبات أو حِزم SDK، يعني ذلك أنّ تطبيقك متوافق مع الأجهزة التي تبلغ سعتها 16 كيلوبايت. ومع ذلك، ننصحك باختبار تطبيقك في بيئة حجمها 16 كيلوبايت للتأكّد من عدم حدوث تدهورٍ unexpected في سلوك التطبيق.

هل يستخدم تطبيقك رمزًا أصليًا؟

يستخدم تطبيقك رمزًا أصليًا في حال انطباق أيّ مما يلي:

  • يستخدم تطبيقك أي رمز برمجي (أصلي) من C/C++. إذا كان تطبيقك يستخدم حزمة تطوير البرامج (SDK) لنظام التشغيل Android، يعني ذلك أنّ تطبيقك يستخدم رمزًا أصليًا.
  • يرتبط تطبيقك بأي مكتبات أو ملحقات تابعة لجهات خارجية (مثل حِزم SDK) تستخدمها.
  • تم إنشاء تطبيقك بواسطة منشئ تطبيقات تابع لجهة خارجية يستخدم مكتبات محلية على الجهاز.

تحديد المكتبات المجمّعة من رموز برمجية أصلية باستخدام أداة تحليل ملفات APK

أداة تحليل حِزم APK هي أداة تتيح لك تقييم جوانب مختلفة من حِزم APK التي تم إنشاؤها. لتحديد ما إذا كان تطبيقك يستخدم رمزًا أصليًا أو مكتبات، اتّبِع الخطوات التالية:

  1. افتح Android Studio، ثم انقر على ملف > فتح واختَر أي مشروع.
  2. من شريط القوائم، انقر على الإنشاء > تحليل حزمة APK...

    خيار قائمة "الإصدار" في "استوديو YouTube" لتشغيل APK
Analyzer

  3. اختَر حزمة APK التي تريد تحليلها.

  4. ابحث في مجلد lib الذي يستضيف ملفات العناصر المشترَكة (.so) في حال توفّرها. إذا كانت هناك أي ملفات مكونات مشترَكة، سيستخدم تطبيقك رمزًابرمجيًا هُويًا. إذا لم تكن هناك ملفات مثيل مشترَكة أو لم يكن هناك مجلد lib، هذا يعني أنّ تطبيقك لا يستخدم رمزًا أصليًا.

    عرض "أداة تحليل ملفات APK" يُظهر أنّه تمّت إثناء ملفّات العناصر المشترَكة

التحقّق من محاذاة أجزاء ELF للمكتبات المشتركة

بالنسبة إلى أي مكتبات مشترَكة، تأكَّد من أنّ أقسام ELF للمكتبات المشترَكة محاذاة بشكل صحيح باستخدام محاذاة ELF التي تبلغ 16 كيلوبايت. إذا كنت تُجري عملية التطوير على نظام التشغيل Linux أو macOS، يمكنك استخدام النص البرمجي check_elf_alignment.sh كما هو موضّح في القسم التالي. يمكنك أيضًا استخدام أدوات سطر الأوامر مباشرةً.

استخدام النص البرمجي check_elf_alignment.sh (لنظام التشغيل Linux أو macOS)

اتّبِع الخطوات التالية للتحقّق من محاذاة أقسام ELF باستخدام نص ملف برمجي check_elf_alignment.sh:

  1. احفظ نص check_elf_alignment.sh البرمجي في ملف.

  2. شغِّل النص البرمجي على ملف APK لتطبيقك باتّباع الخطوات التالية:

    check_elf_alignment.sh APK_NAME.apk
    

    يعرض النص البرمجي إما ALIGNED أو UNALIGNED لجميع arm64-v8a المكتبات المشتركة.

  3. إذا كانت أي من المكتبات المشتركة من النوع arm64-v8a أو x86_64 UNALIGNED، عليك تعديل حِزم هذه المكتبات، ثم إعادة تجميع تطبيقك وإعادة الاختبار باتّباع الخطوات الواردة في هذا القسم.

استخدام أدوات سطر الأوامر مباشرةً

اتّبِع الخطوات التالية للتحقّق من محاذاة أقسام ELF باستخدام أدوات سطر الأوامر مباشرةً:

  1. تأكَّد من تثبيت الإصدار 35.0.0 أو إصدار أحدث من أدوات إنشاء حزمة تطوير البرامج (SDK) لنظام التشغيل Android و مجموعة تطوير البرامج (NDK) لنظام التشغيل Android باستخدام مدير حِزم SDK في "استوديو Android" أو أداة سطر الأوامر sdkmanager.
  2. استخرِج ملف 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
    
  3. في الدليل المؤقت الذي استخرجت إليه ملف 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
    
  4. راجِع أسطر الإخراج للتأكّد من أنّ أقسام الحمولة لا تحتوي على قيم أقل من 2**14. إذا كانت أيّ أجزاء من الحمولة ذات قيمة 2**13 أو 2**12 أو أقل، عليك تعديل حِزم هذه المكتبات، ثم إعادة تجميع تطبيقك وإعادة الاختبار باتّباع الخطوات الواردة في هذا القسم.

  5. بعد ذلك، يمكنك تشغيل أداة سطر الأوامر 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 كيلوبايت، يجب أن تُكمل التطبيقات التي تستخدم رمزًا أصليًا الخطوات الموضّحة في الأقسام التالية. في حال الترقية إلى الإصدار 8.5.1 أو إصدار أحدث من AGP والإصدار r28 أو إصدار أحدث من NDK واستخدام تبعيات مُسبقة الإنشاء متوافقة مع 16 كيلوبايت، ستكون التطبيقات متوافقة مع 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 كيلوبايت لكي يعمل تطبيقك.

لتجميع تطبيقك باستخدام محاذاة ELF بحجم 16 كيلوبايت، أكمِل الخطوات الواردة في أحد الأقسام التالية استنادًا إلى إصدار Android NDK الذي تستخدمه.

الإصدار r28 من Android NDK والإصدارات الأحدث

يُنشئ الإصدار r28 من NDK والإصدارات الأحدث ملفات بتنسيق 16 كيلوبايت تلقائيًا.

الإصدار r27 من Android NDK

لتفعيل تجميع المكتبات المشتركة المتوافقة مع 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")

البحث عن نُسخ الرموز البرمجية التي تشير إلى أحجام صفحات معيّنة

حتى إذا كان تطبيقك مُحاذَى بحجم 16 كيلوبايت، يمكن أن يواجه تطبيقك أخطاء إذا كانت الأماكن في الرمز البرمجي تفترض أنّ الجهاز يستخدم حجم صفحة معيّنًا. لتجنُّب ذلك، عليك إكمال الخطوات التالية:

  1. أزِل أيّ تبعيات مضمّنة تشير إلى الثابت PAGE_SIZE أو المثيلات في منطق الرمز البرمجي التي تفترض أنّ حجم صفحة الجهاز هو 4 كيلوبايت (4096).

    استخدِم getpagesize() أو sysconf(_SC_PAGESIZE) بدلاً من ذلك.

  2. ابحث عن استخدامات 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 كيلوبايت لمعرفة ما إذا كان تطبيقك يواجه أي تراجعات. لإجراء هذا، اتبع هذه الخطوات:

  1. إعداد حزمة تطوير البرامج (SDK) لنظام التشغيل Android 15

  2. إعداد إحدى بيئات الاختبار التالية:

  3. شغِّل جهازك التجريبي، ثم نفِّذ الأمر التالي للتأكّد من أنّه يستخدم بيئة بسعة 16 كيلوبايت:

    adb shell getconf PAGE_SIZE
    

    من المفترض أن يعرض الأمر القيمة 16384.

  4. نفِّذ الأمر zipalign التالي للتحقّق من أنّ تطبيقك مُحاذاً بحجم 16 كيلوبايت، حيث يكون APK_NAME هو اسم ملف APK الخاص بتطبيقك:

    zipalign -c -P 16 -v 4 APK_NAME.apk
    
  5. اختبِر تطبيقك بدقة، مع التركيز على أيّ أقسام قد تتأثّر ب تغيير مثيلات الرموز البرمجية التي تشير إلى أحجام صفحات معيّنة.

إعداد "محاكي Android" باستخدام صورة نظام Android 15 المستندة إلى 16 كيلوبايت

لإعداد بيئة بسعة 16 كيلوبايت باستخدام "محاكي Android"، اتّبِع الخطوات التالية:

  1. تتوافق صور نظام المحاكي لنظام التشغيل Android 15 المستندة إلى 16 كيلوبايت مع IDE Android Studio Jellyfish | 2023.3.1 أو إصدار أحدث. للحصول على أفضل تجربة عند العمل مع الإصدار التجريبي من Android 15، نزِّل أحدث إصدار من الإصدار التجريبي من "استوديو Android".

    تذكَّر أنّه يمكنك إبقاء الإصدار الحالي من Android Studio مثبّتًا، لأنّه يمكنك تثبيت إصدارات متعددة جنبًا إلى جنب.

  2. في "استوديو Android"، انقر على الأدوات > أداة إدارة حِزم تطوير البرامج (SDK).

  3. في علامة التبويب أنظمة تشغيل حِزم تطوير البرامج (SDK)، ضَع علامة في المربّع بجانب عرض تفاصيل الحزمة، ثم وسِّع القسم Android VanillaIceCream Preview واختَر صورة واحدة أو كلتا الصورتين لنظام المحاكي التالي، استنادًا إلى الأجهزة الافتراضية التي تريد إنشاؤها:

    • صورة نظام Google APIs Experimental 16k Page Size ARM 64 v8a
    • صورة نظام Google APIs Experimental 16k Page Size Intel x86_64 Atom

    تنزيل صور نظام المحاكي بحجم 16 كيلوبايت باستخدام أداة إدارة حِزم تطوير البرامج (SDK) في
    "استوديو Android"

  4. انقر على تطبيق > حسنًا لتنزيل صور النظام التي اخترتها.

  5. اتّبِع خطوات إعداد جهاز افتراضي لنظام التشغيل Android 15، وعندما يُطلب منك اختيار صورة نظام، اختَر صورة النظام التي تم تنزيلها بحجم 16 كيلوبايت. إذا لم يتم اقتراح هذا الخيار تلقائيًا، يمكنك العثور على صورة النظام التي تبلغ 16 كيلوبايت في علامة التبويب صور أخرى.

    ابحث عن صورة المحاكي بحجم 16 كيلوبايت في علامة التبويب
"الصور الأخرى".

  1. في "مدير الأجهزة"، انقر على النقاط الثلاث بجانب الصورة التي تبلغ 16 كيلوبايت، ثم انقر على عرض على القرص.
  2. في هذا المجلد، ابحث عن ملف config.ini.
  3. أضِف السطر التالي إلى ملف config.ini واحفظ التغييرات:

    kernel.parameters = androidboot.page_shift=14
    
  4. للتحقّق من التغييرات، شغِّل الأمر التالي الذي من المفترض أن يعرض الرسالة التالية: 16384:

    adb shell getconf PAGE_SIZE
    

تفعيل الوضع 16 كيلوبايت على جهاز باستخدام خيارات المطوّرين

فعِّل خيار المطوِّر التشغيل مع صفحات حجمها 16 كيلوبايت لتشغيل الجهاز في الوضع 16 كيلوبايت.

بدءًا من الإصدار Android 15 QPR1، يمكنك استخدام خيار المطوّر المتاح على أجهزة معيّنة لتشغيل الجهاز في وضع 16 كيلوبايت وإجراء الاختبار على الجهاز.

يتوفّر خيار المطوّر هذا على الأجهزة التالية:

  • ‫Pixel 8 وPixel 8 Pro (مع نظام التشغيل Android 15 QPR1 أو إصدار أحدث)
  • ‫Pixel 8a (مع الإصدار 15 QPR1 من Android أو إصدار أحدث)