ที่ผ่านมา Android รองรับหน้าหน่วยความจำขนาด 4 KB เท่านั้น ซึ่งมี เพิ่มประสิทธิภาพหน่วยความจำของระบบสำหรับปริมาณหน่วยความจำทั้งหมดโดยเฉลี่ย อุปกรณ์ Android ที่มักมีในระบบ AOSP รองรับตั้งแต่ Android 15 เป็นต้นไป อุปกรณ์ที่มีการกำหนดค่าให้ใช้หน้าขนาด 16 KB (16 KB) อุปกรณ์) หากแอปใช้ไลบรารี NDK โดยตรงอย่างใดอย่างหนึ่ง หรือโดยอ้อมผ่าน SDK คุณจะต้องสร้างแอปใหม่เพื่อ ใช้ได้กับอุปกรณ์ขนาด 16 KB เหล่านี้
เนื่องจากผู้ผลิตอุปกรณ์ยังคงผลิตอุปกรณ์จำนวนมาก หน่วยความจำกายภาพ (RAM) อุปกรณ์จำนวนมากจะใช้ 16 KB (และ และใหญ่ขึ้น) เพื่อเพิ่มประสิทธิภาพของอุปกรณ์ กำลังเพิ่ม การรองรับอุปกรณ์ขนาดหน้า 16 KB จะช่วยให้แอปของคุณทํางานบนอุปกรณ์เหล่านี้ได้ อุปกรณ์และช่วยให้แอปของคุณได้รับประโยชน์จากประสิทธิภาพที่เกี่ยวข้อง เพิ่มขึ้น หากไม่ทำการคอมไพล์ซ้ำ แอปอาจไม่ทำงานในอุปกรณ์ขนาด 16 KB เมื่อเวอร์ชันที่ใช้งานจริงใน Android รุ่นต่อๆ ไป
เราได้ให้คำแนะนำเกี่ยวกับวิธีตรวจสอบ หากแอปได้รับผลกระทบ วิธีการ สร้างแอปอีกครั้ง (หากมี) และวิธีทดสอบแอปใน สภาพแวดล้อมขนาด 16 KB โดยใช้เครื่องมือจำลอง (รวมถึง Android 15 อิมเมจระบบสำหรับ Android Emulator)
ประโยชน์และประสิทธิภาพที่เพิ่มขึ้น
อุปกรณ์ที่กำหนดค่าหน้าเว็บขนาด 16 KB จะใช้หน่วยความจำโดยเฉลี่ยมากกว่าเล็กน้อย แต่ปรับปรุงประสิทธิภาพการทำงานได้หลากหลายสำหรับทั้งระบบและแอป ดังนี้
- เวลาเปิดแอปลดลงขณะที่ระบบมีภาระเกี่ยวกับหน่วยความจำ: ลดลงโดยเฉลี่ย 3.16% โดยการปรับปรุงที่เห็นได้ชัดมากขึ้น (สูงสุด 30%) สำหรับบางแอปที่เราทดสอบ
- การลดพลังงานในระหว่างการเปิดแอป: ลดลง 4.56% โดยเฉลี่ย
- การเปิดตัวกล้องเร็วขึ้น: Hot Start เร็วขึ้น 4.48% โดยเฉลี่ย และ Cold Start เร็วขึ้น 6.60% โดยเฉลี่ย
- ปรับปรุงเวลาในการบูตระบบ: เร็วขึ้น 8% (ประมาณ 950 มิลลิวินาที) โดยเฉลี่ย
การปรับปรุงเหล่านี้อิงตามการทดสอบขั้นต้นของเรา และผลลัพธ์ในอุปกรณ์จริงอาจแตกต่างกัน เราจะให้การวิเคราะห์เพิ่มเติมเกี่ยวกับโอกาสในการได้ผู้ใช้ใหม่สำหรับแอปขณะที่เราทำการทดสอบต่อไป
ตรวจสอบว่าแอปของคุณได้รับผลกระทบหรือไม่
หากแอปใช้โค้ดเนทีฟ คุณควรสร้างแอปใหม่โดยรองรับอุปกรณ์ 16 KB หากไม่แน่ใจว่าแอปใช้โค้ดเนทีฟหรือไม่ คุณสามารถใช้เครื่องมือวิเคราะห์ APK เพื่อดูว่ามีโค้ดเนทีฟอยู่หรือไม่ จากนั้นตรวจสอบการจัดแนวของกลุ่ม ELF เพื่อหาไลบรารีที่ใช้ร่วมกันที่คุณพบ
หากแอปใช้เฉพาะโค้ดที่เขียนด้วยภาษาโปรแกรม Java หรือ Kotlin รวมถึงไลบรารีหรือ SDK ทั้งหมด แอปของคุณรองรับอุปกรณ์ขนาด 16 KB อยู่แล้ว อย่างไรก็ตาม เราขอแนะนำให้คุณทดสอบแอปในสภาพแวดล้อม 16 KB เพื่อยืนยันว่าไม่มีการแสดงลักษณะการทำงานที่แย่ลงอย่างฉับพลันของแอป
แอปของคุณใช้โค้ดเนทีฟหรือไม่
แอปของคุณใช้โค้ดเนทีฟในกรณีต่อไปนี้
- แอปของคุณใช้โค้ด C/C++ (เนทีฟ) หากแอปใช้ Android IDE แสดงว่าแอปใช้โค้ดเนทีฟ
- แอปของคุณลิงก์กับไลบรารีหรือทรัพยากร Dependency ของบุคคลที่สามแบบเนทีฟ (เช่น SDK) ที่ใช้ไลบรารีหรือทรัพยากร Dependency ดังกล่าว
- แอปของคุณสร้างขึ้นโดยเครื่องมือสร้างแอปของบุคคลที่สามที่ใช้ไลบรารีแบบเนทีฟในอุปกรณ์
ระบุไลบรารีแบบเนทีฟโดยใช้เครื่องมือวิเคราะห์ APK
เครื่องมือวิเคราะห์ APK เป็นเครื่องมือที่ช่วยให้คุณประเมินแง่มุมต่างๆ ของ APK ที่สร้างขึ้น หากต้องการตรวจสอบว่าแอปของคุณใช้โค้ดเนทีฟหรือไลบรารี ให้ทำตามขั้นตอนต่อไปนี้
- เปิด Android Studio แล้วคลิกไฟล์ > เปิด แล้วเลือกโปรเจ็กต์ที่ต้องการ
จากแถบเมนู ให้คลิกสร้าง > วิเคราะห์ APK...
เลือก APK ที่ต้องการวิเคราะห์
มองหาในโฟลเดอร์
lib
ซึ่งโฮสต์ไฟล์ออบเจ็กต์ที่แชร์ (.so
) หากมี หากมีไฟล์ออบเจ็กต์ที่แชร์อยู่ แอปของคุณจะใช้โค้ดเนทีฟ หากไม่มีไฟล์ออบเจ็กต์ที่แชร์หรือไม่มีโฟลเดอร์lib
แสดงว่าแอปไม่ได้ใช้โค้ดเนทีฟ
ตรวจสอบการจัดตำแหน่งของกลุ่ม ELF สำหรับไลบรารีที่ใช้ร่วมกัน
สำหรับไลบรารีที่ใช้ร่วมกัน ให้ตรวจสอบว่ามีการจัดแนว ELF ของไลบรารีที่ใช้ร่วมกันอย่างถูกต้องโดยใช้การจัดแนว ELF 16 KB หากพัฒนาบน 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 โดยใช้เครื่องมือบรรทัดคำสั่งโดยตรง
- ตรวจสอบว่าได้ติดตั้งทั้งเครื่องมือสร้าง Android SDK เวอร์ชัน 35.0.0 ขึ้นไปและ Android NDK โดยใช้เครื่องมือจัดการ SDK ใน Android Studio หรือเครื่องมือบรรทัดคำสั่ง
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 Analyzer เรียกใช้คำสั่งต่อไปนี้ในไฟล์ออบเจ็กต์ที่แชร์แต่ละไฟล์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
คือเส้นทางไปยังไดเรกทอรีที่คุณติดตั้ง 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
ตรวจสอบบรรทัดเอาต์พุตเพื่อให้แน่ใจว่ากลุ่มการโหลดไม่มีค่าที่น้อยกว่า
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
คือเส้นทางไปยังไดเรกทอรีที่คุณติดตั้ง Android SDK และAPK_NAME
คือชื่อไฟล์ APK ของแอป บรรทัดสุดท้ายของเอาต์พุตจะระบุว่า "ยืนยันสําเร็จ" หากไลบรารีที่แชร์ทั้งหมดสอดคล้องกันถูกต้องหากการยืนยันไม่สำเร็จ ไลบรารีที่ใช้ร่วมกันบางรายการจะต้องได้รับการจัดเรียงใหม่ คุณจึงต้องอัปเดตการแพ็กเกจสำหรับไลบรารีเหล่านั้น จากนั้นคอมไพล์แอปอีกครั้งและทดสอบอีกครั้งโดยทำตามขั้นตอนในส่วนนี้
สร้างแอปที่รองรับอุปกรณ์ขนาด 16 KB
หากต้องการรองรับอุปกรณ์ขนาด 16 KB แอปที่ใช้โค้ดเนทีฟควรทำตามขั้นตอนที่ระบุไว้ในส่วนต่อไปนี้ หากคุณอัปเดตเป็น AGP เวอร์ชัน 8.5.1 ขึ้นไปและ NDK เวอร์ชัน r28 ขึ้นไป และใช้ทรัพยากร Dependency ที่คอมไพล์ล่วงหน้าซึ่งเข้ากันได้กับ 16 KB แอปจะเข้ากันได้กับ 16 KB โดยค่าเริ่มต้น
อัปเดตการบรรจุของไลบรารีที่ใช้ร่วมกัน
เราขอแนะนำให้อัปเกรดเป็น AGP เวอร์ชัน 8.5.1 ขึ้นไปและใช้ไฟล์ที่แชร์แบบไม่บีบอัด
AGP เวอร์ชัน 8.5.1 ขึ้นไป
อุปกรณ์ขนาด 16 KB กำหนดให้แอปที่มาพร้อมกับไลบรารีที่ใช้ร่วมกันแบบไม่บีบอัดต้องจัดแนวให้อยู่ภายในขอบเขตขนาด 16 KB ที่สอดคล้องกับไฟล์ ZIP โดยคุณต้องอัปเกรดเป็น Android Gradle Plugin (AGP) เวอร์ชัน 8.5.1 ขึ้นไป ดูรายละเอียดเกี่ยวกับกระบวนการอัปเกรดได้ที่ส่วนAndroid ผู้ช่วยอัปเกรดปลั๊กอิน Gradle
AGP เวอร์ชัน 8.5 หรือต่ำกว่า
หากอัปเกรด AGP เป็นเวอร์ชัน 8.5.1 ขึ้นไปไม่ได้ คุณก็เปลี่ยนไปใช้ไลบรารีที่ใช้ร่วมกันแบบบีบอัดได้ อัปเดตการกำหนดค่า Gradle ให้ Gradle บีบอัดไลบรารีที่ใช้ร่วมกันเมื่อแพ็กเกจแอปเพื่อหลีกเลี่ยงปัญหาการติดตั้งแอปด้วยไลบรารีที่ใช้ร่วมกันซึ่งไม่ได้จัดแนว
Groovy
ในไฟล์ build.gradle
ให้เพิ่มตัวเลือกต่อไปนี้
android {
...
packagingOptions {
jniLibs {
useLegacyPackaging true
}
}
}
Kotlin
ในไฟล์ build.gradle.kts
ให้เพิ่มตัวเลือกต่อไปนี้
android {
...
packagingOptions {
jniLibs {
useLegacyPackaging = true
}
}
}
คอมไพล์แอปโดยใช้การจัดแนว ELF ขนาด 16 KB
อุปกรณ์ 16 KB กำหนดให้ต้องจัดแนวกลุ่ม ELF ของไลบรารีที่ใช้ร่วมกันอย่างถูกต้องโดยใช้การจัดแนว ELF 16 KB เพื่อให้แอปทำงานได้
หากต้องการคอมไพล์แอปโดยใช้การจัดแนว ELF ขนาด 16 KB ให้ทำตามขั้นตอนในส่วนใดส่วนหนึ่งต่อไปนี้ โดยขึ้นอยู่กับเวอร์ชันของ Android NDK ที่คุณใช้
Android NDK r28 ขึ้นไป
NDK เวอร์ชัน r28 ขึ้นไปจะคอมไพล์แบบจัดแนว 16 KB โดยค่าเริ่มต้น
Android NDK r27
หากต้องการรองรับการคอมไพล์ไลบรารีที่แชร์แบบ 16 KB ที่สอดคล้องกับ Android NDK เวอร์ชัน r27 ขึ้นไป คุณต้องอัปเดต ndk-build
, build.gradle
,
build.gradle.kts
หรือ Flag ของ linker ดังนี้
ndk-build
ใน Application.mk
APP_SUPPORT_FLEXIBLE_PAGE_SIZES := true
Groovy
ในไฟล์ 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")
}
}
}
}
ระบบบิลด์อื่นๆ
ระบุ Flag ของ linker ต่อไปนี้
-Wl,-z,max-page-size=16384
Android NDK r26 และต่ำกว่า
หากต้องการรองรับการคอมไพล์ไลบรารีที่ใช้ร่วมกันแบบ 16 KB ที่สอดคล้องกับ Android NDK เวอร์ชัน r26 หรือต่ำกว่า คุณต้องอัปเดตการกำหนดค่า ndk-build
หรือ cmake
ดังนี้
ndk-build
อัปเดต Android.mk
เพื่อเปิดใช้การจัดแนว ELF ขนาด 16 KB โดยทำดังนี้
LOCAL_LDFLAGS += "-Wl,-z,max-page-size=16384"
CMake
อัปเดต CMakeLists.txt
เพื่อเปิดใช้การจัดแนว ELF ขนาด 16 KB โดยทำดังนี้
target_link_options(${CMAKE_PROJECT_NAME} PRIVATE "-Wl,-z,max-page-size=16384")
ตรวจสอบอินสแตนซ์โค้ดที่อ้างอิงขนาดหน้าเว็บที่เจาะจง
แม้ว่าแอปจะปรับขนาดเป็น 16 KB แต่แอปก็อาจพบข้อผิดพลาดได้หากตำแหน่งในโค้ดของคุณถือว่าอุปกรณ์ใช้หน้าเว็บขนาดที่เจาะจง หากต้องการหลีกเลี่ยงปัญหานี้ ให้ทําตามขั้นตอนต่อไปนี้
นําการพึ่งพาแบบฮาร์ดโค้ดที่อ้างอิงค่าคงที่
PAGE_SIZE
หรืออินสแตนซ์ในตรรกะโค้ดที่ถือว่าขนาดหน้าเว็บของอุปกรณ์คือ 4 KB (4096
) ออกให้ใช้
getpagesize()
หรือsysconf(_SC_PAGESIZE)
แทนมองหาการใช้
mmap()
และ API อื่นๆ ที่ต้องอาศัยอาร์กิวเมนต์ที่สอดคล้องกับหน้าเว็บ แล้วแทนที่ด้วยทางเลือกอื่นๆ ตามความจําเป็น
ในบางกรณี หากแอปใช้ PAGE_SIZE
เป็นค่าที่สะดวกซึ่งไม่ได้เชื่อมโยงกับขนาดหน้าเว็บที่เกี่ยวข้อง การตั้งค่านี้จะไม่ทําให้แอปขัดข้องเมื่อใช้ในโหมด 16 KB อย่างไรก็ตาม หากส่งค่านี้ไปยังเคอร์เนลด้วย mmap
โดยไม่มี MAP_FIXED
เคอร์เนลจะยังคงใช้ทั้งหน้า ซึ่งจะสิ้นเปลืองหน่วยความจำไปบ้าง ด้วยเหตุนี้ PAGE_SIZE
จึงไม่มีการกำหนดค่าเมื่อเปิดใช้โหมด 16 KB ใน NDK r27 ขึ้นไป
หากแอปใช้ PAGE_SIZE
ในลักษณะนี้และไม่เคยส่งค่านี้ไปยังเคอร์เนลโดยตรง ให้สร้างตัวแปรใหม่ที่มีชื่อใหม่แทนการใช้ PAGE_SIZE
เพื่อระบุว่าตัวแปรดังกล่าวมีไว้เพื่อวัตถุประสงค์อื่นและไม่ได้แสดงถึงหน้าหน่วยความจำจริง
ตรวจสอบ SDK สำหรับการรองรับ 16 KB
SDK จํานวนมากเข้ากันได้กับหน้าขนาด 16 KB โดยเฉพาะอย่างยิ่งหากคุณสร้าง SDK เองหรือใช้ SDK ที่คอมไพล์ไว้ล่วงหน้าล่าสุด อย่างไรก็ตาม เนื่องจาก SDK ที่คอมไพล์ไว้ล่วงหน้าหรือ SDK บางเวอร์ชันใช้ร่วมกับ 16 KB ไม่ได้ คุณจึงควรตรวจสอบเว็บไซต์ของผู้ให้บริการ SDK แต่ละรายเพื่อดูว่าควรใช้เวอร์ชันใดกับ 16 KB
ทดสอบแอปในสภาพแวดล้อมขนาด 16 KB
หลังจากสร้างแอปที่รองรับอุปกรณ์ขนาด 16 KB แล้ว คุณควรทดสอบแอปในสภาพแวดล้อมขนาด 16 KB เพื่อดูว่าแอปมีอาการถดถอยหรือไม่ โดยคุณต้องทำตามขั้นตอนต่อไปนี้:
ตั้งค่าสภาพแวดล้อมการทดสอบอย่างใดอย่างหนึ่งต่อไปนี้
เริ่มอุปกรณ์ทดสอบ แล้วเรียกใช้คําสั่งต่อไปนี้เพื่อยืนยันว่าอุปกรณ์ใช้สภาพแวดล้อม 16 KB
adb shell getconf PAGE_SIZE
คำสั่งควรแสดงผลค่า
16384
เรียกใช้คำสั่ง
zipalign
ต่อไปนี้เพื่อยืนยันว่าแอปของคุณจัดแนวเป็น 16 KB โดยที่ APK_NAME คือชื่อไฟล์ APK ของแอปzipalign -c -P 16 -v 4 APK_NAME.apk
ทดสอบแอปอย่างละเอียด โดยเน้นที่ส่วนต่างๆ ที่อาจได้รับผลกระทบจากการเปลี่ยนอินสแตนซ์โค้ดที่อ้างอิงขนาดหน้าเว็บที่เฉพาะเจาะจง
ตั้งค่าโปรแกรมจำลอง Android ด้วยอิมเมจระบบ Android 15 ขนาด 16 KB
หากต้องการตั้งค่าสภาพแวดล้อม 16 KB โดยใช้ Android Emulator ให้ทำตามขั้นตอนต่อไปนี้
รูปภาพระบบของโปรแกรมจำลอง Android 15 ที่ใช้ 16 KB เข้ากันได้กับ Android Studio Jellyfish | 2023.3.1 ขึ้นไป อย่างไรก็ตาม หากต้องการประสบการณ์การใช้งาน Android 15 เบต้าที่ดีที่สุด ให้ดาวน์โหลด Android Studio เวอร์ชันตัวอย่างล่าสุด
โปรดทราบว่าคุณสามารถติดตั้ง Android Studio เวอร์ชันที่มีอยู่ต่อไปได้ เนื่องจากคุณสามารถติดตั้งหลายเวอร์ชันควบคู่กันได้
ใน Android Studio ให้คลิกเครื่องมือ > เครื่องมือจัดการ SDK
ในแท็บแพลตฟอร์ม SDK ให้เลือกแสดงรายละเอียดแพ็กเกจ จากนั้นขยายส่วน Android VanillaIceCream Preview แล้วเลือกภาพระบบโปรแกรมจำลองต่อไปนี้อย่างน้อย 1 ภาพ โดยขึ้นอยู่กับอุปกรณ์เสมือนจริงที่คุณต้องการสร้าง
- อิมเมจระบบ ARM 64 v8a ขนาดหน้า 16,000 รายการเวอร์ชันทดลองของ Google APIs
- รูปภาพระบบ Intel x86_64 Atom ขนาดหน้า 16,000 รายการของ Google APIs รุ่นทดลอง
คลิกใช้ > ตกลงเพื่อดาวน์โหลดรูปภาพระบบที่คุณเลือก
ทำตามขั้นตอนเพื่อตั้งค่าอุปกรณ์เสมือนสำหรับ Android 15 และเมื่อระบบแจ้งให้เลือกอิมเมจระบบ ให้เลือกอิมเมจระบบขนาด 16 KB ที่คุณดาวน์โหลด หากระบบไม่แนะนำโดยอัตโนมัติ คุณจะค้นหารูปภาพระบบขนาด 16 KB ได้ในแท็บรูปภาพอื่นๆ
- ในเครื่องมือจัดการอุปกรณ์ ให้คลิกจุด 3 จุดข้างรูปภาพขนาด 16 KB แล้วคลิกแสดงในดิสก์
- ค้นหาไฟล์
config.ini
ในโฟลเดอร์นี้ เพิ่มบรรทัดต่อไปนี้ลงในไฟล์
config.ini
แล้วบันทึกการเปลี่ยนแปลงkernel.parameters = androidboot.page_shift=14
หากต้องการยืนยันการเปลี่ยนแปลง ให้เรียกใช้คําสั่งต่อไปนี้ ซึ่งควรแสดงผลเป็น
16384
adb shell getconf PAGE_SIZE
เปิดใช้โหมด 16 KB ในอุปกรณ์โดยใช้ตัวเลือกสำหรับนักพัฒนาแอป
ตั้งแต่ 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 Beta 2 ขึ้นไป)