การเข้าถึงผู้ใช้ใหม่หมายถึงการรองรับแพลตฟอร์ม Android เวอร์ชันต่างๆ และข้อกำหนดของอุปกรณ์ที่เพิ่มขึ้น หากต้องการปรับปรุงประสบการณ์ของผู้ใช้ ให้เพิ่มประสิทธิภาพสำหรับการกำหนดค่า RAM ขนาดทั่วไป รวมถึงขนาดและความละเอียดของหน้าจอ
รองรับขนาดหน้าจอหลายขนาด
แอปของคุณจะมอบประสบการณ์การใช้งานที่ดียิ่งขึ้นแก่ผู้ใช้หลายพันล้านคนได้หากรองรับหน้าจอ ที่มีขนาดและความละเอียดต่างๆ ส่วนนี้จะอธิบายวิธีที่คุณทำได้
ใช้ความหนาแน่นของพิกเซลอิสระ (dp)
- การกำหนดขนาดเลย์เอาต์ด้วยพิกเซลไม่ค่อยได้ผลเนื่องจากหน้าจอต่างๆ มีความหนาแน่นของพิกเซลต่างกัน ดังนั้นจำนวนพิกเซลเดียวกันอาจสอดคล้องกับขนาดทางกายภาพที่แตกต่างกันในอุปกรณ์ต่างๆ
- Android จึงรองรับความหนาแน่นของพิกเซลอิสระ (dp) เพื่อแก้ปัญหานี้ ซึ่งสอดคล้องกับขนาดจริงของพิกเซลที่ 160 จุดต่อนิ้ว (ความหนาแน่น mdpi)
- การกำหนดเลย์เอาต์ด้วย dp จะช่วยให้ขนาดจริงของอินเทอร์เฟซผู้ใช้สอดคล้องกันไม่ว่าจะเป็นอุปกรณ์ใดก็ตาม ไปที่คู่มือ Android เกี่ยวกับการรองรับหลายหน้าจอเพื่อดูแนวทางปฏิบัติแนะนำในการใช้พิกเซลที่ไม่ขึ้นอยู่กับความหนาแน่น
ทดสอบข้อความและกราฟิกในความหนาแน่นของหน้าจอ ldpi และ mdpi
- ทดสอบเพื่อให้แน่ใจว่าข้อความและกราฟิกทำงานได้ดีบนหน้าจอความหนาแน่นต่ำและปานกลาง (ldpi และ mdpi) เนื่องจากความหนาแน่นเหล่านี้เป็นความหนาแน่นที่พบได้ทั่วไป โดยเฉพาะในอุปกรณ์ที่มีต้นทุนต่ำ มองหาข้อความที่อาจไม่ชัดเจนในหน้าจอที่มีความหนาแน่นต่ำ ซึ่งมองไม่เห็นรายละเอียดที่ชัดเจน
- อุปกรณ์ที่มีหน้าจอความหนาแน่นต่ำมักจะมีข้อกำหนดของฮาร์ดแวร์ต่ำกว่า หากต้องการให้แอปทำงานได้ดีในอุปกรณ์เหล่านี้ ให้พิจารณาลดหรือตัดภาระการประมวลผลกราฟิกหนักๆ ออก เช่น ภาพเคลื่อนไหวและการเปลี่ยนฉาก
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับความหนาแน่นต่างๆ ได้ที่การฝึกอบรม Android ในหัวข้อการรองรับความหนาแน่นต่างๆ
ทดสอบเลย์เอาต์บนหน้าจอขนาดเล็กและขนาดกลาง
- ตรวจสอบว่าเลย์เอาต์ของคุณปรับขนาดลงได้โดยการทดสอบบนหน้าจอขนาดเล็ก เมื่อขนาดหน้าจอเล็กลง ให้เลือกองค์ประกอบ UI ที่มองเห็นได้อย่างระมัดระวัง เนื่องจาก มีพื้นที่จำกัดสำหรับองค์ประกอบเหล่านั้น
- หลักเกณฑ์การออกแบบ Material Design อธิบายเมตริกและเส้นหลักเพื่อให้เลย์เอาต์ปรับขนาดได้ในความหนาแน่นของหน้าจอต่างๆ
- ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับหน้าจอขนาดต่างๆ ได้ที่การฝึกอบรม Android เรื่องการรองรับหน้าจอขนาดต่างๆ
ให้ความเข้ากันได้แบบย้อนหลัง
ผู้ใช้บางรายอาจไม่ได้ใช้อุปกรณ์ที่ขับเคลื่อนด้วยแพลตฟอร์ม Android เวอร์ชันล่าสุด ต่อไปนี้คือวิธีปรับปรุงความเข้ากันได้แบบย้อนหลัง เพื่อช่วยให้แอปของคุณพร้อมให้บริการแก่ผู้คนมากที่สุด
ตั้งค่า targetSdkVersion และ minSdkVersion
อย่างเหมาะสม
-
แอปควรสร้างและกำหนดเป้าหมายเป็น Android เวอร์ชันล่าสุดเพื่อให้มั่นใจว่า
แอปจะทำงานได้ตามลักษณะการทำงานล่าสุดในอุปกรณ์หลากหลายประเภท
และยังคงมีความเข้ากันได้แบบย้อนหลังกับเวอร์ชันเก่า
แนวทางปฏิบัติแนะนำสำหรับการกำหนดเป้าหมายระดับ API อย่างเหมาะสมมีดังนี้
-
targetSdkVersionควรเป็น Android เวอร์ชันล่าสุด การกำหนดเป้าหมายเป็นเวอร์ชันล่าสุดจะช่วยให้แอปได้รับลักษณะการทำงานของรันไทม์ที่ใหม่กว่า เมื่อเรียกใช้ Android เวอร์ชันใหม่กว่า โปรด ทดสอบแอปใน Android เวอร์ชันใหม่กว่าเมื่ออัปเดตtargetSdkVersionเนื่องจากอาจส่งผลต่อลักษณะการทำงานของแอป -
minSdkVersionตั้งค่าเวอร์ชัน Android ขั้นต่ำที่รองรับ การตั้งค่าminSdkVersionยังส่งผลให้เครื่องมือบิลด์ Android รายงานการใช้ API ใหม่ที่ไม่ถูกต้อง ซึ่งอาจไม่พร้อมใช้งานใน แพลตฟอร์มเวอร์ชันเก่า การทำเช่นนี้จะช่วยปกป้องคุณ จากการทำลายความเข้ากันได้แบบย้อนหลังโดยไม่ตั้งใจ
-
- โปรดดู แดชบอร์ด Android, Google Play Developer Console สำหรับแอปของคุณ และการวิจัยอุตสาหกรรมในตลาดเป้าหมายเพื่อ ประเมินเวอร์ชัน Android ที่ควรกำหนดเป้าหมายตามผู้ใช้เป้าหมาย
ใช้ไลบรารีการสนับสนุนของ Android
-
ตรวจสอบว่าแอปมอบประสบการณ์การใช้งานที่สอดคล้องกันในระบบปฏิบัติการทุกเวอร์ชันโดยใช้
ไลบรารีการสนับสนุนของ Android
ไลบรารีนี้มี API ของเฟรมเวิร์ก Android เวอร์ชันที่เข้ากันได้แบบย้อนหลัง
รวมถึงฟีเจอร์ที่ใช้ได้ผ่าน API ของไลบรารีเท่านั้น
เช่น
AppCompatActivityและไลบรารีการสนับสนุน Material Design - ไฮไลต์บางส่วนมีดังนี้
- ไลบรารีการสนับสนุน v4 และ v7: API ของเฟรมเวิร์กจำนวนมากสำหรับ Android เวอร์ชันเก่า เช่น
ViewPagerActionBarRecyclerViewและPalette - ไลบรารี การรองรับ Material Design: API สำหรับรองรับการเพิ่มคอมโพเนนต์ และรูปแบบ Material Design ลงในแอป
- ไลบรารีการรองรับ Multidex: รองรับแอปขนาดใหญ่ที่มีเมธอดมากกว่า 65,000 รายการ กรณีนี้อาจเกิดขึ้นได้หากแอปใช้ไลบรารีจำนวนมาก
- ไลบรารีการสนับสนุน v4 และ v7: API ของเฟรมเวิร์กจำนวนมากสำหรับ Android เวอร์ชันเก่า เช่น
- ดูข้อมูลเพิ่มเติมเกี่ยวกับไลบรารีการสนับสนุนที่มีได้ที่ส่วน ฟีเจอร์ไลบรารีการสนับสนุนของเว็บไซต์นักพัฒนาแอป Android
ใช้บริการ Google Play
- บริการ Google Play นำ API ของ Google ที่ดีที่สุดมาให้คุณโดยไม่ขึ้นอยู่กับ เวอร์ชันแพลตฟอร์ม Android พิจารณาใช้ฟีเจอร์จากบริการ Google Play เพื่อมอบประสบการณ์การใช้งาน Google ที่ราบรื่นที่สุดในอุปกรณ์ Android
- นอกจากนี้ บริการ Google Play ยังมี API ที่มีประโยชน์ เช่น
GcmNetworkManagerซึ่งมี APIJobSchedulerของ Android 5.0 สำหรับ Android เวอร์ชันเก่า - Google Play Store จะเผยแพร่การอัปเดตบริการ Google Play โดยอัตโนมัติ และจะมีการส่งไลบรารีไคลเอ็นต์เวอร์ชันใหม่ผ่าน Android SDK Manager
ใช้หน่วยความจำอย่างมีประสิทธิภาพ
หน่วยความจำเป็นฮีโร่ที่ไม่มีใครรู้จักในด้านประสบการณ์ของผู้ใช้ การจัดการหน่วยความจำที่ดีจะช่วยให้แอปของคุณมีความเสถียรและมีประสิทธิภาพมากขึ้น ในบางกรณี การใช้งานหน่วยความจำอย่างมีประสิทธิภาพอาจเป็นสิ่งเดียวที่ทำให้แอปของคุณใช้งานได้ ต่อไปนี้คือวิธีบางส่วนที่จะช่วยให้แอปใช้หน่วยความจำได้อย่างมีประสิทธิภาพ
ลดหน่วยความจำที่ใช้ในอุปกรณ์ราคาถูก
- ปรับหน่วยความจำที่ใช้แบบไดนามิกเพื่อให้มั่นใจถึงความเข้ากันได้ ในอุปกรณ์ที่มีการกำหนดค่า RAM ที่แตกต่างกัน
- วิธีการต่างๆ เช่น
isLowRamDevice()และgetMemoryClass()ช่วยกำหนดข้อจำกัดด้านหน่วยความจำ ในขณะรันไทม์ คุณสามารถลดการใช้หน่วยความจำตามข้อมูลนี้ได้ ตัวอย่างเช่น คุณสามารถใช้รูปภาพที่มีความละเอียดต่ำในอุปกรณ์ที่มีหน่วยความจำต่ำ ได้ - ดูข้อมูลเพิ่มเติมเกี่ยวกับการจัดการหน่วยความจำของแอปได้ที่การฝึกอบรม Android เรื่องการจัดการ หน่วยความจำของแอป
หลีกเลี่ยงกระบวนการที่ใช้เวลานาน
- กระบวนการที่ทำงานเป็นเวลานานจะยังคงอยู่ในหน่วยความจำและอาจทำให้อุปกรณ์ทำงานช้าลง
ในสถานการณ์ส่วนใหญ่ แอปควรตื่นขึ้นมาเพื่อ
เหตุการณ์ที่กำหนด ประมวลผลข้อมูล และปิดตัวลง คุณควรใช้ Firebase Cloud Messaging
(FCM) และ
GcmNetworkManagerเพื่อหลีกเลี่ยงบริการที่ทำงานในเบื้องหลังเป็นเวลานาน และลดการใช้หน่วยความจำในอุปกรณ์ของผู้ใช้
เปรียบเทียบการใช้หน่วยความจำ
Android Studio มีเครื่องมือสำหรับการเปรียบเทียบและทำโปรไฟล์หน่วยความจำ ซึ่งช่วยให้คุณวัดการใช้หน่วยความจำในขณะรันไทม์ได้ การเปรียบเทียบหน่วยความจำที่แอปใช้ ช่วยให้คุณตรวจสอบการใช้หน่วยความจำในแอปหลายเวอร์ชันได้ ซึ่งจะช่วยตรวจจับการเพิ่มขึ้นของหน่วยความจำที่แอปใช้โดยไม่ตั้งใจได้ ใช้ เครื่องมือสร้างโปรไฟล์หน่วยความจำ เพื่อทำสิ่งต่อไปนี้
- ดูว่ารูปแบบเหตุการณ์ระบบจัดการหน่วยความจำที่ไม่ใช้แล้ว (GC) ที่ไม่พึงประสงค์อาจทำให้เกิดปัญหาด้านประสิทธิภาพหรือไม่
- ระบุประเภทออบเจ็กต์ที่ได้รับการจัดสรรหรือยังคงได้รับการจัดสรรโดยไม่คาดคิดหรือ โดยไม่จำเป็น
- ระบุตำแหน่งในโค้ดที่อาจเกิดปัญหา
ดูข้อมูลเพิ่มเติมเกี่ยวกับการเปรียบเทียบการใช้หน่วยความจำได้ที่ ดูฮีพและการจัดสรรด้วยเครื่องมือสร้างโปรไฟล์หน่วยความจำ
เพิ่มประสิทธิภาพสำหรับอุปกรณ์ที่ใช้ Android (รุ่น Go)
Android (รุ่น Go) เป็นประสบการณ์การใช้งานที่ได้รับการเพิ่มประสิทธิภาพ สำหรับอุปกรณ์ระดับเริ่มต้นที่มี RAM ≤1 GB โดยเริ่มตั้งแต่ Android Oreo (รุ่น Go) คุณควรคำนึงถึงหลักเกณฑ์ต่อไปนี้เพื่อให้มั่นใจว่าแอปจะทำงานได้อย่างยอดเยี่ยมในอุปกรณ์ Android (Go Edition)
- targetSdkVersion ควรเป็น Android เวอร์ชันล่าสุด อุปกรณ์ Android (รุ่น Go) จะใช้งานได้เฉพาะ Android Oreo (API 27 ขึ้นไป)
- แอปควรทำงานได้อย่างราบรื่นในอุปกรณ์ที่มี RAM ≤1 GB โปรดคำนึงถึงการเพิ่มประสิทธิภาพหน่วยความจำที่ระบุไว้ใน ใช้หน่วยความจำอย่างมีประสิทธิภาพด้านบน และใช้ Android Vitals เพื่อระบุและแก้ไขลักษณะการทำงานที่ไม่ดี เช่น การแสดงผลช้าและเฟรมค้าง
- การแสดงภาพซ้อนภาพ (PIP) อาจถูกปิดใช้
ในอุปกรณ์ ก่อนที่แอปจะใช้ PIP โปรดตรวจสอบว่าฟีเจอร์นี้พร้อมใช้งานโดย
เรียกใช้
hasSystemFeature(PackageManager.FEATURE_PICTURE_IN_PICTURE) - แอปในอุปกรณ์ควรมีขนาดเล็กกว่า 40 MB
- ขนาดชุดสัดส่วน (PSS) ของการใช้ RAM ของแอป ต้องไม่เกิน 90 MB สำหรับเกม PSS ของการใช้ RAM ของเกมไม่ควรเกิน 150 MB ดูข้อมูลเพิ่มเติมเกี่ยวกับ PSS ได้ที่คำแนะนำการตรวจสอบ การใช้ RAM
- เวลาเริ่มต้นของแอปควรน้อยที่สุดและไม่เกิน 5 วินาที
-
SYSTEM_ALERT_WINDOW(ซึ่งอนุญาตให้แอปวาดหน้าต่างบนแอปอื่นๆ) อาจปิดใช้ใน อุปกรณ์ Android Go ที่มี RAM ต่ำ ก่อนที่จะวาดทับแอปอื่นๆ ให้ตรวจสอบว่าแอปของคุณ มีสิทธิ์นี้หรือไม่โดยการเรียก Settings.canDrawOverlays() หากแอปของคุณไม่ได้รับสิทธิ์ ให้ลดแอปลงอย่างค่อยเป็นค่อยไปเพื่อให้ผู้ใช้ ใช้แอปของคุณต่อไปได้ โดยอาจปิดใช้ฟีเจอร์ที่ต้องใช้SYSTEM_ALERT_WINDOWสิทธิ์
เราขอแนะนำให้นักพัฒนาแอปส่วนใหญ่เพิ่มประสิทธิภาพแอปที่มีอยู่
ซึ่งจะพร้อมใช้งานในอุปกรณ์ Android (Go Edition) ทุกเครื่อง
เนื่องจากการทำให้แอปทำงานได้เร็วขึ้นและมีขนาดเล็กลงจะเป็นประโยชน์ต่อผู้ชมทั้งหมด
คุณใช้ฟีเจอร์ APK หลายรายการ
ใน Play Console เพื่อจัดจำหน่าย APK ที่เฉพาะเจาะจง
สำหรับอุปกรณ์ Android (Go Edition) ได้
แต่ควรทำโดยไม่ลดทอนประสบการณ์การใช้งาน
(เช่น คุณควรหลีกเลี่ยงการนำฟีเจอร์ออก)
APK ที่กำหนดเป้าหมายเป็นอุปกรณ์ Android (Go Edition) ต้องประกาศ
<uses-feature android:name="android.hardware.ram.low" android:required="true">,
กำหนดเป้าหมายเป็น API ระดับ 26 เป็นอย่างน้อย
และมีรหัสเวอร์ชันสูงกว่า APK รุ่นที่ไม่ใช่ Go
เกี่ยวข้อง
แหล่งข้อมูลเพิ่มเติม
ดูข้อมูลเพิ่มเติมเกี่ยวกับการรองรับอุปกรณ์ที่หลากหลายได้ที่แหล่งข้อมูลต่อไปนี้