เริ่มสร้างแอปสำหรับ ChromeOS

อุปกรณ์ ChromeOS เช่น Chromebook รองรับ Google Play Store และแอป Android บทความนี้ถือว่าคุณมีแอป Android ที่มีอยู่ซึ่งออกแบบมาสำหรับโทรศัพท์หรือแท็บเล็ตที่ต้องการเพิ่มประสิทธิภาพสำหรับ Chromebook หากต้องการดูข้อมูลเบื้องต้นเกี่ยวกับการสร้างแอป Android โปรดดูหัวข้อสร้างแอป Android แอปแรกของคุณ

อัปเดตไฟล์ Manifest ของแอป

ในการเริ่มต้นใช้งาน ให้อัปเดตไฟล์ Manifest เพื่อพิจารณาความแตกต่างที่สำคัญบางอย่างของฮาร์ดแวร์และซอฟต์แวร์ระหว่าง Chromebook กับอุปกรณ์อื่นๆ ที่ใช้ Android

ตั้งแต่ ChromeOS เวอร์ชัน M53 เป็นต้นไป แอป Android ทั้งหมดที่ไม่ต้องใช้ฟีเจอร์ android.hardware.touchscreen อย่างชัดแจ้งจะทำงานในอุปกรณ์ ChromeOS ที่รองรับฟีเจอร์ android.hardware.faketouch ได้ด้วย อย่างไรก็ตาม เพื่อให้แอปทำงานได้บน Chromebook ทั้งหมด ให้อัปเดตไฟล์ Manifest เพื่อไม่ให้ต้องใช้ฟีเจอร์ android.hardware.touchscreen ตามที่แสดงในตัวอย่างต่อไปนี้

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
          ... >
    <!-- Some Chromebooks don't support touch. Although not essential,
         it's a good idea to explicitly include this declaration. -->
    <uses-feature android:name="android.hardware.touchscreen"
                  android:required="false" />
</manifest>

อุปกรณ์ฮาร์ดแวร์แต่ละเครื่องจะมีชุดเซ็นเซอร์ที่แตกต่างกัน และ Chromebook อาจไม่มีเซ็นเซอร์ทั้งหมดที่มีในอุปกรณ์มือถือ Android เช่น GPS และเซ็นเซอร์ตรวจวัดความเร่ง อย่างไรก็ตาม ในบางกรณี ฟังก์ชันการทำงานของเซ็นเซอร์จะระบุไว้ด้วยวิธีอื่น เช่น Chromebook อาจไม่มีเซ็นเซอร์ GPS แต่จะให้ข้อมูลตำแหน่งตามการเชื่อมต่อ Wi-Fi ดูภาพรวมเซ็นเซอร์เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับเซ็นเซอร์ที่แพลตฟอร์ม Android รองรับ

หากต้องการให้แอปทำงานใน Chromebook ไม่ว่าเซ็นเซอร์จะพร้อมใช้งานหรือไม่ ให้อัปเดตไฟล์ Manifest เพื่อไม่ให้ต้องใช้เซ็นเซอร์

Chromebook ไม่รองรับฟีเจอร์บางอย่างของซอฟต์แวร์ ตัวอย่างเช่น Chromebook ไม่รองรับและไม่สามารถติดตั้งแอปที่มี IME ที่กำหนดเอง วิดเจ็ตแอป วอลเปเปอร์สด และ Launcher ของแอป ดูรายการฟีเจอร์ซอฟต์แวร์ทั้งหมดที่ Chromebook ไม่รองรับได้ที่หัวข้อฟีเจอร์ซอฟต์แวร์ที่ใช้ร่วมกันไม่ได้

อัปเดต SDK เป้าหมาย

อัปเดตแอตทริบิวต์ targetSdkVersion ของแอปเป็น API ระดับล่าสุดที่ใช้ได้เพื่อใช้ประโยชน์จากการปรับปรุงทั้งหมดในแพลตฟอร์ม Android ตรวจสอบการปรับปรุงแพลตฟอร์ม Android ในเวอร์ชันต่างๆ

ตรวจสอบข้อกำหนดของเครือข่าย

