ผู้ใช้มักหลีกเลี่ยงการดาวน์โหลดแอปที่มีขนาดใหญ่เกินไป โดยเฉพาะในตลาดเกิดใหม่ซึ่งอุปกรณ์เชื่อมต่อกับเครือข่าย 2G และ 3G ที่ไม่เสถียร หรือใช้งานแผนการที่มีขีดจำกัดข้อมูล หน้านี้อธิบายวิธีลดขนาดการดาวน์โหลดของแอป ซึ่งจะช่วยให้ผู้ใช้ดาวน์โหลดแอปของคุณได้มากขึ้น
อัปโหลดแอปด้วย Android App Bundle
อัปโหลดแอปเป็น Android App Bundle เพื่อประหยัดขนาดแอปทันทีเมื่อเผยแพร่ไปยัง Google Play Android App Bundle เป็นรูปแบบการอัปโหลดที่มีโค้ดและทรัพยากรที่คอมไพล์แล้วทั้งหมดของแอป แต่เลื่อนการสร้างและการลงนาม APK ไปยัง Google Play
จากนั้นรูปแบบการแสดงแอปของ Google Play จะใช้ App Bundle ของคุณเพื่อสร้างและแสดง APK ที่เพิ่มประสิทธิภาพแล้วสําหรับการกําหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จําเป็นต่อการเรียกใช้แอปของคุณ คุณไม่จําเป็นต้องสร้าง ลงนาม และจัดการ APK หลายรายการเพื่อรองรับอุปกรณ์ที่แตกต่างกัน และผู้ใช้จะดาวน์โหลดไฟล์ที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
Google Play บังคับใช้ข้อจำกัดขนาดการดาวน์โหลดที่บีบอัด 200 MB สำหรับแอปที่เผยแพร่ด้วย App Bundle ขนาดใหญ่ขึ้นนั้นสามารถใช้การนำส่งฟีเจอร์ Play และ Play Asset Delivery ได้ แต่การเพิ่มขนาดของแอปอาจส่งผลเสียต่อความสำเร็จในการติดตั้งและเพิ่มยอดถอนการติดตั้ง เราจึงขอแนะนำให้ใช้หลักเกณฑ์ที่อธิบายไว้ในหน้านี้เพื่อลดขนาดการดาวน์โหลดแอปลงให้ได้มากที่สุด
ทําความเข้าใจโครงสร้าง APK
ก่อนที่จะลดขนาดของแอป คุณควรทำความเข้าใจโครงสร้าง APK ของแอป ไฟล์ APK ประกอบด้วยไฟล์ ZIP ที่มีไฟล์ทั้งหมดที่ประกอบกันเป็นแอปของคุณ ซึ่งรวมถึงไฟล์คลาส Java, ไฟล์ทรัพยากร และไฟล์ที่มีทรัพยากรที่คอมไพล์แล้ว
APK มีไดเรกทอรีต่อไปนี้
META-INF/
: มีไฟล์ลายเซ็นCERT.SF
และCERT.RSA
รวมถึงไฟล์ ManifestMANIFEST.MF
assets/
: มีชิ้นงานของแอป ซึ่งแอปจะเรียกข้อมูลได้โดยใช้ออบเจ็กต์AssetManager
res/
: มีทรัพยากรที่ไม่ได้คอมไพล์เป็นresources.arsc
lib/
: มีโค้ดที่คอมไพล์แล้วซึ่งเจาะจงสำหรับเลเยอร์ซอฟต์แวร์ของโปรเซสเซอร์ ไดเรกทอรีนี้มีไดเรกทอรีย่อยสำหรับแพลตฟอร์มแต่ละประเภท เช่นarmeabi
,armeabi-v7a
,arm64-v8a
,x86
,x86_64
และmips
APK ยังมีไฟล์ต่อไปนี้ด้วย เฉพาะ AndroidManifest.xml
เท่านั้นที่บังคับ:
resources.arsc
: มีทรัพยากรที่คอมไพล์แล้ว ไฟล์นี้มีเนื้อหา XML จากการกำหนดค่าทั้งหมดของโฟลเดอร์res/values/
เครื่องมือสร้างแพ็กเกจจะแยกเนื้อหา XML นี้ออกมา แล้วคอมไพล์เป็นไบนารี และเก็บเนื้อหาไว้ เนื้อหานี้ประกอบด้วยสตริงและสไตล์ภาษา รวมถึงเส้นทางไปยังเนื้อหาที่ไม่ได้รวมอยู่ในไฟล์resources.arsc
โดยตรง เช่น ไฟล์เลย์เอาต์และรูปภาพclasses.dex
: มีคลาสที่คอมไพล์ในรูปแบบไฟล์ DEX ที่เครื่องเสมือน Dalvik หรือ ART เข้าใจAndroidManifest.xml
: มีไฟล์ Manifest หลักของ Android ไฟล์นี้จะแสดงชื่อ เวอร์ชัน สิทธิ์เข้าถึง และไฟล์ไลบรารีที่อ้างอิงของแอป โดยไฟล์จะใช้รูปแบบ XML แบบไบนารีของ Android
ลดจํานวนขนาดทรัพยากร
ขนาด APK ส่งผลต่อความเร็วในการโหลดของแอป ปริมาณหน่วยความจำที่ใช้ และปริมาณพลังงานที่ใช้ คุณทำให้ APK เล็กลงได้โดยการลดจำนวนและขนาดของทรัพยากรที่มีอยู่ โดยเฉพาะอย่างยิ่ง คุณสามารถนำทรัพยากรที่แอปไม่ได้ใช้แล้วออกได้ และสามารถใช้ออบเจ็กต์ Drawable
ที่ปรับขนาดได้แทนไฟล์รูปภาพ ส่วนนี้จะกล่าวถึงวิธีการเหล่านี้และวิธีอื่นๆ ในการลดทรัพยากรในแอปเพื่อลดขนาดโดยรวมของ APK
นำทรัพยากรที่ไม่ได้ใช้ออก
เครื่องมือ lint
ซึ่งเป็นเครื่องมือวิเคราะห์โค้ดแบบคงที่ที่รวมอยู่ใน Android Studio จะตรวจหาทรัพยากรในโฟลเดอร์ res/
ที่ไม่ได้อ้างอิงโดยโค้ด เมื่อเครื่องมือ lint
พบทรัพยากรที่อาจไม่ได้ใช้ในโปรเจ็กต์ ระบบจะพิมพ์ข้อความดังตัวอย่างต่อไปนี้
res/layout/preferences.xml: Warning: The resource R.layout.preferences appears to be unused [UnusedResources]
ไลบรารีที่คุณเพิ่มลงในโค้ดอาจมีทรัพยากรที่ไม่ได้ใช้ Gradle สามารถนําทรัพยากรออกในนามของคุณโดยอัตโนมัติได้หากเปิดใช้ shrinkResources
ในไฟล์ build.gradle.kts
ของแอป
Kotlin
android { // Other settings. buildTypes { getByName("release") { minifyEnabled = true shrinkResources = true proguardFiles(getDefaultProguardFile('proguard-android.txt'), "proguard-rules.pro") } } }
Groovy
android { // Other settings. buildTypes { release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } }
หากต้องการใช้ shrinkResources
ให้เปิดใช้การย่อโค้ด ในระหว่างกระบวนการสร้าง R8 จะนําโค้ดที่ไม่ได้ใช้ออกก่อน จากนั้นปลั๊กอิน Android Gradle จะนําทรัพยากรที่ไม่ได้ใช้ออก
ดูข้อมูลเพิ่มเติมเกี่ยวกับการบีบอัดโค้ดและทรัพยากร รวมถึงวิธีอื่นๆ ที่ Android Studio ใช้เพื่อลดขนาด APK ได้ที่หัวข้อบีบอัด สร้างความสับสน และเพิ่มประสิทธิภาพแอป
ในปลั๊กอิน Android Gradle 7.0 ขึ้นไป คุณประกาศการกำหนดค่าที่แอปรองรับได้ Gradle ส่งข้อมูลนี้ไปยังระบบบิลด์โดยใช้เวอร์ชัน resourceConfigurations
และตัวเลือก defaultConfig
จากนั้นระบบป้องกันไม่ให้ทรัพยากรจากการกำหนดค่าอื่นๆ ที่ไม่ได้รับการสนับสนุนปรากฏใน APK ซึ่งจะลดขนาดของ APK ดูข้อมูลเพิ่มเติมเกี่ยวกับฟีเจอร์นี้ได้ที่นำทรัพยากรทางเลือกที่ไม่ได้ใช้ออก
ลดการใช้ทรัพยากรจากคลัง
เมื่อพัฒนาแอป Android คุณมักจะใช้ไลบรารีภายนอกเพื่อปรับปรุงความสามารถในการใช้งานและความอเนกประสงค์ของแอป ตัวอย่างเช่น คุณอาจอ้างอิง AndroidX เพื่อปรับปรุงประสบการณ์ของผู้ใช้บนอุปกรณ์รุ่นเก่า หรือจะใช้ Google Play Services เพื่อดึงข้อมูลการแปลข้อความภายในแอปโดยอัตโนมัติก็ได้
หากไลบรารีออกแบบมาสำหรับเซิร์ฟเวอร์หรือเดสก์ท็อป ไลบรารีอาจมีออบเจ็กต์และเมธอดจำนวนมากที่แอปของคุณไม่ต้องการ หากต้องการรวมเฉพาะส่วนของไลบรารีที่แอปของคุณต้องใช้ คุณสามารถแก้ไขไฟล์ของไลบรารีได้หากใบอนุญาตอนุญาตให้คุณแก้ไขไลบรารี นอกจากนี้ คุณยังใช้ไลบรารีอื่นที่เหมาะกับอุปกรณ์เคลื่อนที่เพื่อเพิ่มฟังก์ชันการทำงานบางอย่างลงในแอปได้ด้วย
การถอดรหัสรูปภาพเคลื่อนไหวเนทีฟ
ใน Android 12 (API ระดับ 31) เราได้ขยาย API ของ NDK
ImageDecoder
เพื่อถอดรหัสเฟรมและข้อมูลเวลาทั้งหมดจากรูปภาพที่ใช้รูปแบบไฟล์ GIF แบบเคลื่อนไหวและ WebP แบบเคลื่อนไหว
ใช้ ImageDecoder
แทนไลบรารีของบุคคลที่สามเพื่อลดขนาด APK เพิ่มเติมและรับประโยชน์จากการอัปเดตในอนาคตที่เกี่ยวข้องกับความปลอดภัยและประสิทธิภาพ
ดูรายละเอียดเพิ่มเติมเกี่ยวกับ ImageDecoder
API ได้ที่ API reference
และตัวอย่างเกี่ยวกับ GitHub
รองรับเฉพาะความหนาแน่นที่เจาะจง
Android รองรับความหนาแน่นของหน้าจอที่ต่างกัน เช่น ต่อไปนี้
ldpi
mdpi
tvdpi
hdpi
xhdpi
xxhdpi
xxxhdpi
แม้ว่า Android จะรองรับความหนาแน่นข้างต้น แต่คุณไม่จำเป็นต้องส่งออกชิ้นงานที่แรสเตอร์ไปยังความหนาแน่นแต่ละแบบ
หากคุณทราบว่ามีผู้ใช้เพียงไม่กี่เปอร์เซ็นต์ที่มีอุปกรณ์ที่มีความหนาแน่นที่เฉพาะเจาะจง ให้พิจารณาว่าต้องรวมความหนาแน่นเหล่านั้นไว้ในแอปหรือไม่ หากไม่รวมทรัพยากร สำหรับความหนาแน่นของหน้าจอที่เจาะจง Android จะปรับขนาดทรัพยากรที่มีอยู่ซึ่งออกแบบมาแต่เดิมสำหรับความหนาแน่นของหน้าจออื่นๆ โดยอัตโนมัติ
หากแอปต้องใช้รูปภาพที่ปรับขนาดเท่านั้น คุณจะประหยัดพื้นที่ได้มากขึ้นด้วยการใช้รูปภาพใน drawable-nodpi/
เพียงรูปแบบเดียว เราขอแนะนำให้ใส่รูปแบบรูปภาพอย่างน้อย xxhdpi
รูปแบบในแอป
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับความหนาแน่นของหน้าจอ โปรดดูขนาดและความหนาแน่นของหน้าจอ
ใช้ออบเจ็กต์ที่วาดได้
รูปภาพบางรายการไม่จำเป็นต้องมีทรัพยากรรูปภาพนิ่ง เฟรมเวิร์กสามารถวาดรูปภาพแบบไดนามิกขณะรันไทม์แทนได้ ออบเจ็กต์ Drawable
หรือ <shape>
ใน XML อาจใช้พื้นที่ใน APK เพียงเล็กน้อย นอกจากนี้ ออบเจกต์ XML Drawable
ยังสร้างรูปภาพโมโนโครมที่เป็นไปตามหลักเกณฑ์ของ Material Design
ใช้ทรัพยากรซ้ำ
คุณสามารถใส่ทรัพยากรแยกต่างหากสำหรับรูปภาพเวอร์ชันต่างๆ เช่น รูปภาพเดียวกันที่มีการปรับสี แรเงา หรือหมุน อย่างไรก็ตาม เราขอแนะนำให้คุณใช้ชุดทรัพยากรชุดเดิมซ้ำและปรับแต่งตามต้องการเมื่อรันไทม์
Android มียูทิลิตีมากมายในการเปลี่ยนสีของเนื้อหา โดยใช้แอตทริบิวต์ android:tint
และ tintMode
นอกจากนี้ คุณยังละเว้นทรัพยากรที่เหมือนกับทรัพยากรอื่นเพียงแค่หมุนเท่านั้นได้ด้วย ข้อมูลโค้ดต่อไปนี้แสดงตัวอย่างการเปลี่ยน "ชอบ" เป็น "ไม่ชอบ" โดยหมุนที่ตรงกลางรูปภาพและบิด 180 องศา
<?xml version="1.0" encoding="utf-8"?> <rotate xmlns:android="http://schemas.android.com/apk/res/android" android:drawable="@drawable/ic_thumb_up" android:pivotX="50%" android:pivotY="50%" android:fromDegrees="180" />
แสดงผลจากโค้ด
นอกจากนี้คุณยังลดขนาด APK ได้ด้วยการแสดงภาพรูปภาพอย่างเป็นขั้นตอน การแสดงผลแบบเป็นขั้นตอนจะช่วยเพิ่มพื้นที่ว่างเนื่องจากคุณไม่ต้องจัดเก็บไฟล์ภาพใน APK อีกต่อไป
บีบอัดไฟล์ PNG
เครื่องมือ aapt
สามารถเพิ่มประสิทธิภาพทรัพยากรรูปภาพที่วางไว้ใน res/drawable/
ด้วยการบีบอัดแบบไม่สูญเสียคุณภาพในระหว่างกระบวนการสร้าง เช่น เครื่องมือ aapt
สามารถแปลง PNG แบบสีจริงที่ไม่ต้องการมากกว่า 256 สีให้เป็น PNG 8 บิตที่มีชุดสี ซึ่งจะทำให้รูปภาพมีคุณภาพเท่าเดิมแต่ใช้พื้นที่หน่วยความจำน้อยลง
aapt
มีข้อจํากัดต่อไปนี้
- เครื่องมือ
aapt
จะไม่ลดขนาดไฟล์ PNG ที่มีอยู่ในโฟลเดอร์asset/
- ไฟล์ภาพต้องใช้สีไม่เกิน 256 สีเพื่อให้เครื่องมือ
aapt
เพิ่มประสิทธิภาพได้ - เครื่องมือ
aapt
อาจทำให้ไฟล์ PNG ที่บีบอัดแล้วมีขนาดใหญ่ขึ้น หากต้องการป้องกันปัญหานี้ คุณสามารถใช้ FlagisCrunchPngs
เพื่อปิดใช้กระบวนการนี้สำหรับไฟล์ PNG ได้โดยทำดังนี้
Kotlin
buildTypes.all { isCrunchPngs = false }
ดึงดูด
buildTypes.all { isCrunchPngs = false }
บีบอัดไฟล์ PNG และ JPEG
คุณลดขนาดไฟล์ PNG ได้โดยไม่สูญเสียคุณภาพของรูปภาพโดยใช้เครื่องมืออย่าง pngcrush, pngquant หรือ zopflipng เครื่องมือเหล่านี้ทั้งหมดสามารถลดขนาดไฟล์ PNG ขณะเดียวกันก็คงคุณภาพของรูปภาพให้เหมือนเดิม
เครื่องมือ pngcrush
มีประสิทธิภาพมาก เครื่องมือนี้จะทำซ้ำตัวกรอง PNG และพารามิเตอร์ zlib (Deflate) โดยใช้ฟิลเตอร์และพารามิเตอร์แต่ละชุดร่วมกันในการบีบอัดรูปภาพ
จากนั้นระบบจะเลือกการกำหนดค่าที่ให้เอาต์พุตที่บีบอัดแล้วมีขนาดเล็กที่สุด
หากต้องการบีบอัดไฟล์ JPEG คุณสามารถใช้เครื่องมืออย่าง packJPG และ guetzli
ใช้รูปแบบไฟล์ WebP
คุณใช้รูปแบบไฟล์ WebP สำหรับรูปภาพแทนไฟล์ PNG หรือ JPEG ได้ด้วย รูปแบบ WebP มีการบีบอัดแบบสูญเสียบางส่วนและโปร่งใส เช่น JPG และ PNG และสามารถบีบอัดได้ดีกว่า JPEG หรือ PNG
คุณสามารถแปลงรูปภาพ BMP, JPG, PNG หรือ GIF แบบคงที่ที่มีอยู่เป็นรูปแบบ WebP โดยใช้ Android Studio ดูข้อมูลเพิ่มเติมได้ที่สร้างรูปภาพ WebP
ใช้กราฟิกเวกเตอร์
คุณสามารถใช้กราฟิกเวกเตอร์เพื่อสร้างไอคอนที่ไม่อิงตามความละเอียดและสื่อที่รองรับการปรับขนาดอื่นๆ ได้
คุณสามารถใช้กราฟิกเหล่านี้เพื่อลดขนาด APK ลงได้อย่างมาก รูปภาพเวกเตอร์จะแสดงใน Android ในรูปแบบออบเจ็กต์ VectorDrawable
เมื่อใช้ออบเจ็กต์ VectorDrawable
ไฟล์ขนาด 100 ไบต์สามารถสร้างรูปภาพที่คมชัดขนาดเท่าหน้าจอ
อย่างไรก็ตาม ระบบจะใช้เวลานานขึ้นอย่างมากในการเรนเดอร์แต่ละVectorDrawable
ออบเจ็กต์ และรูปภาพขนาดใหญ่จะใช้เวลานานกว่าที่จะปรากฏบนหน้าจอ
ดังนั้น ให้พิจารณาใช้กราฟิกเวกเตอร์เหล่านี้เมื่อแสดงรูปภาพขนาดเล็กเท่านั้น
ดูข้อมูลเพิ่มเติมเกี่ยวกับการทำงานกับออบเจ็กต์ VectorDrawable
ได้ที่Drawable
ใช้ภาพกราฟิกเวกเตอร์สำหรับรูปภาพเคลื่อนไหว
อย่าใช้ AnimationDrawable
เพื่อสร้างภาพเคลื่อนไหวแบบเฟรมต่อเฟรม เนื่องจากคุณจะต้องใส่ไฟล์บิตแมปแยกต่างหากสำหรับแต่ละเฟรมของภาพเคลื่อนไหว ซึ่งจะทำให้ APK มีขนาดใหญ่ขึ้นอย่างมาก
แต่ให้ใช้
AnimatedVectorDrawableCompat
เพื่อสร้างรูปภาพเวกเตอร์ที่เคลื่อนไหวได้แทน
ลดโค้ดเนทีฟและโค้ด Java
คุณสามารถใช้วิธีการต่อไปนี้เพื่อลดขนาดโค้ดฐาน Java และโค้ดเนทีฟในแอป
นำโค้ดที่สร้างขึ้นที่ไม่จำเป็นออก
โปรดทำความเข้าใจร่องรอยของโค้ดที่สร้างขึ้นโดยอัตโนมัติ เช่น เครื่องมือบัฟเฟอร์โปรโตคอลจำนวนมากจะสร้างเมธอดและคลาสจำนวนมากเกินไป ซึ่งอาจเพิ่มขนาดแอปของคุณเป็น 2 เท่าหรือ 3 เท่า
หลีกเลี่ยงการแจกแจง
Enum รายการเดียวจะเพิ่มขนาดไฟล์ classes.dex
ของแอปประมาณ 1.0-1.4 KB การเพิ่มเหล่านี้อาจทําให้ระบบที่ซับซ้อนหรือคลังที่ใช้ร่วมกันมีข้อมูลเพิ่มขึ้นอย่างรวดเร็ว หากเป็นไปได้ ให้พิจารณาใช้@IntDef
คําอธิบายประกอบและการลดขนาดโค้ดเพื่อนำการแจกแจงออกและแปลงเป็นจำนวนเต็ม การแปลงประเภทนี้จะรักษาประโยชน์ด้านความปลอดภัยของประเภททั้งหมดของ enum
ลดขนาดไบนารีดั้งเดิม
หากแอปของคุณใช้โค้ดแบบเนทีฟและ Android NDK คุณสามารถลดขนาดแอปเวอร์ชันที่เผยแพร่ได้โดยการเพิ่มประสิทธิภาพโค้ด เทคนิคที่มีประโยชน์ 2 อย่างคือการนำสัญลักษณ์การแก้ไขข้อบกพร่องออกและไม่แยกไลบรารีเนทีฟ
นำสัญลักษณ์การแก้ไขข้อบกพร่องออก
การใช้สัญลักษณ์สำหรับแก้ไขข้อบกพร่องจะเหมาะสมในกรณีที่แอปอยู่ระหว่างการพัฒนาและยังต้องการการแก้ไขข้อบกพร่อง ใช้เครื่องมือ arm-eabi-strip
ที่มีให้ใน Android NDK เพื่อนำสัญลักษณ์การแก้ไขข้อบกพร่องที่ไม่จำเป็นออกจากไลบรารีที่มาพร้อมเครื่อง หลังจากนั้น คุณจะคอมไพล์บิลด์ของรุ่นได้
หลีกเลี่ยงการแยกไลบรารีที่มาพร้อมเครื่อง
เมื่อสร้างแอปเวอร์ชันที่เผยแพร่ ให้แพ็กเกจไฟล์ .so
ที่ไม่ได้บีบอัดไว้ใน APK โดยตั้งค่า useLegacyPackaging
เป็น false
ในไฟล์ build.gradle.kts
ของแอป การปิดใช้ Flag นี้จะป้องกันไม่ให้ PackageManager
คัดลอกไฟล์ .so
จาก APK ไปยังระบบไฟล์ระหว่างการติดตั้ง วิธีนี้จะทำให้อัปเดตของแอปมีขนาดเล็กลง
ดูแลรักษา APK แบบลีนหลายรายการ
APK ของคุณอาจมีเนื้อหาที่ผู้ใช้ดาวน์โหลดแต่ไม่เคยใช้ เช่น ภาษาเพิ่มเติมหรือทรัพยากรสำหรับความหนาแน่นของหน้าจอ อัปโหลดแอปไปยัง Google Play โดยใช้ Android App Bundle เพื่อช่วยให้ผู้ใช้ดาวน์โหลดน้อยที่สุด การอัปโหลด App Bundle ทำให้ Google Play สร้างและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละรายเพื่อให้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นต่อการเรียกใช้แอป คุณไม่ต้องสร้าง รับรอง และจัดการ APK หลายรายการเพื่อรองรับอุปกรณ์ต่างๆ และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
หากไม่ได้เผยแพร่แอปใน Google Play คุณสามารถแบ่งกลุ่มแอปออกเป็น APK หลายรายการโดยแยกตามปัจจัยต่างๆ เช่น รองรับขนาดหน้าจอหรือพื้นผิว GPU
เมื่อผู้ใช้ดาวน์โหลดแอป อุปกรณ์ของผู้ใช้จะได้รับ APK ที่ถูกต้องตามฟีเจอร์และการตั้งค่าของอุปกรณ์ วิธีนี้ช่วยให้อุปกรณ์ไม่ได้รับชิ้นงานสำหรับฟีเจอร์ที่อุปกรณ์ไม่มี ตัวอย่างเช่น หากผู้ใช้มีอุปกรณ์ hdpi
ผู้ใช้ไม่จำเป็นต้องมีxxxhdpi
แหล่งข้อมูลที่คุณอาจรวมไว้สำหรับอุปกรณ์ที่มีจอแสดงผลความหนาแน่นสูงกว่า
สำหรับข้อมูลเพิ่มเติม โปรดดูสร้าง APK หลายรายการและการรองรับ APK หลายรายการ