แอปที่เผยแพร่ใน Google Play ต้องรองรับสถาปัตยกรรม 64 บิต การเพิ่มแอปเวอร์ชัน 64 บิต จะช่วยปรับปรุงประสิทธิภาพและตั้งค่าสำหรับอุปกรณ์ที่มีฮาร์ดแวร์ 64 บิตเท่านั้น
ขั้นตอนต่อไปนี้ช่วยให้มั่นใจว่าแอป 32 บิตของคุณรองรับอุปกรณ์ 64 บิต
ประเมินแอปของคุณ
หากแอปใช้เฉพาะโค้ดที่เขียนด้วยภาษาโปรแกรม Java หรือ Kotlin รวมถึงไลบรารีหรือ SDK ทั้งหมด แอปจะรองรับอุปกรณ์ 64 บิต หากแอปใช้โค้ดเนทีฟหรือไม่แน่ใจว่าใช้หรือไม่ ให้ประเมินแอป
ตรวจสอบสถานะอย่างรวดเร็ว
ไปที่ Play Console และดูรุ่นที่มีอยู่เพื่อดูว่าเป็นไปตามข้อกำหนดหรือไม่
นอกจากนี้ Play Console จะแสดงคำเตือนที่มีผลกับเวอร์ชันร่างของคุณหากมีปัญหาที่เกี่ยวข้องกับข้อกำหนดเวอร์ชัน 64 บิต รูปภาพต่อไปนี้เป็นตัวอย่าง
หากการแจ้งเตือนปรากฏขึ้น ให้ดูขั้นตอนต่อไปนี้เพื่อทําให้แอปเข้ากันได้กับอุปกรณ์ 64 บิต
แอปของคุณใช้โค้ดเนทีฟหรือไม่
แอปของคุณจะใช้โค้ดเนทีฟในกรณีต่อไปนี้
- ใช้โค้ด C/C++ (เนทีฟ) ในแอป
- ลิงก์ที่มีไลบรารีเนทีฟของบุคคลที่สาม
- สร้างขึ้นโดยเครื่องมือสร้างแอปของบุคคลที่สามที่ใช้ไลบรารีแบบเนทีฟ
แอปของคุณมีไลบรารี 64 บิตหรือไม่
ตรวจสอบโครงสร้างของไฟล์ APK เมื่อสร้างแล้ว APK จะรวมอยู่ในแพ็กเกจพร้อมกับไลบรารีแบบเนทีฟที่แอปต้องการ ไลบรารีแบบเนทีฟจะจัดเก็บไว้ในโฟลเดอร์ต่างๆ ตาม ABI คุณไม่จำเป็นต้องรองรับสถาปัตยกรรม 64 บิตทุกรูปแบบ แต่ต้องรวมสถาปัตยกรรม 64 บิตที่เกี่ยวข้องไว้ด้วยสำหรับสถาปัตยกรรมเนทีฟ 32 บิตแต่ละรายการที่คุณรองรับ
สำหรับสถาปัตยกรรม ARM ไลบรารี 32 บิตจะอยู่ใน armeabi-v7a ค่าที่เทียบเท่าของ 64 บิต คือ arm64-v8a
สำหรับสถาปัตยกรรม x86 ให้มองหา x86 สำหรับ 32 บิต และ x86_64 สำหรับ 64 บิต
ตรวจสอบว่าคุณมีไลบรารีเนทีฟในทั้ง 2 โฟลเดอร์นี้ โดยสรุป
แพลตฟอร์ม | โฟลเดอร์ไลบรารี 32 บิต | โฟลเดอร์ไลบรารี 64 บิต |
---|---|---|
เปิดระบบ | lib/armeabi-v7a
|
lib/arm64-v8a
|
x86 | lib/x86
|
lib/x86_64
|
โปรดทราบว่าแต่ละโฟลเดอร์อาจมีชุดไลบรารีที่เหมือนกันทุกประการหรือไม่ก็ได้ ทั้งนี้ขึ้นอยู่กับแอปของคุณ เป้าหมายคือเพื่อให้แอปทำงานได้อย่างถูกต้องในสภาพแวดล้อมแบบ 64 บิตเท่านั้น
ในกรณีทั่วไป APK หรือ App Bundle ที่สร้างขึ้นสำหรับทั้งสถาปัตยกรรม 32 บิตและ 64 บิตจะมีโฟลเดอร์สำหรับ ABI ทั้ง 2 รายการ โดยแต่ละรายการจะมีชุดไลบรารีเนทีฟที่เกี่ยวข้อง หากระบบไม่รองรับ 64 บิต คุณอาจเห็นโฟลเดอร์ ABI 32 บิต แต่ไม่เห็นโฟลเดอร์ 64 บิต
ค้นหาไลบรารีแบบเนทีฟโดยใช้ตัววิเคราะห์ APK
ตัววิเคราะห์ APK เป็นเครื่องมือที่ช่วยให้คุณสามารถประเมินแง่มุมต่างๆ ของ APK ที่สร้างขึ้น ใช้เพื่อค้นหาไลบรารีเนทีฟ และตรวจสอบว่ามีไลบรารี 64 บิตอยู่
- เปิด Android Studio แล้วเปิดโปรเจ็กต์ใดก็ได้
จากเมนู ให้เลือกสร้าง > วิเคราะห์ APK…
เลือก APK ที่ต้องการประเมิน
ดูในโฟลเดอร์ lib ซึ่งโฮสต์ไฟล์ ".so" หากมี หากไม่มี แสดงว่าแอปรองรับอุปกรณ์ 64 บิตและคุณไม่จำเป็นต้องดำเนินการใดๆ เพิ่มเติม หากเห็น armeabi-v7a หรือ x86 แสดงว่าคุณมีไลบรารี 32 บิต
ตรวจสอบว่าคุณมีไฟล์ ".so" ที่คล้ายกันในโฟลเดอร์ arm64-v8a หรือ x86_64 หรือไม่
หากไม่มีไลบรารี arm64-v8a หรือ x86_64 ให้อัปเดตกระบวนการสร้างเพื่อเริ่มสร้างและแพ็กเกจอาร์ติแฟกต์เหล่านั้นใน APK
หากเห็นการแพ็กเกจทั้ง 2 ไลบรารีแล้ว ให้ข้ามไปทดสอบแอปบนฮาร์ดแวร์ 64 บิต
ค้นหาไลบรารีแบบเนทีฟโดยการแตกไฟล์ APK
ไฟล์ APK มีโครงสร้างเหมือนกับไฟล์ ZIP แยกไฟล์ APK ด้วยบรรทัดคำสั่งหรือเครื่องมือดึงข้อมูลอื่นๆ คุณอาจต้องเปลี่ยนชื่อไฟล์เป็น .zip ทั้งนี้ขึ้นอยู่กับเครื่องมือแยกข้อมูล
เรียกดูไฟล์ที่แตกไฟล์โดยทำตามคำแนะนำข้างต้นเพื่อดูว่าแอปรองรับอุปกรณ์ 64 บิตหรือไม่ คุณเรียกใช้ตัวอย่างคำสั่งต่อไปนี้จากบรรทัดคำสั่งได้
:: Command Line
> zipinfo -1 YOUR_APK_FILE.apk | grep \.so$
lib/armeabi-v7a/libmain.so
lib/armeabi-v7a/libmono.so
lib/armeabi-v7a/libunity.so
lib/arm64-v8a/libmain.so
lib/arm64-v8a/libmono.so
lib/arm64-v8a/libunity.so
โปรดสังเกตว่ามีไลบรารี armeabi-v7a และ arm64-v8a ในตัวอย่างนี้ ซึ่งหมายความว่าแอปรองรับสถาปัตยกรรม 64 บิต
สร้างแอปด้วยไลบรารี 64 บิต
วิธีการต่อไปนี้จะอธิบายวิธีสร้างไลบรารี 64 บิต โปรดทราบว่าขั้นตอนเหล่านี้จะครอบคลุมเฉพาะโค้ดการสร้างและไลบรารีที่คุณสร้างได้จากแหล่งที่มาเท่านั้น
บิลด์ด้วย Android Studio หรือ Gradle
โปรเจ็กต์ Android Studio ส่วนใหญ่ใช้ Gradle เป็นระบบบิลด์พื้นฐาน ดังนั้นส่วนนี้จะมีผลกับทั้ง 2 กรณี หากต้องการเปิดใช้บิลด์สําหรับโค้ดเนทีฟ ให้เพิ่ม arm64-v8a และ/หรือ x86_64 ลงในการตั้งค่า ndk.abiFilters ในไฟล์ 'build.gradle' ของแอป โดยขึ้นอยู่กับสถาปัตยกรรมที่คุณต้องการรองรับ
Groovy
// Your app's build.gradle plugins { id 'com.android.app' } android { compileSdkVersion 27 defaultConfig { appId "com.google.example.64bit" minSdkVersion 15 targetSdkVersion 28 versionCode 1 versionName "1.0" ndk.abiFilters 'armeabi-v7a','arm64-v8a','x86','x86_64' // ...
Kotlin
// Your app's build.gradle plugins { id("com.android.app") } android { compileSdkVersion(27) defaultConfig { appId = "com.google.example.64bit" minSdkVersion(15) targetSdkVersion(28) versionCode = 1 versionName = "1.0" ndk { abiFilters += listOf("armeabi-v7a","arm64-v8a","x86","x86_64") } // ...
บิลด์ด้วย CMake
หากแอปของคุณสร้างขึ้นโดยใช้ CMake คุณจะสร้าง ABI แบบ 64 บิตได้โดยส่ง arm64-v8a ไปยังพารามิเตอร์ "-DANDROID_ABI" ดังนี้
:: Command Line
> cmake -DANDROID_ABI=arm64-v8a … or
> cmake -DANDROID_ABI=x86_64 …
บิลด์ด้วย ndk-build
หากแอปของคุณสร้างด้วย ndk-build คุณจะสร้าง ABI แบบ 64 บิตได้โดยแก้ไขไฟล์ 'Application.mk' โดยใช้ตัวแปร APP_ABI
ดังนี้
APP_ABI := armeabi-v7a arm64-v8a x86 x86_64
พอร์ตโค้ด 32 บิตเป็น 64 บิต
หากโค้ดทํางานบนเดสก์ท็อปหรือ iOS อยู่แล้ว คุณไม่จําเป็นต้องทํางานเพิ่มเติมสําหรับ Android หากนี่เป็นการสร้างโค้ดสําหรับระบบ 64 บิตเป็นครั้งแรก ปัญหาหลักที่คุณต้องจัดการคือพอยน์เตอร์ไม่พอดีกับประเภทจำนวนเต็ม 32 บิต เช่น int
อีกต่อไป
อัปเดตโค้ดที่จัดเก็บพอยน์เตอร์ในประเภทต่างๆ เช่น int
, unsigned
หรือ uint32_t
ในระบบ Unix long
จะตรงกับขนาดของตัวชี้ แต่ไม่จริงใน Windows แต่ให้ใช้ประเภทที่เปิดเผยความตั้งใจอย่าง uintptr_t
หรือ
intptr_t
แทน หากต้องการจัดเก็บผลต่างระหว่างเคอร์เซอร์ 2 ตัว ให้ใช้ptrdiff_t
คุณควรใช้ประเภทจำนวนเต็มที่เจาะจงและความกว้างคงที่ซึ่งกำหนดไว้ใน <stdint.h>
มากกว่าประเภทที่มีความกว้างคงที่ เช่น int
หรือ long
แม้จะไม่ใช่ตัวระบุก็ตาม
ใช้แฟล็กคอมไพเลอร์ต่อไปนี้เพื่อตรวจหากรณีที่โค้ดมีการแปลงระหว่างตัวชี้และจำนวนเต็มอย่างไม่ถูกต้อง
-Werror=pointer-to-int-cast
-Werror=int-to-pointer-cast
-Werror=shorten-64-to-32
คลาส Java ที่มีช่อง int
ที่มีตัวชี้ไปยังออบเจ็กต์ C/C++ มีปัญหาเหมือนกัน ค้นหา jint
ในซอร์สโค้ด JNI และตรวจสอบว่าคุณได้เปลี่ยนไปใช้ long
ฝั่ง Java และ jlong
ฝั่ง C++ แล้ว
การประกาศฟังก์ชันโดยนัยเป็นอันตรายต่อโค้ด 64 บิตมากกว่า C/C++ สมมติว่าประเภทการแสดงผลของฟังก์ชันที่มีการประกาศโดยนัย (กล่าวคือ เป็นฟังก์ชันที่คอมไพเลอร์ไม่เห็นการประกาศ) คือ int
หากประเภทการแสดงผลจริงของฟังก์ชันเป็นตัวชี้ ฟังก์ชันนี้จะทำงานได้ดีในระบบ 32 บิตที่ตัวชี้มีค่าเป็น int อย่างไรก็ตาม ในระบบ 64 บิต คอมไพเลอร์จะลดครึ่งบนของตัวชี้ลง เช่น
// This function returns a pointer:
// extern char* foo();
// If you don't include a header that declares it,
// when the compiler sees this:
char* result = foo();
// Instead of compiling that to:
result = foo();
// It compiles to something equivalent to:
result = foo() & 0xffffffff;
// Which will then cause a SIGSEGV if you try to dereference `result`.
แฟล็กคอมไพเลอร์ต่อไปนี้จะเปลี่ยนคําเตือนเกี่ยวกับการประกาศฟังก์ชันโดยนัยให้เป็นข้อผิดพลาดเพื่อให้คุณค้นหาและแก้ไขปัญหานี้ได้ง่ายขึ้น
-Werror=implicit-function-declaration
หากคุณมีโปรแกรมแอสเซมเบลอร์แบบอินไลน์ ให้เขียนโค้ดใหม่หรือใช้การติดตั้ง C/C++ ธรรมดา
หากคุณมีประเภทขนาดแบบฮาร์ดโค้ด (เช่น 8 หรือ 16 ไบต์) ให้แทนที่ด้วยนิพจน์ sizeof(T)
ที่เทียบเท่า เช่น sizeof(void*)
หากต้องการคอมไพล์โค้ดที่แตกต่างกันแบบมีเงื่อนไขสำหรับ 32 บิตและ 64 บิต คุณสามารถใช้ #if defined(__LP64__)
สำหรับความแตกต่างทั่วไปของ 32/64 หรือ __arm__
,
__aarch64__
(arm64), __i386__
(x86) และ __x86_64__
สำหรับสถาปัตยกรรมที่เฉพาะเจาะจงซึ่ง Android รองรับ
ปรับสตริงรูปแบบสำหรับฟังก์ชันที่คล้ายกับ printf
หรือ scanf
เนื่องจากตัวระบุรูปแบบแบบดั้งเดิมไม่อนุญาตให้คุณระบุประเภท 64 บิตในลักษณะที่ถูกต้องสำหรับทั้งอุปกรณ์ 32 บิตและ 64 บิต มาโคร PRI
และ SCN
ใน <inttypes.h>
ช่วยแก้ปัญหานี้ได้ PRIxPTR
และ SCNxPTR
ใช้สําหรับการเขียนและการอ่านเคอร์เซอร์ฐาน 16 และ PRId64
และ SCNd64
ใช้สําหรับการเขียนและการอ่านค่า 64 บิตแบบพกพา
เมื่อเลื่อน คุณอาจต้องใช้ 1ULL
เพื่อรับค่าคงที่ 64 บิตที่จะเลื่อนแทนการใช้ 1
ซึ่งมีเพียง 32 บิต
ลดขนาดที่เพิ่มขึ้นด้วย Android App Bundle
การเพิ่มการรองรับสถาปัตยกรรม 64 บิตลงในแอปอาจทำให้ขนาดของ APK ใหญ่ขึ้นได้ เราขอแนะนําอย่างยิ่งให้ใช้ประโยชน์จากฟีเจอร์ Android App Bundle เพื่อลดผลกระทบด้านขนาดจากการรวมโค้ดเนทีฟทั้ง 32 บิตและ 64 บิตไว้ใน APK เดียวกัน
นักพัฒนาเกม
เครื่องมือ 3 รายการที่ใช้มากที่สุดรองรับ 64 บิต ได้แก่
- เหนือจริงตั้งแต่ปี 2015
- Cocos2d ตั้งแต่ปี 2015
- Unity ตั้งแต่ปี 2018
นักพัฒนาแอป Unity
อัปเกรดเป็นเวอร์ชันที่รองรับ
Unity มีการรองรับ 64 บิตสำหรับเวอร์ชัน 2018.2 และ 2017.4.16
หากคุณใช้ Unity เวอร์ชันที่ไม่รองรับ 64 บิต ให้ระบุเวอร์ชันที่ต้องการอัปเกรด แล้วทำตามคู่มือที่ Unity มีให้เพื่อย้ายข้อมูลสภาพแวดล้อม เพื่อให้แน่ใจว่าแอปได้รับการอัปเกรดเป็นเวอร์ชันที่สร้างไลบรารี 64 บิตได้ Unity ขอแนะนำให้คุณเข้าถึงฟีเจอร์และการอัปเดตล่าสุดโดยอัปเกรดเป็นเวอร์ชัน LTS ล่าสุดของเครื่องมือแก้ไข
ตารางดูเวอร์ชันต่างๆ ของ Unity และสิ่งที่ควรทำมีดังต่อไปนี้
เวอร์ชัน Unity | เวอร์ชันที่รองรับ 64 บิต | แนวทางการดำเนินการที่แนะนำ |
---|---|---|
2020.x |
✔️ |
ตรวจสอบว่าการตั้งค่าของเวอร์ชันเอาต์พุตไลบรารี 64 บิต |
2019.x |
✔️ |
ตรวจสอบว่าการตั้งค่าบิลด์เอาต์พุตไลบรารี 64 บิต |
2018.4 (LTS) |
✔️ |
ตรวจสอบว่าการตั้งค่าของเวอร์ชันเอาต์พุตไลบรารี 64 บิต |
2018.3 |
✔️ |
ตรวจสอบว่าการตั้งค่าบิลด์เอาต์พุตไลบรารี 64 บิต |
2018.2 |
✔️ |
ตรวจสอบว่าการตั้งค่าของเวอร์ชันเอาต์พุตไลบรารี 64 บิต |
1.2018 |
➖ |
รองรับ 64 บิตแบบทดลอง |
2017.4 (LTS) |
✔️ |
รองรับตั้งแต่วันที่ 2017.4.16 ตรวจสอบว่าการตั้งค่าของเวอร์ชันเอาต์พุตไลบรารี 64 บิต |
2017.3 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
2017.2 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
1.2017 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
<=5.6 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
เปลี่ยนการตั้งค่าบิลด์เพื่อแสดงผลไลบรารี 64 บิต
หากใช้ Unity เวอร์ชันที่รองรับไลบรารี Android 64 บิต คุณจะสร้างแอปเวอร์ชัน 64 บิตได้โดยการปรับการตั้งค่าการสร้าง ใช้แบ็กเอนด์ IL2CPP เป็นแบ็กเอนด์ของสคริปต์ หากต้องการตั้งค่าโปรเจ็กต์ Unity เพื่อสร้างสถาปัตยกรรม 64 บิต ให้ทำดังนี้
- ไปที่การตั้งค่าการสร้างและตรวจสอบว่าคุณกำลังสร้างสำหรับ Android โดยดูว่าสัญลักษณ์ Unity อยู่ข้าง Android ในส่วนแพลตฟอร์ม 1. หากสัญลักษณ์ Unity ไม่ได้อยู่ข้างแพลตฟอร์ม Android ให้เลือก Android แล้วคลิกเปลี่ยนแพลตฟอร์ม
คลิกการตั้งค่าโปรแกรมเล่น
ไปที่แผงการตั้งค่าโปรแกรมเล่น > การตั้งค่าสำหรับ Android > การตั้งค่าอื่นๆ > การกําหนดค่า
ตั้งค่าแบ็กเอนด์สคริปต์เป็น IL2CPP
เลือกช่องทําเครื่องหมายสถาปัตยกรรมเป้าหมาย > ARM64
โปรดสร้างตามปกติ
โปรดทราบว่าการสร้างสำหรับ ARM64 กำหนดว่าคุณต้องสร้างชิ้นงานทั้งหมดสำหรับแพลตฟอร์มนั้นโดยเฉพาะ ทำตามคำแนะนำของ Unity เพื่อลดขนาด APK และลองใช้ประโยชน์จากฟีเจอร์ Android App Bundle เพื่อช่วยลดความเพิ่มขึ้นของขนาด
APK หลายรายการและการปฏิบัติตามข้อกำหนด 64 บิต
หากคุณใช้การรองรับ APK หลายรายการของ Google Play ในการเผยแพร่แอป โปรดทราบว่าการปฏิบัติตามข้อกำหนด 64 บิตจะได้รับการประเมินที่ระดับรุ่น อย่างไรก็ตาม ข้อกำหนด 64 บิตจะไม่มีผลกับ APK หรือ App Bundle ที่ไม่ได้เผยแพร่ไปยังอุปกรณ์ที่ใช้ Android 9 Pie ขึ้นไป
หาก APK รายการใดรายการหนึ่งของคุณมีสถานะไม่เป็นไปตามข้อกําหนด แต่เวอร์ชันเก่าและไม่สามารถทําให้เป็นไปตามข้อกําหนดได้ กลยุทธ์อย่างหนึ่งคือการเพิ่มแอตทริบิวต์ maxSdkVersion="27"
ในองค์ประกอบ uses-sdk
ในไฟล์ Manifest ของ APK นั้น ระบบจะไม่ส่ง APK นี้ไปยังอุปกรณ์ที่ใช้ Android 9 Pie ขึ้นไป และจะไม่บล็อกการปฏิบัติตามข้อกำหนดอีกต่อไป
การปฏิบัติตามข้อกำหนดของ RenderScript และ 64 บิต
หากแอปของคุณใช้ RenderScript และสร้างขึ้นด้วยเครื่องมือ Android เวอร์ชันเก่า คุณอาจพบปัญหาการปฏิบัติตามข้อกำหนดแบบ 64 บิตสำหรับแอปนั้น เมื่อใช้เครื่องมือสร้างเวอร์ชันเก่ากว่า 21.0.0 คอมไพเลอร์อาจสร้างโค้ดบิตลงในไฟล์ .bc
ภายนอก สถาปัตยกรรม 64 บิตไม่รองรับไฟล์ .bc
เดิมเหล่านี้แล้ว ดังนั้นการมีไฟล์ใน APK อาจทำให้เกิดปัญหาด้านการปฏิบัติตามข้อกำหนด
หากต้องการแก้ไขปัญหานี้ ให้นำไฟล์ .bc
ในโปรเจ็กต์ออก อัปเกรดสภาพแวดล้อมเป็น build-tools-21.0.0
ขึ้นไป และตั้งค่า renderscriptTargetApi
ใน Android Studio เป็น 21 ขึ้นไปเพื่อบอกคอมไพเลอร์ไม่ให้ปล่อยไฟล์ .bc
จากนั้นสร้างแอปอีกครั้ง ตรวจสอบหา.bc
ไฟล์ และอัปโหลดไปยัง Play Console
ทดสอบแอปบนฮาร์ดแวร์ 64 บิต
แอปเวอร์ชัน 64 บิตควรมีคุณภาพและชุดฟีเจอร์เหมือนกับเวอร์ชัน 32 บิต ทดสอบแอปเพื่อให้มั่นใจว่าผู้ใช้ในอุปกรณ์ 64 บิตรุ่นล่าสุดจะได้รับประสบการณ์การใช้งานที่ยอดเยี่ยมในแอป
อุปกรณ์แบบ 64 บิตเท่านั้น
เราขอแนะนำให้ทดสอบแอปในสภาพแวดล้อมแบบ 64 บิตเท่านั้นที่เข้มงวดโดยใช้ตัวเลือกใดตัวเลือกหนึ่งต่อไปนี้เมื่อเป็นไปได้
Google Pixel ที่มีอิมเมจระบบแบบ 64 บิตเท่านั้น
เราได้จัดเตรียมรูปภาพระบบพิเศษพร้อมสภาพแวดล้อมแบบ 64 บิตที่เข้มงวดสำหรับอุปกรณ์ Pixel บางรุ่น เพื่ออำนวยความสะดวกในการพัฒนาและทดสอบแอป เดิมทีระบบได้ให้บริการภาพสำหรับเวอร์ชัน 64 บิตเท่านั้นควบคู่ไปกับภาพระบบโรงงานมาตรฐานสำหรับรุ่นตัวอย่างของ Android 13 และ 14 แต่คุณยังคงใช้ภาพเหล่านี้ได้ต่อไปขณะทดสอบแอปเพื่อดูความเข้ากันได้กับ 64 บิต
รับรูปภาพ 64 บิตเท่านั้น
คุณสามารถแฟลชอิมเมจ 64 บิตเท่านั้นลงในอุปกรณ์ได้โดยใช้เครื่องมือแฟลช Android หรือแฟลชอุปกรณ์ด้วยตนเอง เช่นเดียวกับอิมเมจระบบของโรงงาน ตามที่อธิบายไว้ในส่วนต่อไปนี้
แฟลชอุปกรณ์โดยใช้ Android Flash Tool
Android Flash Tool ให้คุณแฟลชอิมเมจระบบ ไปยังอุปกรณ์ Pixel ที่รองรับได้อย่างปลอดภัย เครื่องมือแฟลชของ Android ใช้งานได้กับเว็บเบราว์เซอร์ใดก็ได้ที่รองรับ WebUSB เช่น Chrome หรือ Edge 79 ขึ้นไป
Android Flash Tool จะแนะนำคุณทีละขั้นตอนตลอดกระบวนการแฟลชอุปกรณ์ โดยไม่จำเป็นต้องติดตั้งเครื่องมือใดๆ แต่คุณต้องปลดล็อกอุปกรณ์และเปิดใช้การแก้ไขข้อบกพร่องผ่าน USB ในตัวเลือกสำหรับนักพัฒนาแอป ดูวิธีการแบบเต็มได้ในเอกสารประกอบของเครื่องมือแฟลช Android
เชื่อมต่ออุปกรณ์ผ่าน USB จากนั้นไปที่ Android Flash Tool โดยใช้ลิงก์ใดลิงก์หนึ่งต่อไปนี้ แล้วทําตามคําแนะนําบนหน้าจอ โดยขึ้นอยู่กับประเภทของภาพระบบที่คุณต้องการแฟลช
ภาพระบบ 64 บิตเท่านั้นของ Android 14 (เบต้า 5.2)
เลือกอุปกรณ์ที่คุณพยายามแฟลช
ภาพระบบ 64 บิตเท่านั้นของ Android 13 (QPR3 เบต้า 3.2)
เลือกอุปกรณ์ที่คุณพยายามแฟลช
แฟลชอุปกรณ์ด้วยตนเอง
นอกจากนี้ คุณยังดาวน์โหลดอิมเมจระบบล่าสุดและแฟลชลงในอุปกรณ์ด้วยตนเองได้อีกด้วย ดูตารางต่อไปนี้เพื่อดาวน์โหลดอิมเมจระบบสำหรับอุปกรณ์ทดสอบ การแฟลชอุปกรณ์ด้วยตนเองจะมีประโยชน์ในกรณีที่คุณต้องการควบคุมสภาพแวดล้อมการทดสอบอย่างละเอียด หรือในกรณีที่ต้องติดตั้งใหม่บ่อยครั้ง เช่น เมื่อทำการทดสอบอัตโนมัติ
หลังจากสำรองข้อมูลอุปกรณ์และดาวน์โหลดภาพระบบที่ตรงกันแล้ว คุณจะแฟลชภาพลงในอุปกรณ์ได้
คุณเลือกกลับไปใช้รุ่นล่าสุดที่เผยแพร่สู่สาธารณะได้ทุกเมื่อ
รูปภาพสำหรับโรงงานแบบ 64 บิตเท่านั้นสำหรับ Android 14 (เบต้า 5.3)
รูปภาพเหล่านี้เป็นสภาพแวดล้อมแบบ 64 บิตล้วนที่เข้มงวดสำหรับการทดสอบความเข้ากันได้ของแอป 64 บิต การกําหนดค่าแบบ 64 บิตเท่านั้นเหล่านี้มีไว้สําหรับนักพัฒนาแอปเท่านั้น
อุปกรณ์ | ลิงก์ดาวน์โหลด | ผลรวมตรวจสอบ SHA-256 |
---|---|---|
Pixel 4a (5G) | 7e6731fab811ae389f5ff882d5c5a2b8b942b8363b22bbcc038b39d7c539e60a |
|
Pixel 5 | c4da6a19086a02f2cd2fa7a4054e870916954b8e5a61e9a07ee942c537e4b45a |
|
Pixel 6 | 98943384284cbc7323b8867d84c36151757f67ae7633012fb69cb5d6bec2b554 |
|
Pixel 6 Pro | 67ec40be5bd05a40fa5dabc1ce6795aae75d1904193d52e2da00425ed7cb895b |
รูปภาพสำหรับโรงงานแบบ 64 บิตเท่านั้นสำหรับ Android 13 (QPR3 เบต้า 3.2)
รูปภาพเหล่านี้เป็นสภาพแวดล้อมแบบ 64 บิตล้วนที่เข้มงวดสำหรับการทดสอบความเข้ากันได้ของแอป 64 บิต การกําหนดค่าแบบ 64 บิตเท่านั้นเหล่านี้มีไว้สําหรับนักพัฒนาแอปเท่านั้น
อุปกรณ์ | ลิงก์ดาวน์โหลด | ผลรวมตรวจสอบ SHA-256 |
---|---|---|
Pixel 4a (5G) | b4be40924f62c3c2b3ed20a9f7fa4303aa9c39649d778eb96f86c867fe3ae59a |
|
Pixel 5 | 6e5e027a4f64f9f786db9bb69d50d1a551c3f6aad893ae450e1f8279ea1b761a |
|
Pixel 6 | becb9b81a5bddad67a4ac32d30a50dcb372b9d083cb7c046e5180510e479a0b8 |
|
Pixel 6 Pro | b0ef544ed2312ac44dc827f24999281b147c11d76356c2d06b2c57a191c60480 |
กลับไปใช้รุ่นสาธารณะ
คุณสามารถใช้เครื่องมือแฟลช Android เพื่อแฟลชค่าเริ่มต้น หรือรับรูปภาพระบบตามข้อกำหนดของโรงงานจากหน้าค่าเริ่มต้นสำหรับอุปกรณ์ Nexus และ Pixel แล้วแฟลชลงในอุปกรณ์ด้วยตนเอง
โปรแกรมจำลอง Android
ตั้งแต่ Android 12 (API ระดับ 31) เป็นต้นไป อิมเมจระบบของโปรแกรมจำลอง Android จะเป็น 64 บิตเท่านั้น สร้างอุปกรณ์เสมือน Android (AVD) โดยใช้ภาพระบบที่มี Android 12 (API ระดับ 31) ขึ้นไปเพื่อให้ได้สภาพแวดล้อมแบบ 64 บิตเท่านั้นที่เข้มงวดสำหรับการทดสอบแอป
ตัวเลือกอุปกรณ์อื่นๆ
หากไม่มีอุปกรณ์เหล่านี้หรือใช้ Android Emulator ไม่ได้ ตัวเลือกที่ดีที่สุดถัดไปคือการใช้อุปกรณ์ที่รองรับ 64 บิต เช่น Google Pixel หรืออุปกรณ์เรือธงรุ่นล่าสุดอื่นๆ จากผู้ผลิตอุปกรณ์รายอื่น
ติดตั้งและทดสอบแอป
วิธีที่ง่ายที่สุดในการทดสอบ APK คือการติดตั้งแอปโดยใช้ Android Debug Bridge (adb) ในกรณีส่วนใหญ่ คุณสามารถระบุ --abi
เป็นพารามิเตอร์เพื่อระบุไลบรารีที่จะติดตั้งลงในอุปกรณ์ ซึ่งจะติดตั้งแอปด้วยไลบรารี 64 บิตเท่านั้นในอุปกรณ์
:: Command Line
# A successful install:
> adb install --abi armeabi-v7a YOUR_APK_FILE.apk
Success
# If your APK does not have the 64-bit libraries:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
adb: failed to install YOUR_APK_FILE.apk: Failure [INSTALL_FAILED_NO_MATCHING_ABIS: Failed to extract native libraries, res=-113]
# If your device does not support 64-bit, an emulator, for example:
> adb install --abi arm64-v8a YOUR_APK_FILE.apk
ABI arm64-v8a not supported on this device
เมื่อติดตั้งสำเร็จแล้ว ให้ทดสอบแอปตามปกติเพื่อให้แน่ใจว่าคุณภาพเหมือนกับเวอร์ชัน 32 บิต
ตรวจสอบปัญหาความเข้ากันได้ที่ทราบ
ขณะทดสอบ ให้ตรวจสอบแอปเพื่อหาปัญหาต่อไปนี้ที่ส่งผลต่อแอปเมื่อทำงานในอุปกรณ์ 64 บิต แม้ว่าแอปของคุณจะไม่ได้ใช้ไลบรารีที่ได้รับผลกระทบโดยตรง แต่ไลบรารีและ SDK ของบุคคลที่สามในทรัพยากร Dependency ของแอปอาจใช้
SoLoader
หากคุณใช้ SDK ตัวโหลดโค้ดเนทีฟ SoLoader ให้อัปเดตเป็น v0.10.4 ขึ้นไป หากแอปใช้ SDK ที่ขึ้นอยู่กับ SoLoader โปรดอัปเดต SDK ที่ได้รับผลกระทบเป็นเวอร์ชันล่าสุดที่เสถียรด้วย
SoLoader v0.9.0 และต่ำกว่าจะถือว่าไลบรารีของระบบมีอยู่ใน /vendor/lib:/system/lib
ข้อบกพร่องนี้ไม่ปรากฏในอุปกรณ์อย่าง Pixel 7 ที่มีเส้นทางดังกล่าว แต่การคาดการณ์นี้ทำให้อุปกรณ์ที่มีเฉพาะไลบรารีระบบใน /vendor/lib64:/system/lib64
ขัดข้อง
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขปัญหานี้และปัญหาอื่นๆ ที่เกิดจาก SoLoader ได้ที่คำตอบที่เกี่ยวข้องในศูนย์ช่วยเหลือของ Google
OpenSSL
หากคุณใช้ไลบรารี OpenSSL ให้อัปเดตเป็น OpenSSL 1.1.1i ขึ้นไป หากแอปใช้ SDK ที่ให้การสื่อสารโดยใช้ HTTPS หรือ SDK อื่นๆ ที่ใช้ OpenSSL ให้ตรวจสอบว่าได้อัปเดตเป็น SDK เวอร์ชันล่าสุดที่ใช้ OpenSSL เวอร์ชันใหม่กว่าด้วย โปรดติดต่อผู้ให้บริการ SDK หากไม่มี
ARMv8.3 PAC เปิดใช้ Control Flow Integrity ด้วยการตรวจสอบสิทธิ์ Pointer ขณะรันไทม์ OpenSSL เวอร์ชันก่อนหน้าใช้ความสามารถเหล่านี้อย่างไม่ถูกต้อง ซึ่งทำให้รันไทม์ขัดข้องในอุปกรณ์ทั้งหมดที่ใช้โปรเซสเซอร์ที่ใช้ ARMv8.3a ขึ้นไป
ดูข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขปัญหานี้และปัญหาอื่นๆ ที่เกิดจาก OpenSSL ได้ที่คำตอบที่เกี่ยวข้องในศูนย์ช่วยเหลือของ Google
BTI
ARMv8.5 ขึ้นไปใช้คำสั่งเป้าหมายสาขา (BTI) เพื่อช่วยป้องกันการโจมตี JOP การสร้างความสับสนในเวอร์ชันก่อนหน้านี้ SDK ที่กระจายไปอยู่ในออฟเซ็ตแบบสุ่มของไลบรารีที่สร้างด้วย BTI อาจทำให้แอปขัดข้องได้ เนื่องจากมีการเข้ารหัสคำสั่งเป็นคำแนะนำ คุณจึงไม่เห็นข้อบกพร่องนี้ในอุปกรณ์ที่ไม่รองรับ BTI
เผยแพร่
เมื่อรู้สึกว่าแอปพร้อมแล้ว ให้เผยแพร่ตามปกติ โปรดปฏิบัติตามแนวทางปฏิบัติแนะนำในการใช้งานแอปต่อไป เราขอแนะนำให้ใช้ประโยชน์จากแทร็กทดสอบแบบปิดเพื่อเปิดตัวแอปกับผู้ใช้จํานวนจํากัด เพื่อให้มั่นใจว่าแอปมีคุณภาพสม่ำเสมอ
เช่นเดียวกับการเปิดตัวการอัปเดตครั้งใหญ่ โปรดตรวจสอบว่าคุณได้ทดสอบอย่างละเอียดในอุปกรณ์ที่รองรับ 64 บิตแล้วก่อนที่จะเผยแพร่ต่อผู้ชมจำนวนมากขึ้น
Download Android 14 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 14 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.
Download Android 13 factory system image (64-bit-only)
Before downloading, you must agree to the following terms and conditions.
Terms and Conditions
By clicking to accept, you hereby agree to the following:All use of this development version SDK will be governed by the Android Software Development Kit License Agreement (available at https://developer.android.com/studio/terms and such URL may be updated or changed by Google from time to time), which will terminate when Google issues a final release version.
Your testing and feedback are important part of the development process and by using the SDK, you acknowledge that (i) implementation of some features are still under development, (ii) you should not rely on the SDK having the full functionality of a stable release; (iii) you agree not to publicly distribute or ship any application using this SDK as this SDK will no longer be supported after the official Android SDK is released; and (iv) you agree that Google may deliver elements of the SDK to your devices via auto-update (OTA or otherwise, in each case as determined by Google).
WITHOUT LIMITING SECTION 10 OF THE ANDROID SOFTWARE DEVELOPMENT KIT LICENSE AGREEMENT, YOU UNDERSTAND THAT A DEVELOPMENT VERSION OF A SDK IS NOT A STABLE RELEASE AND MAY CONTAIN ERRORS, DEFECTS AND SECURITY VULNERABILITIES THAT CAN RESULT IN SIGNIFICANT DAMAGE, INCLUDING THE COMPLETE, IRRECOVERABLE LOSS OF USE OF YOUR COMPUTER SYSTEM OR OTHER DEVICE.