แอปที่เผยแพร่ใน 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
แม้จะใช้กับข้อมูลที่ไม่ใช่พอยน์เตอร์ก็ตาม
ใช้ Flag คอมไพเลอร์ต่อไปนี้เพื่อจับกรณีที่โค้ดของคุณแปลงระหว่างพอยน์เตอร์กับจำนวนเต็มอย่างไม่ถูกต้อง
-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 บิต ได้แก่
- Unreal มาตั้งแต่ปี 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 บิต |
2018.1 |
➖ |
รองรับ 64 บิตแบบทดลอง |
2017.4 (LTS) |
✔️ |
รองรับตั้งแต่วันที่ 2017.4.16 ตรวจสอบว่าการตั้งค่าของเวอร์ชันเอาต์พุตไลบรารี 64 บิต |
2017.3 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
2017.2 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
2017.1 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
<=5.6 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
เปลี่ยนการตั้งค่าการสร้างเพื่อแสดงผลไลบรารี 64 บิต
หากใช้ Unity เวอร์ชันที่รองรับไลบรารี Android 64 บิต คุณจะสร้างแอปเวอร์ชัน 64 บิตได้โดยการปรับการตั้งค่าการสร้าง ใช้แบ็กเอนด์ IL2CPP เป็นแบ็กเอนด์สคริปต์ หากต้องการตั้งค่าโปรเจ็กต์ Unity ให้สร้างสถาปัตยกรรม 64 บิต ให้ทำดังนี้
- ไปที่การตั้งค่าการสร้างและตรวจสอบว่าคุณกำลังสร้างสำหรับ Android โดยดูว่าสัญลักษณ์ Unity อยู่ข้าง Android ในส่วนแพลตฟอร์ม 1. หากสัญลักษณ์ Unity ไม่ได้อยู่ข้างแพลตฟอร์ม Android ให้เลือก Android แล้วคลิกเปลี่ยนแพลตฟอร์ม
คลิกการตั้งค่าโปรแกรมเล่น
ไปที่แผงการตั้งค่าโปรแกรมเล่น > การตั้งค่าสำหรับ Android > การตั้งค่าอื่นๆ > การกําหนดค่า
ตั้งค่า Scripting Backend เป็น 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 ช่วยให้คุณแฟลชอิมเมจระบบลงในอุปกรณ์ 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 บิตเท่านั้นเหล่านี้มีไว้สําหรับนักพัฒนาแอปเท่านั้น
อุปกรณ์ | ลิงก์ดาวน์โหลด | Checksum 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 บิตเท่านั้นมีไว้สําหรับนักพัฒนาแอปเท่านั้น
อุปกรณ์ | ลิงก์ดาวน์โหลด | Checksum 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.