กําหนดค่าโมดูลฐาน

App Bundle ต่างจาก APK ตรงที่คุณไม่สามารถทำให้ APK ใช้งานได้ อุปกรณ์ แต่จะเป็นรูปแบบการเผยแพร่ที่รวมแอปทั้งหมดของคุณ โค้ดและทรัพยากรในอาร์ติแฟกต์บิลด์เดียว ดังนั้น หลังจากที่คุณอัปโหลด App Bundle ที่รับรองแล้ว, Google Play มีทุกอย่างที่ต้องใช้ในการสร้างและรับรอง APK ของแอป และเผยแพร่แก่ผู้ใช้

เริ่มต้นใช้งาน

โปรเจ็กต์แอปส่วนใหญ่ไม่จำเป็นต้องใช้ความพยายามอย่างมากในการรองรับ Android App Bundle เนื่องจากโมดูลที่มีโค้ดและทรัพยากรสำหรับฐานแอปของคุณ APK เป็นโมดูลแอปมาตรฐาน ซึ่งคุณจะได้รับโดยค่าเริ่มต้นเมื่อ สร้างโปรเจ็กต์แอปใหม่ใน Android Studio นั่นคือโมดูลที่ใช้ปลั๊กอิน application ด้านล่างกับปลั๊กอิน ไฟล์ build.gradle มีโค้ดและทรัพยากรสำหรับฟังก์ชันการทำงานพื้นฐาน ของแอปของคุณ

ดึงดูด

// The standard application plugin creates your app's base module.
plugins {
 id 'com.android.application'
}

Kotlin

plugins {
    // The standard application plugin creates your app's base module.
    id("com.android.application")
}

นอกเหนือจากการให้ฟังก์ชันหลักสำหรับแอปแล้ว โมดูลฐาน ยังมีการกำหนดค่าบิลด์และรายการ Manifest มากมายที่ จะส่งผลต่อทั้งโปรเจ็กต์แอปของคุณ

การกำหนดค่าบิลด์ของโมดูลฐาน

สำหรับโปรเจ็กต์แอปส่วนใหญ่ที่มีอยู่ คุณไม่จำเป็นต้องทำการเปลี่ยนแปลงใดๆ ในฐาน การกำหนดค่าบิลด์ของโมดูล แต่ถ้าคุณคิดจะเพิ่ม โมดูลฟีเจอร์ลงในโปรเจ็กต์แอปของคุณ หรือหากคุณได้เผยแพร่แอปก่อนหน้านี้โดยใช้ APK หลายรายการ การกำหนดค่าบิลด์ของโมดูลฐานมีด้านต่างๆ บางส่วน ที่คุณควรคำนึงถึง

รหัสเวอร์ชันและการอัปเดตแอป

เมื่อใช้ Android App Bundle คุณจะไม่ต้องจัดการอีกต่อไป รหัสเวอร์ชันสำหรับ APK หลายรายการที่คุณอัปโหลดไปยัง Google Play แต่คุณ จัดการรหัสเวอร์ชันเพียงรหัสเดียวในโมดูลฐานของแอปตามที่แสดงด้านล่าง

// In your base module build.gradle file
android {
    defaultConfig {
        …
        // You specify your app’s version code only in the base module.
        versionCode 5
        versionName "1.0"
    }
}

หลังจากที่คุณอัปโหลด App Bundle แล้ว Google Play จะใช้รหัสเวอร์ชันใน โมดูลฐานสำหรับกำหนดรหัสเวอร์ชันเดียวกันให้กับ APK ทั้งหมดที่ APK สร้างขึ้น แพ็กเกจนั้น กล่าวคือ เมื่ออุปกรณ์ดาวน์โหลดและติดตั้งแอปของคุณ ทุกอย่างจะแยกออกเป็น APK ของแอปนั้นใช้รหัสเวอร์ชันเดียวกัน

เมื่อต้องการอัปเดตแอปด้วยโค้ดหรือทรัพยากรใหม่ คุณต้องอัปเดต รหัสเวอร์ชันในโมดูลฐานของแอป และสร้าง App Bundle ที่สมบูรณ์ใหม่ เมื่อคุณอัปโหลด App Bundle นั้นไปยัง Google Play ระบบจะสร้าง APK ชุดใหม่ ตามรหัสเวอร์ชันที่โมดูลฐานระบุไว้ จากนั้น เมื่อผู้ใช้ อัปเดตแอปของคุณ Google Play จะแสดง APK เวอร์ชันที่อัปเดตแล้วทั้งหมด ที่ติดตั้งบนอุปกรณ์ในปัจจุบัน กล่าวคือ APK ที่ติดตั้งทั้งหมดได้รับการอัปเดตเป็น รหัสเวอร์ชันใหม่

