ข้อควรระวัง: ตั้งแต่เดือนสิงหาคม 2021 เป็นต้นไป แอปใหม่ทั้งหมดต้องเผยแพร่เป็น App Bundle หากคุณเผยแพร่แอปใน Google Play ให้สร้างและอัปโหลด Android App Bundle เมื่อคุณเผยแพร่ APK หลายรายการ Google Play จะสร้างและแสดง APK ที่เพิ่มประสิทธิภาพสำหรับการกำหนดค่าอุปกรณ์ของผู้ใช้แต่ละรายโดยอัตโนมัติ เพื่อให้ผู้ใช้ดาวน์โหลดเฉพาะโค้ดและทรัพยากรที่จําเป็นต่อการใช้งานแอป การเผยแพร่ APK หลายรายการมีประโยชน์ในกรณีที่คุณเผยแพร่ไปยัง Store ที่ไม่รองรับรูปแบบ AAB ในกรณีนี้ คุณต้องสร้าง รับรอง และจัดการ APK แต่ละรายการด้วยตนเอง
แม้ว่าการสร้าง APK รายการเดียวเพื่อรองรับอุปกรณ์เป้าหมายทั้งหมดจะดีกว่าเมื่อเป็นไปได้ แต่อาจส่งผลให้ APK มีขนาดใหญ่มากเนื่องจากไฟล์รองรับ ความหนาแน่นของหน้าจอหรือ Application Binary Interface (ABI) หลายรายการ วิธีหนึ่งในการลดขนาด APK คือการสร้าง APK หลายรายการที่มีไฟล์สำหรับความหนาแน่นของหน้าจอหรือ ABI ที่เฉพาะเจาะจง
Gradle สร้าง APK แยกต่างหากที่มีเฉพาะโค้ดและทรัพยากรสำหรับแต่ละความหนาแน่นหรือ ABI ได้ หน้านี้จะอธิบายวิธีกำหนดค่าบิลด์เพื่อสร้าง APK หลายรายการ หากต้องการสร้างแอปเวอร์ชันต่างๆ ที่ไม่ได้อิงตามความหนาแน่นของหน้าจอหรือ ABI ให้ใช้ตัวแปรของบิลด์แทน
กำหนดค่าบิลด์สำหรับ APK หลายรายการ
หากต้องการกำหนดค่าบิลด์สำหรับ APK หลายรายการ ให้เพิ่มบล็อก
splits
ลงในไฟล์ build.gradle
ระดับโมดูล ภายในบล็อก splits
ให้ใส่บล็อก density
ที่ระบุวิธีที่ต้องการให้ Gradle สร้าง APK ตามความหนาแน่น หรือบล็อก abi
ที่ระบุวิธีที่ต้องการให้ Gradle สร้าง APK ตาม ABI คุณสามารถระบุทั้งบล็อกความหนาแน่นและ ABI แล้วระบบบิลด์จะสร้าง APK สำหรับการรวมความหนาแน่นและ ABI แต่ละรายการ
กำหนดค่า APK หลายรายการสำหรับความหนาแน่นของหน้าจอ
หากต้องการสร้าง APK แยกต่างหากสำหรับความหนาแน่นหน้าจอที่แตกต่างกัน ให้เพิ่มบล็อก density
ไว้ในบล็อก splits
ในบล็อก density
ให้ระบุรายการความหนาแน่นของหน้าจอที่ต้องการและขนาดหน้าจอที่เข้ากันได้ ใช้รายการขนาดหน้าจอที่เข้ากันได้เฉพาะในกรณีที่คุณต้องการองค์ประกอบ
<compatible-screens>
ที่เฉพาะเจาะจงในไฟล์ Manifest ของ APK แต่ละรายการ
ตัวเลือก Gradle DSL ต่อไปนี้ใช้เพื่อกำหนดค่า APK หลายรายการสำหรับความหนาแน่นของหน้าจอ
-
enable
สำหรับ Groovy,isEnable
สำหรับสคริปต์ Kotlin -
หากคุณตั้งค่าองค์ประกอบนี้เป็น
true
ทาง Gradle จะสร้าง APK หลายรายการโดยอิงตามความหนาแน่นของหน้าจอที่คุณกำหนด ค่าเริ่มต้นคือfalse
-
exclude
-
ระบุรายการความละเอียดที่คั่นด้วยคอมมาซึ่งคุณไม่ต้องการให้ Gradle สร้าง APK แยกต่างหาก ใช้
exclude
หากต้องการสร้าง APK สำหรับความละเอียดส่วนใหญ่ แต่ต้องยกเว้นความละเอียดบางรายการที่แอปไม่รองรับ -
reset()
-
ล้างรายการความหนาแน่นของหน้าจอเริ่มต้น ใช้เฉพาะเมื่อรวมกับองค์ประกอบ
include
เพื่อระบุความหนาแน่นที่ต้องการเพิ่มข้อมูลโค้ดต่อไปนี้จะตั้งค่ารายการความหนาแน่นเป็นแค่
ldpi
และxxhdpi
โดยการเรียกใช้reset()
เพื่อล้างรายการ แล้วใช้include
reset() // Clears the default list from all densities // to no densities. include "ldpi", "xxhdpi" // Specifies the two densities to generate APKs // for.
-
include
-
ระบุรายการความหนาแน่นที่คุณต้องการให้ Gradle สร้าง APK โดยคั่นด้วยคอมมา ใช้ร่วมกับ
reset()
เพื่อระบุรายการความหนาแน่นที่แน่นอนเท่านั้น -
compatibleScreens
-
ระบุรายการขนาดหน้าจอที่เข้ากันได้โดยคั่นด้วยคอมมา ซึ่งจะแทรกโหนด
<compatible-screens>
ที่ตรงกันในไฟล์ Manifest สําหรับ APK แต่ละรายการการตั้งค่านี้ช่วยให้คุณจัดการทั้งความหนาแน่นของหน้าจอและขนาดหน้าจอได้สะดวกในส่วน
build.gradle
เดียวกัน อย่างไรก็ตาม การใช้<compatible-screens>
อาจจํากัดประเภทอุปกรณ์ที่แอปของคุณใช้ได้ ดูวิธีอื่นๆ ในการรองรับหน้าจอขนาดต่างๆ ได้ที่ภาพรวมความเข้ากันได้ของหน้าจอ
เนื่องจาก APK แต่ละรายการที่อิงตามความหนาแน่นของหน้าจอจะมีแท็ก <compatible-screens>
ที่มีข้อจำกัดเฉพาะเกี่ยวกับประเภทหน้าจอที่ APK รองรับ แม้ว่าคุณจะเผยแพร่ APK หลายรายการก็ตาม อุปกรณ์ใหม่บางรุ่นจึงอาจไม่ตรงกับตัวกรอง APK หลายรายการ ดังนั้น Gradle จะสร้าง APK สากลเพิ่มเติมที่มีชิ้นงานสำหรับความหนาแน่นของหน้าจอทั้งหมดและไม่รวมแท็ก <compatible-screens>
ไว้เสมอ เผยแพร่ APK สากลนี้พร้อมกับ APK ตามความหนาแน่นเพื่อใช้เป็นทางเลือกสําหรับอุปกรณ์ที่ไม่ตรงกับ APK ที่มีแท็ก <compatible-screens>
ตัวอย่างต่อไปนี้จะสร้าง APK แยกต่างหากสำหรับความหนาแน่นของหน้าจอแต่ละแบบ ยกเว้น ldpi
, xxhdpi
และ xxxhdpi
ซึ่งทำได้โดยใช้ exclude
เพื่อนำความหนาแน่น 3 รายการดังกล่าวออกจากรายการความหนาแน่นทั้งหมดที่เป็นค่าเริ่มต้น
Groovy
android { ... splits { // Configures multiple APKs based on screen density. density { // Configures multiple APKs based on screen density. enable true // Specifies a list of screen densities you don't want Gradle to create multiple APKs for. exclude "ldpi", "xxhdpi", "xxxhdpi" // Specifies a list of compatible screen size settings for the manifest. compatibleScreens 'small', 'normal', 'large', 'xlarge' } } }
Kotlin
android { ... splits { // Configures multiple APKs based on screen density. density { // Configures multiple APKs based on screen density. isEnable = true // Specifies a list of screen densities you don't want Gradle to create multiple APKs for. exclude("ldpi", "xxhdpi", "xxxhdpi") // Specifies a list of compatible screen size settings for the manifest. compatibleScreens("small", "normal", "large", "xlarge") } } }
ดูรายละเอียดเพิ่มเติมเกี่ยวกับการปรับแต่งตัวแปรต่างๆ ของบิลด์แอปให้เหมาะกับประเภทหน้าจอและอุปกรณ์ที่เฉพาะเจาะจงได้ที่ประกาศการรองรับหน้าจอแบบจำกัด
กำหนดค่า APK หลายรายการสำหรับ ABI
หากต้องการสร้าง APK แยกต่างหากสำหรับ ABI ที่แตกต่างกัน ให้เพิ่มบล็อก abi
เข้าไปในบล็อก splits
ในบล็อก abi
ให้ระบุรายการ ABI ที่ต้องการ
ตัวเลือก Gradle DSL ต่อไปนี้ใช้เพื่อกำหนดค่า APK หลายรายการต่อ ABI
-
enable
สำหรับ Groovy หรือisEnable
สำหรับสคริปต์ Kotlin - หากคุณตั้งค่าองค์ประกอบนี้เป็น
true
ทาง Gradle จะสร้าง APK หลายรายการตาม ABI ที่คุณกำหนด ค่าเริ่มต้นคือfalse
-
exclude
-
ระบุรายการ ABI ที่คั่นด้วยคอมมาซึ่งคุณไม่ต้องการให้ Gradle สร้าง APK แยกต่างหาก ใช้
exclude
หากต้องการสร้าง APK สำหรับ ABI ส่วนใหญ่ แต่ต้องยกเว้น ABI บางรายการที่แอปของคุณไม่รองรับ -
reset()
-
ล้างรายการ ABI เริ่มต้น ใช้เฉพาะเมื่อรวมกับองค์ประกอบ
include
เพื่อระบุ ABI ที่ต้องการเพิ่มข้อมูลโค้ดต่อไปนี้จะตั้งค่ารายการ ABI เป็น
x86
และx86_64
เท่านั้นโดยการเรียกใช้reset()
เพื่อล้างรายการ แล้วใช้include
reset() // Clears the default list from all ABIs to no ABIs. include "x86", "x86_64" // Specifies the two ABIs we want to generate APKs for.
-
include
-
ระบุรายการ ABI ที่คั่นด้วยคอมมาซึ่งคุณต้องการให้ Gradle สร้าง APK ขึ้นสำหรับ ใช้ร่วมกับ
reset()
เพื่อระบุรายการ ABI ที่แน่นอนเท่านั้น -
universalApk
สำหรับ Groovy หรือisUniversalApk
สำหรับสคริปต์ Kotlin -
หากเป็น
true
แสดงว่า Gradle จะสร้าง APK สากลนอกเหนือจาก APK สำหรับแต่ละ ABI APK สากลมีโค้ดและทรัพยากรสําหรับ ABI ทั้งหมดใน APK เดียว ค่าเริ่มต้นคือfalse
โปรดทราบว่าตัวเลือกนี้จะใช้ได้ในบล็อก
splits.abi
เท่านั้น เมื่อสร้าง APK หลายรายการตามความหนาแน่นของหน้าจอ Gradle จะสร้าง APK สากลที่มีโค้ดและทรัพยากรสำหรับความหนาแน่นของหน้าจอทั้งหมดเสมอ
ตัวอย่างต่อไปนี้จะสร้าง APK แยกกันสำหรับ ABI แต่ละรายการ ได้แก่ x86
และ x86_64
ซึ่งทำได้โดยใช้ reset()
เพื่อเริ่มต้นด้วยรายการ ABI ว่างเปล่า ตามด้วย include
ที่มีรายการ ABI แต่ละรายการที่มี APK
Groovy
android { ... splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. enable true // By default all ABIs are included, so use reset() and include to specify that you only // want APKs for x86 and x86_64. // Resets the list of ABIs for Gradle to create APKs for to none. reset() // Specifies a list of ABIs for Gradle to create APKs for. include "x86", "x86_64" // Specifies that you don't want to also generate a universal APK that includes all ABIs. universalApk false } } }
Kotlin
android { ... splits { // Configures multiple APKs based on ABI. abi { // Enables building multiple APKs per ABI. isEnable = true // By default all ABIs are included, so use reset() and include to specify that you only // want APKs for x86 and x86_64. // Resets the list of ABIs for Gradle to create APKs for to none. reset() // Specifies a list of ABIs for Gradle to create APKs for. include("x86", "x86_64") // Specifies that you don't want to also generate a universal APK that includes all ABIs. isUniversalApk = false } } }
โปรดดูรายการ ABI ที่รองรับที่หัวข้อABI ที่รองรับ
โปรเจ็กต์ที่ไม่มีโค้ดเนทีฟ/C++
สำหรับโปรเจ็กต์ที่ไม่มีโค้ดเนทีฟ/C++ แผงตัวแปรการสร้างจะมี 2 คอลัมน์ ได้แก่ โมดูลและตัวแปรการสร้างที่ใช้งานอยู่ ดังที่แสดงในรูปที่ 1
รูปที่ 1 แผงสร้างตัวแปรมีคอลัมน์ 2 คอลัมน์สําหรับโปรเจ็กต์ที่ไม่มีโค้ดเนทีฟ/C++
ค่าตัวแปรบิลด์ที่ใช้งานอยู่ของข้อบังคับจะกําหนดตัวแปรบิลด์ที่ติดตั้งใช้งานและปรากฏในเครื่องมือแก้ไข หากต้องการสลับระหว่างตัวแปร ให้คลิกเซลล์ตัวแปรบิลด์ที่ใช้งานอยู่ของโมดูล แล้วเลือกตัวแปรที่ต้องการจากช่องรายการ
โปรเจ็กต์ที่มีโค้ดเนทีฟ/C++
สำหรับโปรเจ็กต์ที่มีโค้ดเนทีฟ/C++ แผงตัวแปรของบิลด์จะมี 3 คอลัมน์ ได้แก่ โมดูล ตัวแปรของบิลด์ที่ใช้งานอยู่ และ ABI ที่ใช้งานอยู่ ดังที่แสดงในรูปที่ 2
รูปที่ 2 แผงตัวแปรการสร้างจะเพิ่มคอลัมน์ Active ABI สำหรับโปรเจ็กต์ที่มีโค้ดเนทีฟ/C++
ค่าตัวแปรบิลด์ที่ใช้งานอยู่ของโมดูลจะกำหนดตัวแปรบิลด์ที่ติดตั้งใช้งานและปรากฏในเครื่องมือแก้ไข สําหรับโมดูลเนทีฟ ค่า Active ABI จะกําหนด ABI ที่เครื่องมือแก้ไขใช้ แต่ไม่ส่งผลต่อสิ่งที่จะติดตั้งใช้งาน
วิธีเปลี่ยนประเภทบิลด์หรือ ABI
- คลิกเซลล์ของคอลัมน์ตัวแปรรุ่นที่ใช้งานอยู่หรือABI ที่ใช้งานอยู่
- เลือกตัวแปรหรือ ABI ที่ต้องการจากช่องรายการ การซิงค์ใหม่จะทำงานโดยอัตโนมัติ
การเปลี่ยนแปลงคอลัมน์ใดคอลัมน์หนึ่งสำหรับโมดูลแอปหรือไลบรารีจะมีผลกับแถวที่เกี่ยวข้องทั้งหมด
กำหนดค่าการระบุเวอร์ชัน
โดยค่าเริ่มต้น เมื่อ Gradle สร้าง APK หลายรายการ APK แต่ละรายการจะมีข้อมูลเวอร์ชันเดียวกันตามที่ระบุไว้ในไฟล์ build.gradle
หรือ build.gradle.kts
ระดับโมดูล เนื่องจาก Google Play Store ไม่อนุญาตให้แอปเดียวกันมี APK หลายรายการที่มีข้อมูลเวอร์ชันเดียวกัน คุณจึงต้องตรวจสอบว่า APK แต่ละรายการมี
versionCode
ที่ไม่ซ้ำกันก่อนอัปโหลดไปยัง Play Store
คุณสามารถกําหนดค่าไฟล์ build.gradle
ระดับโมดูลเพื่อลบล้าง versionCode
สําหรับแต่ละ APK ได้ การสร้างการแมปซึ่งกําหนดค่าตัวเลขที่ไม่ซ้ำกันสําหรับ ABI และความละเอียดแต่ละรายการที่คุณกําหนดค่า APK หลายรายการไว้จะช่วยให้คุณลบล้างรหัสเวอร์ชันเอาต์พุตด้วยค่าที่รวมรหัสเวอร์ชันที่กําหนดภายในบล็อก defaultConfig
หรือ productFlavors
เข้ากับค่าตัวเลขที่กําหนดให้กับความละเอียดหรือ ABI ได้
ในตัวอย่างต่อไปนี้ APK สําหรับ x86
ABI
ได้ versionCode
เป็น 2004 และ x86_64
ABI
ได้ versionCode
เป็น 3004
การกำหนดรหัสเวอร์ชันแบบเพิ่มทีละมากๆ เช่น 1,000 จะช่วยให้คุณกำหนดรหัสเวอร์ชันที่ไม่ซ้ำกันในภายหลังได้หากต้องการอัปเดตแอป เช่น หาก defaultConfig.versionCode
ซ้ำเป็น 5 ในการอัปเดตครั้งถัดไป Gradle จะกำหนด versionCode
เป็น 2005 ให้กับ APK x86
และ 3005 ให้กับ APK x86_64
เคล็ดลับ: หากบิลด์มี APK สากล ให้กําหนด versionCode
ของ APK นั้นให้ต่ำกว่า APK อื่นๆ
เนื่องจาก Google Play Store จะติดตั้งแอปเวอร์ชันที่เข้ากันได้กับอุปกรณ์เป้าหมายและมี versionCode
สูงสุด การกำหนด versionCode
ที่ต่ำกว่าให้กับ APK สากลจะช่วยให้มั่นใจได้ว่า Google Play Store จะพยายามติดตั้ง APK รายการใดรายการหนึ่งของคุณก่อนที่จะเปลี่ยนไปใช้ APK สากล โค้ดตัวอย่างต่อไปนี้จะจัดการเรื่องนี้โดยไม่ลบล้าง versionCode
เริ่มต้นของ APK แบบ Universal
Groovy
android { ... defaultConfig { ... versionCode 4 } splits { ... } } // Map for the version code that gives each ABI a value. ext.abiCodes = ['armeabi-v7a':1, x86:2, x86_64:3] // For per-density APKs, create a similar map: // ext.densityCodes = ['mdpi': 1, 'hdpi': 2, 'xhdpi': 3] import com.android.build.OutputFile // For each APK output variant, override versionCode with a combination of // ext.abiCodes * 1000 + variant.versionCode. In this example, variant.versionCode // is equal to defaultConfig.versionCode. If you configure product flavors that // define their own versionCode, variant.versionCode uses that value instead. android.applicationVariants.all { variant -> // Assigns a different version code for each output APK // other than the universal APK. variant.outputs.each { output -> // Stores the value of ext.abiCodes that is associated with the ABI for this variant. def baseAbiVersionCode = // Determines the ABI for this variant and returns the mapped value. project.ext.abiCodes.get(output.getFilter(OutputFile.ABI)) // Because abiCodes.get() returns null for ABIs that are not mapped by ext.abiCodes, // the following code doesn't override the version code for universal APKs. // However, because you want universal APKs to have the lowest version code, // this outcome is desirable. if (baseAbiVersionCode != null) { // Assigns the new version code to versionCodeOverride, which changes the // version code for only the output APK, not for the variant itself. Skipping // this step causes Gradle to use the value of variant.versionCode for the APK. output.versionCodeOverride = baseAbiVersionCode * 1000 + variant.versionCode } } }
Kotlin
android { ... defaultConfig { ... versionCode = 4 } splits { ... } } // Map for the version code that gives each ABI a value. val abiCodes = mapOf("armeabi-v7a" to 1, "x86" to 2, "x86_64" to 3) // For per-density APKs, create a similar map: // val densityCodes = mapOf("mdpi" to 1, "hdpi" to 2, "xhdpi" to 3) import com.android.build.api.variant.FilterConfiguration.FilterType.* // For each APK output variant, override versionCode with a combination of // abiCodes * 1000 + variant.versionCode. In this example, variant.versionCode // is equal to defaultConfig.versionCode. If you configure product flavors that // define their own versionCode, variant.versionCode uses that value instead. androidComponents { onVariants { variant -> // Assigns a different version code for each output APK // other than the universal APK. variant.outputs.forEach { output -> val name = output.filters.find { it.filterType == ABI }?.identifier // Stores the value of abiCodes that is associated with the ABI for this variant. val baseAbiCode = abiCodes[name] // Because abiCodes.get() returns null for ABIs that are not mapped by ext.abiCodes, // the following code doesn't override the version code for universal APKs. // However, because you want universal APKs to have the lowest version code, // this outcome is desirable. if (baseAbiCode != null) { // Assigns the new version code to output.versionCode, which changes the version code // for only the output APK, not for the variant itself. output.versionCode.set(baseAbiCode * 1000 + (output.versionCode.get() ?: 0)) } } } }
ดูตัวอย่างเพิ่มเติมของรูปแบบรหัสเวอร์ชันอื่นได้ที่ การกำหนดรหัสเวอร์ชัน
สร้าง APK หลายรายการ
เมื่อกำหนดค่าไฟล์ build.gradle
หรือ build.gradle.kts
ระดับโมดูลเพื่อสร้าง APK หลายรายการแล้ว ให้คลิกสร้าง > สร้าง APK เพื่อสร้าง APK ทั้งหมดสำหรับโมดูลที่เลือกอยู่ในแผงโปรเจ็กต์ Gradle จะสร้าง APK สำหรับความหนาแน่นหรือ ABI แต่ละรายการในไดเรกทอรี build/outputs/apk/
ของโปรเจ็กต์
Gradle จะสร้าง APK สำหรับความหนาแน่นหรือ ABI แต่ละรายการที่คุณกำหนดค่า APK หลายรายการไว้ หากคุณเปิดใช้ APK หลายรายการสำหรับทั้งความหนาแน่นและ ABI นั้น Gradle จะสร้าง APK สำหรับการรวมความหนาแน่นและ ABI แต่ละรายการ
ตัวอย่างเช่น ข้อมูลโค้ด build.gradle
ต่อไปนี้ช่วยให้คุณสร้าง APK หลายรายการสำหรับความหนาแน่น mdpi
และ hdpi
รวมถึง ABI x86
และ x86_64
ได้
Groovy
... splits { density { enable true reset() include "mdpi", "hdpi" } abi { enable true reset() include "x86", "x86_64" } }
Kotlin
... splits { density { isEnable = true reset() include("mdpi", "hdpi") } abi { isEnable = true reset() include("x86", "x86_64") } }
เอาต์พุตจากการกําหนดค่าตัวอย่างมี APK 4 รายการต่อไปนี้
app-hdpiX86-release.apk
: มีโค้ดและทรัพยากรสำหรับความหนาแน่นhdpi
และ ABIx86
app-hdpiX86_64-release.apk
: มีโค้ดและทรัพยากรสำหรับความหนาแน่นhdpi
และ ABIx86_64
app-mdpiX86-release.apk
: มีโค้ดและทรัพยากรสำหรับความหนาแน่นmdpi
และ ABIx86
app-mdpiX86_64-release.apk
: มีโค้ดและทรัพยากรสำหรับความหนาแน่นmdpi
และ ABIx86_64
เมื่อสร้าง APK หลายรายการตามความหนาแน่นของหน้าจอ Gradle จะสร้าง APK สากลที่มีโค้ดและทรัพยากรสำหรับความหนาแน่นทั้งหมดเสมอ นอกเหนือจาก APK ตามความหนาแน่น
เมื่อสร้าง APK หลายรายการตาม ABI นั้น Gradle จะสร้างเฉพาะ APK ที่มีโค้ดและทรัพยากรสำหรับ ABI ทั้งหมดหากคุณระบุ universalApk true
ในบล็อก splits.abi
ในไฟล์ build.gradle
(สำหรับ Groovy) หรือ isUniversalApk = true
ในบล็อก splits.abi
ในไฟล์ build.gradle.kts
(สำหรับสคริปต์ Kotlin)
รูปแบบชื่อไฟล์ APK
เมื่อสร้าง APK หลายรายการ Gradle จะสร้างชื่อไฟล์ APK โดยใช้รูปแบบต่อไปนี้
modulename-screendensityABI-buildvariant.apk
คอมโพเนนต์รูปแบบมีดังนี้
-
modulename
- ระบุชื่อโมดูลที่สร้าง
-
screendensity
-
หากเปิดใช้ APK หลายรายการสำหรับความหนาแน่นของหน้าจอ ให้ระบุความหนาแน่นของหน้าจอสำหรับ APK เช่น
mdpi
-
ABI
-
หากเปิดใช้ APK หลายรายการสำหรับ ABI ให้ระบุ ABI สำหรับ APK เช่น
x86
หากเปิดใช้ APK หลายรายการสำหรับทั้งความหนาแน่นของหน้าจอและ ABI Gradle จะต่อชื่อความหนาแน่นเข้ากับชื่อ ABI เช่น
mdpiX86
หากเปิดใช้universalApk
สำหรับ APK ตาม ABI Gradle จะใช้universal
เป็นส่วนที่เกี่ยวกับ ABI ของชื่อไฟล์ APK แบบสากล -
buildvariant
-
ระบุตัวแปรของบิวด์ที่สร้าง เช่น
debug
ตัวอย่างเช่น เมื่อสร้าง APK ความหนาแน่นของหน้าจอ mdpi
สำหรับเวอร์ชันแก้ไขข้อบกพร่องของ myApp ชื่อไฟล์ APK จะเป็น myApp-mdpi-debug.apk
เวอร์ชันรุ่นของ myApp ที่กําหนดค่าให้สร้าง APK หลายรายการสําหรับทั้งความหนาแน่นของหน้าจอ mdpi
และ ABI x86
มีชื่อไฟล์ APK ว่า myApp-mdpiX86-release.apk