Chromebook ทำงานบนระบบปฏิบัติการ Android ทั้งหมดในคอนเทนเนอร์ ซึ่งคล้ายกับ Docker หรือ LXC ซึ่งหมายความว่า Android ไม่มีสิทธิ์เข้าถึงอินเทอร์เฟซ LAN ของระบบโดยตรง แต่การรับส่งข้อมูล IPv4 จะผ่านเลเยอร์ภายในของการเปลี่ยนที่อยู่เครือข่าย (NAT) และการรับส่งข้อมูลแบบยูนิแคสต์ของ IPv6 จะเปลี่ยนเส้นทางผ่าน Hop เพิ่มเติม

การเชื่อมต่อแบบ Unicast ขาออกจากแอป Android ไปยังอินเทอร์เน็ตส่วนใหญ่จะทำงานตามปกติ โดยทั่วไปแล้วระบบจะบล็อกการเชื่อมต่อขาเข้า ระบบจะไม่ส่งต่อแพ็กเก็ตมัลติแคสต์หรือแพ็กเก็ตการออกอากาศจาก Android ไปยัง LAN ผ่านไฟร์วอลล์

ChromeOS ทำงานบริการที่ส่งต่อการรับส่งข้อมูล mDNS ระหว่าง Android กับอินเทอร์เฟซ LAN ซึ่งเป็นข้อยกเว้นของข้อจำกัดมัลติแคสต์ ดังนั้น API การค้นพบบริการเครือข่ายมาตรฐานจึงเป็นวิธีที่แนะนำในการค้นพบอุปกรณ์อื่นๆ ในเซกเมนต์ LAN หลังจากค้นหาอุปกรณ์ใน LAN แล้ว แอป Android จะใช้ซ็อกเก็ตแบบยูนิแคสต์ TCP หรือ UDP มาตรฐานเพื่อสื่อสารกับอุปกรณ์ได้

การเชื่อมต่อ IPv4 ที่มาจาก Android จะใช้ที่อยู่ IPv4 ของโฮสต์ ChromeOS ภายในแอป Android จะเห็นที่อยู่ IPv4 ส่วนตัวที่กำหนดให้กับอินเทอร์เฟซเครือข่าย การเชื่อมต่อ IPv6 ที่มาจาก Android จะใช้ที่อยู่อื่นจากโฮสต์ ChromeOS เนื่องจากคอนเทนเนอร์ Android มีที่อยู่ IPv6 สาธารณะโดยเฉพาะ

ใช้พื้นที่เก็บข้อมูลระบบคลาวด์และพื้นที่เก็บข้อมูลในเครื่องอย่างมีประสิทธิภาพ

Chromebook ช่วยให้ผู้ใช้ย้ายข้อมูลจากอุปกรณ์เครื่องหนึ่งไปยังอีกเครื่องหนึ่งได้อย่างง่ายดาย หากผู้ใช้หยุดใช้ Chromebook เครื่องหนึ่งและเริ่มใช้อีกเครื่องหนึ่ง ผู้ใช้เพียงต้องลงชื่อเข้าใช้เท่านั้น แล้วแอปทั้งหมดก็จะปรากฏขึ้น

ฟีเจอร์นี้จึงช่วยให้คุณสำรองข้อมูลของแอปไปยังระบบคลาวด์เพื่อเปิดใช้การซิงค์ในอุปกรณ์ต่างๆ ได้ อย่างไรก็ตาม อย่าพึ่งพาการเชื่อมต่ออินเทอร์เน็ตเพื่อให้แอปทำงานได้ตามปกติ แต่ระบบจะบันทึกงานของผู้ใช้ไว้ในเครื่องเมื่ออุปกรณ์ออฟไลน์และซิงค์กับระบบคลาวด์เมื่ออุปกรณ์กลับมาออนไลน์

นอกจากนี้ คุณยังแชร์ Chromebook กับผู้ใช้จำนวนมากได้ เช่น ในโรงเรียน เนื่องจากพื้นที่เก็บข้อมูลในเครื่องมีจำกัด คุณจึงนำทั้งบัญชีและพื้นที่เก็บข้อมูลออกจากอุปกรณ์ได้ทุกเมื่อ สําหรับการตั้งค่าด้านการศึกษา คุณควรคำนึงถึงสถานการณ์นี้

พัฒนาเฟรมทดสอบใหม่สําหรับแอป

