แอปที่เผยแพร่ใน 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 คุณจะสร้างเวอร์ชัน 64 บิตได้ ABI โดยการส่ง 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
สำหรับการเขียนและอ่านตัวชี้เลขฐานสิบหก และ 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 บิต |
2.018 |
✔️ |
ตรวจสอบเอาต์พุตของการตั้งค่าบิลด์ ไลบรารี 64 บิต |
2018.1 |
➖ |
มีการสนับสนุน 64 บิตรุ่นทดลอง |
2017.4 (LTS) |
✔️ |
รองรับตั้งแต่ 16.4.2017 ตรวจสอบว่าการตั้งค่าบิลด์เอาต์พุตไลบรารี 64 บิต |
2017.3 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
2.017 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 64 บิต |
2017.1 |
✖️ |
อัปเกรดเป็นเวอร์ชันที่รองรับ 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
ไฟล์ ไฟล์ .bc
เดิมเหล่านี้ไม่รองรับไฟล์ 64 บิตอีกต่อไป
ดังนั้นการแสดงไฟล์ใน 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 บิตเท่านั้นไปยัง โดยใช้เครื่องมือ Flash ของ Android หรือโดยแฟลช ด้วยตนเอง ตามที่อธิบายไว้ในส่วนต่อไปนี้
แฟลชอุปกรณ์ของคุณโดยใช้เครื่องมือ Flash ของ Android
เครื่องมือแฟลช Android ช่วยให้คุณแฟลชอิมเมจระบบลงในอุปกรณ์ Pixel ที่รองรับได้อย่างปลอดภัย เครื่องมือแฟลชของ Android ใช้งานได้กับเว็บเบราว์เซอร์ใดก็ได้ที่รองรับ WebUSB เช่น Chrome หรือ Edge 79 ขึ้นไป
Android Flash Tool จะแนะนำคุณทีละขั้นตอนเกี่ยวกับวิธีการแฟลช คุณไม่จำเป็นต้องติดตั้งเครื่องมือ แต่จะต้องปลดล็อก อุปกรณ์และเปิดใช้การแก้ไขข้อบกพร่องของ USB ในตัวเลือกสำหรับนักพัฒนาซอฟต์แวร์ ดูวิธีการแบบสมบูรณ์ได้ในเอกสารประกอบของเครื่องมือแฟลช Android
เชื่อมต่ออุปกรณ์ผ่าน USB จากนั้นไปที่ Android Flash Tool โดยใช้ลิงก์ใดลิงก์หนึ่งต่อไปนี้ แล้วทําตามคําแนะนําบนหน้าจอ โดยขึ้นอยู่กับประเภทของภาพระบบที่คุณต้องการแฟลช
ภาพระบบ 64 บิตเท่านั้นของ Android 14 (เบต้า 5.2)
เลือกอุปกรณ์ที่คุณพยายามแฟลช
อิมเมจระบบ Android 13 (QPR3 เบต้า 3.2) แบบ 64 บิตเท่านั้น
เลือกอุปกรณ์ที่คุณพยายามแฟลช
แฟลชอุปกรณ์ด้วยตนเอง
นอกจากนี้ คุณยังดาวน์โหลดอิมเมจระบบล่าสุดและแฟลชลงในอุปกรณ์ด้วยตนเองได้อีกด้วย ดูตารางต่อไปนี้เพื่อดาวน์โหลดอิมเมจระบบสำหรับอุปกรณ์ทดสอบ การแฟลชอุปกรณ์ด้วยตนเองมีประโยชน์ในกรณีที่คุณต้องการการควบคุมที่แม่นยำ สภาพแวดล้อมการทดสอบหรือหากคุณต้องการติดตั้งใหม่บ่อยๆ เช่นเมื่อ กำลังทำการทดสอบอัตโนมัติ
หลังจากสำรองข้อมูลอุปกรณ์และดาวน์โหลดภาพระบบที่ตรงกันแล้ว คุณจะแฟลชภาพลงในอุปกรณ์ได้
คุณเลือกกลับไปใช้รุ่นล่าสุดที่เผยแพร่สู่สาธารณะได้ทุกเมื่อ
อิมเมจเริ่มต้นเท่านั้นแบบ 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 |
กลับไปยังบิลด์สาธารณะ
คุณสามารถใช้เครื่องมือ Flash ของ 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 เปิดใช้การควบคุมด้วยฮาร์ดแวร์ ความสมบูรณ์ของโฟลว์โดยการตรวจสอบสิทธิ์ตัวชี้ขณะรันไทม์ OpenSSL เวอร์ชันเก่าใช้ความสามารถเหล่านี้อย่างไม่ถูกต้อง จึงทำให้เกิดข้อขัดข้องในช่วงรันไทม์ในอุปกรณ์ทั้งหมดที่มีโปรเซสเซอร์ที่ใช้ ARMv8.3a ขึ้นไป
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการแก้ไขปัญหานี้และปัญหาอื่นๆ ที่เกิดจาก OpenSSL โปรดดู ที่เกี่ยวข้องในศูนย์ช่วยเหลือของ Google
BTI
ARMv8.5 ขึ้นไปใช้คำสั่งเป้าหมายสาขา (BTI) เพื่อช่วยป้องกันการโจมตี JOP การปรับให้ยากต่อการอ่าน (Obfuscation) เวอร์ชันก่อนหน้านี้ SDK ที่แบ่งออกเป็นออฟเซ็ตแบบสุ่มของไลบรารีที่สร้างด้วย BTI อาจทำให้แอป ที่จะขัดข้อง เนื่องจากมีการเข้ารหัสคำสั่งเป็นคำแนะนำ คุณจึงไม่เห็นข้อบกพร่องนี้ในอุปกรณ์ที่ไม่รองรับ BTI
เผยแพร่
เมื่อรู้สึกว่าแอปพร้อมแล้ว ให้เผยแพร่ตามปกติ และเช่นเคย โปรดไปยัง ทำตามแนวทางปฏิบัติแนะนำสำหรับการทำให้แอปใช้งานได้ เราขอแนะนำให้ใช้ประโยชน์ ของแทร็กทดสอบแบบปิดที่จะเปิดตัวแก่ผู้ใช้จำนวนจำกัด เพื่อให้แน่ใจว่าแอปของคุณมีคุณภาพสม่ำเสมอ
เช่นเดียวกับการเปิดตัวการอัปเดตครั้งใหญ่ โปรดตรวจสอบว่าคุณได้ทดสอบอย่างละเอียดในอุปกรณ์ที่รองรับ 64 บิตแล้วก่อนที่จะเผยแพร่ต่อผู้ชมจำนวนมากขึ้น
ดาวน์โหลด Android 14 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 14 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 14 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 14 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 13 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 13 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 13 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.
ดาวน์โหลด Android 13 factory system image (64-bit-only)
คุณต้องยอมรับข้อกำหนดและเงื่อนไขต่อไปนี้ก่อนดาวน์โหลด
ข้อกำหนดและเงื่อนไข
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.