ปัจจัยพิจารณาอื่นๆ

  • การลงนามแอป: หากคุณใส่ข้อมูลการลงนามในไฟล์บิลด์ คุณควรรวมไว้ในไฟล์การกำหนดค่าบิลด์ของโมดูลฐานเท่านั้น สำหรับข้อมูลเพิ่มเติม โปรดดู กำหนดค่า Gradle เพื่อรับรองแอป
  • การย่อโค้ด: หากคุณต้องการ เปิดใช้การย่อโค้ดสำหรับ โปรเจ็กต์แอปทั้งหมด (รวมถึงโมดูลฟีเจอร์) คุณต้องดำเนินการ จากไฟล์ create.gradle ของโมดูลฐาน กล่าวคือ คุณสามารถ รวมกฎ ProGuard ที่กำหนดเอง ไว้ในโมดูลฟีเจอร์ แต่พร็อพเพอร์ตี้ minifyEnabled ในฟีเจอร์ ระบบจะไม่พิจารณาการกำหนดค่าบิลด์โมดูล
  • ระบบจะไม่สนใจบล็อก splits: เมื่อสร้าง App Bundle ทาง Gradle ไม่พิจารณาคุณสมบัติในบล็อก android.splits หากคุณต้องการควบคุม ประเภทการกำหนดค่า APK ที่ App Bundle รองรับ ให้ใช้ android.bundle ถึง ปิดใช้ประเภทของ APK การกำหนดค่า
  • การกำหนดเวอร์ชันของแอป: โมดูลฐานจะเป็นตัวกำหนดรหัสเวอร์ชันและเวอร์ชัน สำหรับทั้งโปรเจ็กต์แอปของคุณ ดูข้อมูลเพิ่มเติมได้ในส่วน เกี่ยวกับวิธีจัดการการอัปเดตแอป

เปิดหรือปิดใช้ประเภทของ APK การกำหนดค่าอีกครั้ง

โดยค่าเริ่มต้น เมื่อสร้าง App Bundle แอปจะรองรับการสร้างการกำหนดค่า APK สำหรับชุดทรัพยากรภาษา ทรัพยากรความหนาแน่นของหน้าจอ และ ABI แต่ละชุด ห้องสมุด การใช้บล็อก android.bundle ในโมดูลฐาน build.gradle ดังที่แสดงด้านล่าง คุณสามารถปิดใช้การสนับสนุนสำหรับไฟล์ ประเภทของ APK การกำหนดค่า

ดึงดูด

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

Kotlin

android {
    // When building Android App Bundles, the splits block is ignored.
    // You can remove it, unless you're going to continue to build multiple
    // APKs in parallel with the app bundle
    splits {...}

    // Instead, use the bundle block to control which types of configuration APKs
    // you want your app bundle to support.
    bundle {
        language {
            // This property is set to true by default.
            // You can specify `false` to turn off
            // generating configuration APKs for language resources.
            // These resources are instead packaged with each base and
            // feature APK.
            // Continue reading below to learn about situations when an app
            // might change setting to `false`, otherwise consider leaving
            // the default on for more optimized downloads.
            enableSplit = false
        }
        density {
            // This property is set to true by default.
            enableSplit = true
        }
        abi {
            // This property is set to true by default.
            enableSplit = true
        }
    }
}

การจัดการการเปลี่ยนภาษา

Google Play จะกําหนดทรัพยากรภาษาที่จะติดตั้งด้วยแอป ในการเลือกภาษาในการตั้งค่าอุปกรณ์ของผู้ใช้ พิจารณาผู้ใช้ที่ เปลี่ยนภาษาเริ่มต้นของระบบหลังจากดาวน์โหลดแอปของคุณแล้ว หากแอปของคุณรองรับภาษานั้น อุปกรณ์จะส่งคำขอและดาวน์โหลดเพิ่มเติม APK การกำหนดค่าสำหรับทรัพยากรทางภาษาเหล่านั้นจาก Google Play

สำหรับแอปที่มีเครื่องมือเลือกภาษาภายในแอปพลิเคชันและแบบไดนามิก ให้เปลี่ยนภาษาของแอป โดยไม่ขึ้นอยู่กับการตั้งค่าภาษาในระดับระบบ คุณต้องทำการเปลี่ยนแปลงบางอย่างเพื่อป้องกันข้อขัดข้องเนื่องจากทรัพยากรขาดหายไป อย่างใดอย่างหนึ่ง ตั้งค่าพร็อพเพอร์ตี้ android.bundle.language.enableSplit เป็น false หรือลองพิจารณา การใช้การดาวน์โหลดภาษาแบบออนดีมานด์โดยใช้ไลบรารี Play Core ตามที่อธิบายไว้ในดาวน์โหลดแหล่งข้อมูลเกี่ยวกับภาษาเพิ่มเติม