หากต้องการพัฒนาเคสทดสอบสําหรับแอป ให้ตรวจสอบก่อนว่าคุณระบุ Flag ของไฟล์ Manifest ที่เหมาะสม โดยเฉพาะอย่างยิ่ง ให้ลองตั้งค่า screenOrientation เป็น unspecified หากต้องการระบุการวางแนวแนวนอน ให้พิจารณาใช้ sensorLandscape เพื่อให้มั่นใจว่าประสบการณ์การใช้งานบนแท็บเล็ตจะดีที่สุด

หากต้องการขนาดหรือการวางแนวพิเศษสําหรับสภาพแวดล้อมเดสก์ท็อป ให้พิจารณาเพิ่มเมตาแท็กเป็นคำแนะนำขนาดหรือการวางแนว หากต้องการระบุขนาดและการวางแนวในโทรศัพท์ ให้ระบุแอตทริบิวต์เลย์เอาต์ defaultHeight, defaultWidth หรือ minHeight แทน

หากสนใจการจัดการอุปกรณ์อินพุตที่เฉพาะเจาะจงสำหรับหมวดหมู่อุปกรณ์ที่เฉพาะเจาะจง ให้ระบุ android.hardware.type.pc เพื่อปิดใช้โหมดความเข้ากันได้ของอินพุต

หากคุณใช้เครือข่ายประเภทใดก็ตาม ให้ตรวจสอบว่าแอปเชื่อมต่อเครือข่ายอีกครั้งได้หลังจากแก้ปัญหาการเชื่อมต่อหรืออุปกรณ์ออกจากโหมดสลีปแล้ว

เราขอแนะนำให้ดูรายการเฟรมเวิร์กการทดสอบสำหรับแอป Android ใน ChromeOS ซึ่งคุณนำไปใช้ในแผนทดสอบได้ เฟรมเวิร์กการทดสอบครอบคลุมสถานการณ์ทั่วไปที่แอป Android ควรเตรียมพร้อมหากคาดว่าจะทำงานในอุปกรณ์ ChromeOS

การเปลี่ยนแปลงหลายหน้าต่างและการวางแนว

สภาพแวดล้อมแบบหลายหน้าต่างของ ChromeOS อาจทําให้ปัญหาการคงสถานะและการเรียกคืนสถานะชัดเจนขึ้น ใช้ ViewModel เพื่อบันทึกและกู้คืนสถานะตามความเหมาะสม

หากต้องการทดสอบสถานะที่คงอยู่ ให้ย่อแอปลงสักพัก เริ่มกระบวนการที่ใช้ทรัพยากรมากอีกกระบวนการหนึ่ง และกู้คืนแอปเพื่อยืนยันว่าแอปกลับคืนสู่สถานะเดิม

ทดสอบการปรับขนาดหน้าต่างโดยกดแป้นเต็มหน้าจอ (F4), ขยาย และคืนค่า หากต้องการทดสอบการปรับขนาดแบบอิสระ ให้เปิดใช้การปรับขนาดดังกล่าวในตัวเลือกสำหรับนักพัฒนาแอปก่อน จากนั้นตรวจสอบว่าแอปปรับขนาดได้อย่างราบรื่นโดยไม่ขัดข้อง

หากอุปกรณ์ ChromeOS รองรับ ให้เปลี่ยนจากโหมดแล็ปท็อปเป็นโหมดแท็บเล็ตเพื่อตรวจสอบว่าทุกอย่างทำงานได้ตามที่คาดไว้หรือไม่ หมุนอุปกรณ์ 1 ครั้งในโหมดแท็บเล็ตเพื่อทดสอบการเปลี่ยนแปลงการวางแนว จากนั้นเปลี่ยนกลับไปเป็นโหมดแล็ปท็อป ทำขั้นตอนนี้ซ้ำ 2-3 ครั้ง

ตรวจสอบว่าแถบด้านบนไม่ได้ทำให้แอปขัดข้องโดยการเลื่อนองค์ประกอบ UI หรืออินพุตการสัมผัสตามตำแหน่ง สำหรับอุปกรณ์ ChromeOS ให้ตรวจสอบว่าแอปของคุณไม่ได้วางข้อมูลสำคัญไว้ในพื้นที่แถบสถานะ

หากคุณใช้กล้องหรือฟีเจอร์ฮาร์ดแวร์อื่นๆ เช่น ปากกา ให้ตรวจสอบว่าฟีเจอร์ดังกล่าวทำงานอย่างถูกต้องเมื่อทำการเปลี่ยนแปลงหน้าต่างและอุปกรณ์ตามที่ระบุไว้ก่อนหน้านี้