ผู้ใช้มักหลีกเลี่ยงการดาวน์โหลดแอปที่มีขนาดใหญ่เกินไป โดยเฉพาะในตลาดเกิดใหม่ที่ อุปกรณ์เชื่อมต่อกับเครือข่าย 2G และ 3G ที่ไม่เสถียร หรือใช้แพ็กเกจที่มีการจำกัดปริมาณข้อมูล หน้านี้อธิบาย วิธีลดขนาดการดาวน์โหลดของแอป ซึ่งจะช่วยให้ผู้ใช้จำนวนมากขึ้นดาวน์โหลดแอปของคุณได้
อัปโหลดแอปด้วย Android App Bundle
อัปโหลดแอปเป็น Android App Bundle เพื่อประหยัด ขนาดแอปได้ทันทีเมื่อเผยแพร่ไปยัง Google Play Android App Bundle เป็นรูปแบบการอัปโหลดที่มี โค้ดและทรัพยากรที่คอมไพล์แล้วทั้งหมดของแอป แต่จะเลื่อนการสร้างและการลงนาม APK ไปยัง Google Play
จากนั้นรูปแบบการนำส่งแอปของ Google Play จะใช้ App Bundle เพื่อสร้างและนำส่ง APK ที่เพิ่มประสิทธิภาพ สำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละราย เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จำเป็นต่อการ เรียกใช้แอปของคุณ คุณจึงไม่ต้องสร้าง ทำ Signing และจัดการ APK หลายรายการเพื่อรองรับอุปกรณ์ต่างๆ และผู้ใช้จะได้รับการดาวน์โหลดที่มีขนาดเล็กลงและเพิ่มประสิทธิภาพมากขึ้น
Google Play บังคับใช้ข้อจำกัดด้านขนาดการดาวน์โหลดที่บีบอัดแล้วที่ 200 MB สำหรับแอปที่เผยแพร่ด้วย App Bundle คุณสามารถใช้ Play Feature Delivery และ 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
ออบเจ็กต์ที่ปรับขนาดได้
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
flavor และ 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
รูปภาพอย่างน้อย 1 รายการในแอป
ดูข้อมูลเพิ่มเติมเกี่ยวกับความหนาแน่นของหน้าจอได้ที่ ขนาดและความหนาแน่นของหน้าจอ
ใช้ออบเจ็กต์ที่วาดได้
รูปภาพบางรายการไม่จำเป็นต้องมีแหล่งข้อมูลรูปภาพแบบคงที่ เฟรมเวิร์กจะวาดรูปภาพแบบไดนามิก
ในรันไทม์แทน ออบเจ็กต์ 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 แบบ True Color ที่ไม่จำเป็นต้องใช้สีมากกว่า 256 สีเป็น PNG แบบ 8 บิตที่มีจานสี
ได้ การทำเช่นนี้จะทำให้ได้รูปภาพที่มีคุณภาพเท่ากันแต่ใช้หน่วยความจำน้อยลง
aapt
มีข้อจำกัดต่อไปนี้
aapt
ไม่ลดขนาดไฟล์ PNG ที่อยู่ในโฟลเดอร์asset/
- ไฟล์รูปภาพต้องใช้สีไม่เกิน 256 สีเพื่อให้เครื่องมือ
aapt
เพิ่มประสิทธิภาพ ได้ - เครื่องมือ
aapt
อาจขยายไฟล์ PNG ที่บีบอัดไว้แล้ว หากไม่ต้องการให้เกิดเหตุการณ์นี้ คุณสามารถใช้แฟล็กisCrunchPngs
เพื่อปิดใช้กระบวนการนี้สำหรับไฟล์ PNG ได้
Kotlin
buildTypes.all { isCrunchPngs = false }
Groovy
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 และโค้ดเบสเนทีฟในแอปได้
นำโค้ดที่สร้างขึ้นซึ่งไม่จำเป็นออก
โปรดทำความเข้าใจร่องรอยของโค้ดที่สร้างขึ้นโดยอัตโนมัติ ตัวอย่างเช่น เครื่องมือ Protocol Buffer หลายอย่างสร้างเมธอดและคลาสจำนวนมากเกินไป ซึ่งอาจเพิ่มขนาดแอปเป็น 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
ของแอป การปิดใช้ฟีเจอร์นี้จะป้องกันไม่ให้
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 หลายรายการ