Android ได้รับการออกแบบ ให้ทำงานบนอุปกรณ์ต่างๆ มากมาย เช่น โทรศัพท์ แท็บเล็ต และโทรทัศน์ อุปกรณ์ที่หลากหลายให้ศักยภาพ กลุ่มเป้าหมายของแอปคุณ เพื่อให้แอปของคุณประสบความสำเร็จบนทุกอุปกรณ์ แอปต้อง ยอมรับความหลากหลายของฟีเจอร์ และมี อินเทอร์เฟซผู้ใช้ ที่ยืดหยุ่นซึ่งสามารถ กับการกำหนดค่าหน้าจอแบบต่างๆ
Android มีเฟรมเวิร์กแอปแบบไดนามิกเพื่อช่วยเรื่องความเข้ากันได้ของอุปกรณ์ ซึ่งคุณสามารถระบุการกำหนดค่า ทรัพยากรแอปในรูปแบบคงที่ เช่น รูปแบบ XML ที่แตกต่างกันสำหรับหน้าจอขนาดต่างๆ จากนั้น Android โหลดทรัพยากรที่เหมาะสมตามการกำหนดค่าอุปกรณ์ปัจจุบัน ด้วย การออกแบบแอปและทรัพยากรเพิ่มเติมสำหรับแอปโดยเฉพาะ คุณก็สามารถเผยแพร่ Single Application Package (APK) ซึ่งช่วยเพิ่มประสิทธิภาพประสบการณ์ของผู้ใช้ในด้านต่างๆ ทั้งหมด
แต่หากจําเป็น คุณก็สามารถระบุข้อกําหนดเกี่ยวกับฟีเจอร์ของแอปและ ควบคุมว่าจะอนุญาตให้อุปกรณ์ประเภทใดติดตั้งแอปของคุณจาก Google Play Store เอกสารนี้อธิบายวิธีที่คุณจะควบคุมอุปกรณ์ที่มีสิทธิ์เข้าถึง และวิธีเตรียมแอปของคุณเพื่อเข้าถึงผู้ชมที่เหมาะสม
"ความเข้ากันได้" คืออะไร หมายถึง
ความเข้ากันได้ของการพัฒนาซอฟต์แวร์ Android มีอยู่ 2 ประเภทดังนี้ ความเข้ากันได้ของอุปกรณ์และความเข้ากันได้ของแอป
เนื่องจาก Android เป็นโครงการโอเพนซอร์ส ผู้ผลิตฮาร์ดแวร์ทุกราย สร้างอุปกรณ์ที่ใช้ระบบปฏิบัติการ Android แต่อุปกรณ์ "ใช้ได้กับ Android" เฉพาะเมื่อสามารถเรียกใช้แอปที่เขียนไว้สำหรับ สภาพแวดล้อมการดำเนินการของ Android รายละเอียดที่แน่นอนของ Android จะกำหนดสภาพแวดล้อมการดำเนินการ Android โปรแกรมความเข้ากันได้ อุปกรณ์แต่ละเครื่องต้องผ่านชุดทดสอบความเข้ากันได้ (CTS) จะถือว่าใช้งานร่วมกันได้
ในฐานะนักพัฒนาแอป คุณไม่ต้องกังวลว่าอุปกรณ์ ใช้ร่วมกับ Android ได้ เนื่องจากมีเพียงอุปกรณ์ที่เข้ากันได้กับ Android เท่านั้น Google Play Store ดังนั้นหากผู้ใช้ติดตั้งแอปจาก Google Play Store กำลังใช้อุปกรณ์ที่เข้ากันได้กับ Android
แต่จะต้องพิจารณาว่าแอปของคุณทำงานร่วมกับ การกำหนดค่าอุปกรณ์ที่เป็นไปได้ เนื่องจาก Android ทำงานในอุปกรณ์หลากหลายประเภท บางอย่างเท่านั้น ฟีเจอร์บางอย่างอาจไม่พร้อมใช้งานในอุปกรณ์บางเครื่อง ตัวอย่างเช่น อุปกรณ์อาจไม่มีเซ็นเซอร์เข็มทิศ หากฟังก์ชันหลักของแอป ต้องใช้เซ็นเซอร์เข็มทิศ แอปของคุณสามารถใช้ได้เฉพาะกับอุปกรณ์ที่ ให้รวมฟีเจอร์นั้นไว้ด้วย
ควบคุมความพร้อมให้บริการของแอปในอุปกรณ์ต่างๆ
Android สนับสนุนคุณลักษณะที่หลากหลายที่แอปของคุณสามารถใช้ได้ผ่านแพลตฟอร์ม API ฟีเจอร์บางอย่างทำงานด้วยฮาร์ดแวร์ เช่น เซ็นเซอร์เข็มทิศ บางส่วนได้แก่ ที่เป็นซอฟต์แวร์ เช่น วิดเจ็ตแอป และบางส่วนจะขึ้นอยู่กับเวอร์ชันของแพลตฟอร์ม อุปกรณ์บางอย่างอาจไม่รองรับบางฟีเจอร์ ดังนั้นคุณอาจต้องควบคุม พร้อมใช้งานสำหรับอุปกรณ์ตามฟีเจอร์ที่จำเป็นของแอป
หากต้องการมีฐานผู้ใช้แอปมากที่สุดเท่าที่จะเป็นไปได้ ให้รองรับ การกำหนดค่าอุปกรณ์ให้มากที่สุดเท่าที่จะเป็นไปได้โดยใช้ APK หรือ AAB เดียว ในสถานการณ์ส่วนใหญ่ ด้วยการปิดใช้ฟีเจอร์ที่ไม่บังคับขณะรันไทม์ และ การให้บริการแอป ทรัพยากรที่มีทางเลือกสำหรับการกำหนดค่าที่แตกต่างกัน เช่น สำหรับหน้าจอขนาดต่างๆ หากจำเป็น คุณสามารถจำกัด ความพร้อมให้บริการสำหรับอุปกรณ์บางเครื่องผ่าน Google Play Store โดยอิงตามรายการต่อไปนี้ ลักษณะเฉพาะของอุปกรณ์:
ฟีเจอร์ของอุปกรณ์
ในการจัดการความพร้อมใช้งานของแอปตามฟีเจอร์ของอุปกรณ์ Android จะกำหนด
รหัสฟีเจอร์สำหรับฟีเจอร์ของฮาร์ดแวร์หรือซอฟต์แวร์ที่อาจไม่ได้
พร้อมใช้งานบนทุกอุปกรณ์ ตัวอย่างเช่น รหัสฟีเจอร์สำหรับเซ็นเซอร์เข็มทิศคือ
FEATURE_SENSOR_COMPASS
,
และรหัสฟีเจอร์สำหรับวิดเจ็ตแอปคือ
FEATURE_APP_WIDGETS
หากจำเป็น คุณสามารถป้องกันไม่ให้ผู้ใช้ติดตั้งแอปของคุณเมื่อ
ไม่มีฟีเจอร์ที่จำเป็นด้วยการประกาศฟีเจอร์โดยใช้
<uses-feature>
องค์ประกอบในคอลัมน์
ไฟล์ Manifest
เช่น หากแอปดูไม่สมเหตุสมผลในอุปกรณ์ที่ไม่มีเข็มทิศ เซ็นเซอร์ คุณสามารถระบุว่าเซ็นเซอร์เข็มทิศเป็นไปตามข้อกำหนดหรือไม่ แท็กไฟล์ Manifest
<manifest ... > <uses-feature android:name="android.hardware.sensor.compass" android:required="true" /> ... </manifest>
Google Play Store จะเปรียบเทียบฟีเจอร์ที่แอปของคุณต้องใช้กับ ฟีเจอร์ที่พร้อมใช้งานในอุปกรณ์ของผู้ใช้แต่ละรายเพื่อระบุว่าแอปของคุณ ที่เข้ากันได้กับอุปกรณ์แต่ละเครื่อง หากอุปกรณ์มีฟีเจอร์ไม่ครบ ผู้ใช้ไม่สามารถติดตั้งแอปของคุณได้
แต่หากฟังก์ชันหลักของแอปไม่กำหนด
ฟีเจอร์ของอุปกรณ์ ให้ตั้ง
required
เป็น "false"
และตรวจหาฟีเจอร์ของอุปกรณ์ขณะรันไทม์
หากฟีเจอร์ของแอปนี้ไม่พร้อมใช้งานในอุปกรณ์ปัจจุบัน ให้ลดระดับ
ฟีเจอร์ที่เกี่ยวข้อง ตัวอย่างเช่น คุณสามารถสอบถามว่าสถานที่แห่งใดแห่งหนึ่ง
พร้อมให้บริการเมื่อโทร
hasSystemFeature()
ดังนี้
Kotlin
if (!packageManager.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature() }
Java
PackageManager pm = getPackageManager(); if (!pm.hasSystemFeature(PackageManager.FEATURE_SENSOR_COMPASS)) { // This device doesn't have a compass. Turn off the compass feature. disableCompassFeature(); }
สําหรับข้อมูลเกี่ยวกับตัวกรองทั้งหมดที่ใช้เพื่อควบคุมความพร้อมใช้งานได้ ของแอปผ่านทาง Google Play Store ให้ดู ตัวกรองใน Google Play เอกสารประกอบ
รุ่นของแพลตฟอร์ม
อุปกรณ์ต่างๆ อาจใช้แพลตฟอร์ม Android เวอร์ชันที่แตกต่างกัน เช่น เช่น Android 12 หรือ Android 13 แพลตฟอร์มแต่ละเวอร์ชันต่อเนื่องกันมักจะเพิ่ม API ไม่พร้อมใช้งานในเวอร์ชันก่อนหน้า เพื่อระบุว่า API ชุดใด แต่ละเวอร์ชันแพลตฟอร์มจะระบุ ระดับ API เช่น Android 12 คือ API ระดับ 31 และ Android 13 คือ API ระดับ 33
คุณต้องระบุ
minSdkVersion
และ
targetSdkVersion
ค่าในไฟล์ build.gradle
ของคุณดังนี้
Kotlin
android { defaultConfig { applicationId = "com.example.myapp" // Defines the minimum API level required to run the app. minSdkVersion(30) // Specifies the API level used to test the app. targetSdkVersion(33) ... } }
ดึงดูด
android { defaultConfig { applicationId 'com.example.myapp' // Defines the minimum API level required to run the app. minSdkVersion 30 // Specifies the API level used to test the app. targetSdkVersion 33 ... } }
อ่านข้อมูลเพิ่มเติมเกี่ยวกับไฟล์ build.gradle
ได้ที่
กำหนดค่าบิลด์
Android เวอร์ชันต่อเนื่องแต่ละเวอร์ชันมีความเข้ากันได้กับแอปที่สร้างขึ้น โดยใช้ API จากแพลตฟอร์มเวอร์ชันก่อนหน้า เพื่อให้แอปของคุณสามารถทำงานร่วมกับ Android เวอร์ชันใหม่ๆ ในอนาคตไปพร้อมกับใช้ Android API ที่ระบุไว้
อย่างไรก็ตาม หากแอปใช้ API ที่เพิ่มในแพลตฟอร์มเวอร์ชันล่าสุด แต่
(ไม่บังคับ) สำหรับฟังก์ชันการทำงานหลัก โปรดตรวจสอบระดับ API ที่
รันไทม์และจะลดระดับฟีเจอร์ที่เกี่ยวข้องอย่างราบรื่นเมื่อระดับ API
ต่ำเกินไป ในกรณีนี้ ให้กำหนด minSdkVersion
เป็นค่าต่ำสุด
สำหรับฟังก์ชันหลักของแอป จากนั้นเปรียบเทียบฟังก์ชัน
เวอร์ชัน
SDK_INT
,
กับรหัสคงที่ใน
Build.VERSION_CODES
ที่สอดคล้องกับระดับ API ที่คุณต้องการตรวจสอบ ดังที่แสดงใน
ตัวอย่าง:
Kotlin
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop() }
Java
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.HONEYCOMB) { // Running on something older than API level 11, so disable // the drag and drop features that use ClipboardManager APIs. disableDragAndDrop(); }
การกำหนดค่าหน้าจอ
Android ทำงานบนอุปกรณ์ขนาดต่างๆ เช่น โทรศัพท์ แท็บเล็ต และทีวี ถึง Android จะกำหนดลักษณะ 2 ประการสำหรับ อุปกรณ์แต่ละเครื่อง: ขนาดหน้าจอ (ขนาดจริงของหน้าจอ) และความหนาแน่นของหน้าจอ (ความหนาแน่นทางกายภาพของพิกเซลบนหน้าจอ หรือที่เรียกว่า DPI) เพื่อลดความซับซ้อน Android จะรวมตัวแปรเหล่านี้ไว้ในกลุ่มที่ กำหนดเป้าหมายได้ง่ายขึ้น:
- ขนาดทั่วไป 4 ขนาด ได้แก่ เล็ก ปกติ ใหญ่ และใหญ่พิเศษ
- ความหนาแน่นทั่วไปหลายอย่าง: mdpi (ปานกลาง), hdpi (สูง), xhdpi (พิเศษ) High), xxhdpi (สูงเป็นพิเศษ) และอื่นๆ
โดยค่าเริ่มต้น แอปของคุณจะเข้ากันได้กับหน้าจอทุกขนาดและความหนาแน่น เพราะระบบจะปรับเลย์เอาต์ UI และทรัพยากรรูปภาพ ที่จำเป็นสำหรับแต่ละหน้าจอ จัดเตรียมรูปภาพบิตแมปที่เพิ่มประสิทธิภาพสำหรับหน้าจอทั่วไป
เพิ่มประสิทธิภาพประสบการณ์ของผู้ใช้โดยใช้เลย์เอาต์ที่ยืดหยุ่นให้ได้มากที่สุด ตำแหน่งที่มีเลย์เอาต์สำหรับการเปลี่ยนแปลงการกำหนดค่าขนาดใหญ่ เช่น แนวตั้งและ แนวนอน หรือหน้าต่างขนาดใหญ่หรือเล็ก ให้พิจารณาใช้ ที่มีความยืดหยุ่นต่อการเปลี่ยนแปลงเล็กๆ น้อยๆ ในการกำหนดค่า ซึ่งจะช่วยปรับปรุง ประสบการณ์ของผู้ใช้ในรูปแบบของอุปกรณ์ เช่น แท็บเล็ต โทรศัพท์ และอุปกรณ์แบบพับได้ ทั้งนี้ ยังช่วยเมื่อหน้าต่างเปลี่ยนขนาดในโหมดหลายหน้าต่าง
โปรดดูข้อมูลเกี่ยวกับวิธีสร้างแหล่งข้อมูลอื่นๆ สำหรับ และวิธีจำกัดแอปให้แสดงเฉพาะหน้าจอบางขนาดเมื่อจำเป็น อ่าน ความเข้ากันได้ของหน้าจอ ภาพรวมและดู แอปหน้าจอขนาดใหญ่ หลักเกณฑ์ด้านคุณภาพ
ควบคุมความพร้อมให้บริการของแอปเพื่อเหตุผลทางธุรกิจ
นอกเหนือจากการจำกัดความพร้อมให้บริการของแอปตามอุปกรณ์ คุณอาจต้องจำกัดความพร้อมให้บริการของแอปสำหรับธุรกิจ หรือเหตุผลทางกฎหมาย สำหรับสถานการณ์ประเภทนี้ Google Play Store จะให้ ตัวเลือกการกรองใน Play Console ที่ช่วยให้คุณควบคุม ความพร้อมจำหน่ายสินค้าด้วยเหตุผลที่ไม่ใช่ทางเทคนิค เช่น ภาษาของผู้ใช้หรือระบบไร้สาย ผู้ให้บริการเครือข่าย
การกรองสำหรับความเข้ากันได้ทางเทคนิค เช่น ฮาร์ดแวร์ที่จำเป็น คอมโพเนนต์จะอ้างอิงตามข้อมูลที่มีอยู่ใน APK หรือ AAB เสมอ แต่การกรองด้วยเหตุผลที่ไม่ใช่ทางเทคนิค เช่น ภูมิศาสตร์ ภาษา - จะมีการจัดการเสมอใน Google Play Console
แหล่งข้อมูลเพิ่มเติม:
- ภาพรวมแหล่งข้อมูลของแอป
- ข้อมูลเกี่ยวกับโครงสร้างแอป Android เพื่อแยกแอป จากโค้ดของแอปพลิเคชัน รวมถึงวิธีการที่คุณสามารถ ทรัพยากรสำหรับการกำหนดค่าอุปกรณ์บางอย่าง
- ตัวกรองใน Google Play
- ข้อมูลเกี่ยวกับวิธีต่างๆ ที่ Google Play Store สามารถป้องกันไม่ให้ ติดตั้งแอปบนอุปกรณ์อื่นๆ ไม่ได้
- สิทธิ์ใน Android
- วิธีที่ Android จำกัดการเข้าถึงแอปไปยัง API บางรายการด้วยระบบสิทธิ์ ซึ่งต้องได้รับความยินยอมจากผู้ใช้เพื่อให้แอปของคุณใช้ API ดังกล่าวได้