คุณใช้ Google Play Store เพื่อติดตั้งแอป Android ใน Google Chromebook หลายรุ่นได้ เอกสารนี้อธิบายถึง Chromebook, Chromebox และ Chromebase ที่คุณติดตั้งแอป Android ได้
ภาพรวม
โทรศัพท์ Android ส่วนใหญ่มีชิปเซ็ต ARM อย่างไรก็ตาม อุปกรณ์ ChromeOS จำนวนมากใช้ชิป x86 ความแตกต่างนี้ไม่สำคัญสำหรับแอปพื้นฐานที่เขียนด้วย Kotlin หรือ Java อย่างไรก็ตาม สำหรับแอปที่เขียนด้วยโค้ด C/C++ รวมถึงแอปที่สร้างด้วยเกม เอนจิน ชิปเซ็ตในอุปกรณ์อาจเป็นข้อกังวลที่สำคัญ
ในอุดมคติแล้ว แอปและเกมทั้งหมดที่มีโค้ด C/C++ ควรจัดส่งพร้อมกับ ABI (Application Binary Interface) หลักทั้ง 4 รายการของ Android
armeabi-v7a (arm32), arm64-v8a (arm64), x86 (x86_32) และ x86_64 ซึ่งจะช่วยให้แต่ละอุปกรณ์มีประสิทธิภาพดีที่สุด
และใช้แบตเตอรี่น้อยที่สุด เช่น ไฟล์ build.gradle
ที่ใช้ CMake อาจมีเนื้อหาต่อไปนี้
Groovy
externalNativeBuild { cmake { abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64' } }
Kotlin
externalNativeBuild { cmake { abiFilters("armeabi-v7a", "arm64-v8a", "x86", "x86_64") } }
ขนาดชุดแพ็กเกจ Android (APK)
ABI แต่ละรายการใน APK แบบ Monolithic จะเพิ่มขนาดของ APK ซึ่งอาจส่งผลต่อการใช้พื้นที่ดิสก์ของผู้ใช้ ขนาดการดาวน์โหลดแอป และไม่ว่าแอปจะได้รับผลกระทบ จากขีดจำกัดขนาดของ Play Store หรือไม่ วิธีที่ดีที่สุดในการหลีกเลี่ยงปัญหานี้คือการใช้ Android App Bundle
App Bundle ช่วยให้คุณรวม ABI ทั้ง 4 รายการจากภายใน Android Studio ได้โดยไม่ต้องเพิ่ม ขนาดดาวน์โหลดสำหรับผู้ใช้ นอกจากนี้ยังช่วยให้คุณใช้ประโยชน์จากการนำส่งแบบไดนามิกได้ด้วย ซึ่งจะช่วยให้ผู้ใช้ดาวน์โหลดเนื้อหาเกมขนาดใหญ่ได้เฉพาะเมื่อมีการขอเท่านั้น หากใช้ App Bundle ไม่ได้ คุณสามารถใช้ multi-APK เวอร์ชันเก่าเพื่อ ให้มีลักษณะการทำงานที่คล้ายกันได้
บิลด์ 32 บิตและ 64 บิต
แอป Android ทั้งหมดต้องมีเวอร์ชันบิลด์ 64 บิต บิลด์ 32 บิตเป็นตัวเลือกสำหรับทั้งอุปกรณ์ ARM และ x86 ดูข้อมูลเพิ่มเติมได้ที่ Android 64 บิต
แม้ว่าการระบุเฉพาะบิลด์ 64 บิตจะช่วยลดจำนวนเป้าหมายบิลด์ที่จำเป็นและ พื้นผิวการทดสอบ แต่ก็จำกัดประเภทอุปกรณ์ที่สามารถเรียกใช้เกมของคุณได้ด้วย ตัวอย่างเช่น Chromebook รุ่นเก่าหลายรุ่นใช้แอป Android แบบ 32 บิตได้เท่านั้น แม้ว่าจะมี CPU แบบ 64 บิตก็ตาม เนื่องจากข้อจำกัดด้านฮาร์ดแวร์อื่นๆ โปรดรวมการรองรับทั้ง 32 บิตและ 64 บิตเพื่อให้มั่นใจว่าแอปจะทำงานบนอุปกรณ์เหล่านี้ได้
การแปล ARM
Chromebook ที่ใช้ x86 จะพยายามแปลโค้ด ARM ทุกครั้งที่ทำได้ แต่ การแปลจะทำให้ประสิทธิภาพช้าลงและเพิ่มการใช้แบตเตอรี่ โปรดระบุบิลด์ x86 เพื่อให้ผู้ใช้ได้รับประสบการณ์การใช้งานที่ดีที่สุด หากทำไม่ได้ ให้รวมทั้ง ABI arm32 และ arm64 ไว้ในบิลด์ เนื่องจาก Chromebook บางรุ่นที่ใช้ x86 อาจแปลโค้ด arm64 ไม่ได้ ตัวอย่างเช่น Chromebook รุ่นเก่าหลายรุ่นจะเรียกใช้ได้เฉพาะแอป Android แบบ 32 บิตเท่านั้น แม้ว่าจะมี CPU แบบ 64 บิตก็ตาม โปรดรวมการรองรับทั้ง 32 บิตและ 64 บิตเพื่อให้แอปทำงานบนอุปกรณ์เหล่านี้ได้
แม้ว่าการแปล arm32 จะพร้อมใช้งานใน Chromebook ทุกรุ่นที่ใช้ Android ได้ แต่ Chromebook บางรุ่นไม่สามารถแปลโค้ด arm64 ได้ ซึ่งหมายความว่าหากเกมมีเป้าหมายการสร้าง arm64 เท่านั้น เกมจะไม่พร้อมใช้งานในอุปกรณ์ ChromeOS จำนวนมาก หากจัดส่งไบนารี x86 ไม่ได้ ให้รวมทั้ง ABI arm32 และ arm64 ไว้ในการสร้าง
| ABI ที่รวมไว้ | การสนับสนุนสำหรับ ChromeOS |
|---|---|
| arm64 | แย่ |
| arm32 และ arm64 | ตกลง (พร้อมคำแปล) |
| arm32, arm64, x86_32 และ x86_64 | ดีที่สุด |