กำหนดเวอร์ชันแอป

การกำหนดเวอร์ชันเป็นองค์ประกอบสำคัญของการอัปเกรดและบำรุงรักษาแอป ของคุณ การกำหนดเวอร์ชันเป็นสิ่งสำคัญเนื่องจากเหตุผลต่อไปนี้

  • ผู้ใช้ต้องมีข้อมูลเฉพาะเกี่ยวกับเวอร์ชันของแอปที่ ในอุปกรณ์ และเวอร์ชันอัปเกรดที่พร้อมใช้งานสำหรับ ของคุณ
  • แอปอื่นๆ รวมถึงแอปอื่นๆ ที่คุณเผยแพร่ด้วย ชุดแอปจะต้องค้นหาระบบเพื่อดูเวอร์ชันของแอป ระบุความเข้ากันได้และระบุทรัพยากร Dependency
  • บริการที่คุณเผยแพร่แอปอาจต้อง ค้นหาเวอร์ชันของแอปคุณเพื่อให้แอปแสดงเวอร์ชัน ผู้ใช้ บริการเผยแพร่อาจต้องตรวจสอบเวอร์ชันของแอปเพื่อ ระบุความเข้ากันได้และสร้างความสัมพันธ์การอัปเกรด/ดาวน์เกรด

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

ระบบ Android บังคับใช้ความเข้ากันได้กับเวอร์ชันของระบบตามที่แสดงไว้ ตามการตั้งค่า minSdk ในไฟล์บิลด์ การตั้งค่านี้ อนุญาตให้แอประบุ API ระบบขั้นต่ำที่เข้ากันได้ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับข้อกำหนดของ API ดูระบุข้อกำหนดระดับ API

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

ตั้งค่าข้อมูลเวอร์ชันแอป

หากต้องการระบุข้อมูลเวอร์ชันให้แอป ให้กำหนดค่าสำหรับเวอร์ชัน การตั้งค่าในไฟล์บิลด์ของ Gradle

ดึงดูด

    android {
      namespace 'com.example.testapp'
      compileSdk 33

      defaultConfig {
          applicationId "com.example.testapp"
          minSdk 24
          targetSdk 33
          versionCode 1
          versionName "1.0"
          ...
      }
      ...
    }
    ...
    

Kotlin

    android {
      namespace = "com.example.testapp"
      compileSdk = 33

      defaultConfig {
          applicationId = "com.example.testapp"
          minSdk = 24
          targetSdk = 33
          versionCode = 1
          versionName = "1.0"
          ...
      }
      ...
    }
    ...
      

การตั้งค่าเวอร์ชัน

กำหนดค่าสำหรับทั้งการตั้งค่าเวอร์ชันที่ใช้ได้: versionCode และ versionName

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

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

หมายเหตุ: คุณค่าที่คุ้มค่าที่สุดที่ Google Play อนุญาตสำหรับ versionCode คือ 2100000000

คุณไม่สามารถอัปโหลด APK ไปยัง Play Store ด้วยversionCodeที่มี ที่เคยใช้อยู่แล้วสำหรับเวอร์ชันก่อนหน้า

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

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

versionName

สตริงที่ใช้เป็นหมายเลขเวอร์ชันที่แสดงแก่ ผู้ใช้ การตั้งค่านี้สามารถระบุเป็นสตริงดิบหรือเป็นการอ้างอิงไปยัง ของทรัพยากรสตริง

ค่านี้เป็นสตริงเพื่อให้คุณอธิบายเวอร์ชันของแอปเป็น <major>.<minor><point> สตริงหรือเป็นประเภทอื่น ตัวระบุเวอร์ชันสัมบูรณ์หรือสัมพัทธ์ versionName เป็นค่าเดียว ที่แสดงต่อผู้ใช้

กำหนดค่าเวอร์ชัน

คุณกำหนดค่าเริ่มต้นสำหรับการตั้งค่าเหล่านี้ได้โดยรวมค่าไว้ใน บล็อก defaultConfig {} ที่ฝังไว้ภายใน android {} ของไฟล์ build.gradle หรือ build.gradle.kts ของโมดูล คุณสามารถ จากนั้นลบล้างค่าเริ่มต้นเหล่านี้สำหรับแอปเวอร์ชันต่างๆ โดยกำหนด สำหรับบิลด์หรือรสชาติของผลิตภัณฑ์แต่ละประเภท ไฟล์ต่อไปนี้แสดง การตั้งค่า versionCode และ versionName ใน การบล็อก defaultConfig {} และบล็อก productFlavors {}

จากนั้นค่าเหล่านี้จะรวมกันในไฟล์ Manifest ของแอปในระหว่างกระบวนการสร้าง

ดึงดูด

    android {
        ...
        defaultConfig {
            ...
            versionCode 2
            versionName "1.1"
        }
        productFlavors {
            demo {
                ...
                versionName "1.1-demo"
            }
            full {
                ...
            }
        }
    }
    

Kotlin

    android {
        ...
        defaultConfig {
            ...
            versionCode = 2
            versionName = "1.1"
        }
        productFlavors {
            create("demo") {
                ...
                versionName = "1.1-demo"
            }
            create("full") {
                ...
            }
        }
    }
    

ในบล็อก defaultConfig {} ของตัวอย่างนี้ ค่า versionCode บ่งชี้ว่า APK ปัจจุบันมีฟังก์ชัน รุ่นที่สองของแอป และสตริง versionName ระบุ จะปรากฏให้ผู้ใช้เห็นเป็นเวอร์ชัน 1.1 ไฟล์นี้ยังระบุรสชาติของผลิตภัณฑ์อีก 2 แบบด้วย "สาธิต" และ "เต็ม" ตั้งแต่ "การสาธิต" เวอร์ชันผลิตภัณฑ์กำหนด versionName เป็น "สาธิต 1.1", "การสาธิต" บิลด์จะใช้ versionName นี้แทนค่าเริ่มต้น "เต็มรูปแบบ" บล็อกรสชาติของผลิตภัณฑ์ไม่ได้กำหนด versionName ดังนั้น ใช้ค่าเริ่มต้น "1.1"

หมายเหตุ: หากแอปกำหนดเวอร์ชันของแอปโดยตรงใน <manifest> องค์ประกอบ ค่าเวอร์ชันในบิลด์ของ Gradle จะลบล้างการตั้งค่าในไฟล์ Manifest นอกจากนี้ การกำหนดรายการเหล่านี้ ในไฟล์บิลด์ของ Gradle ช่วยให้คุณระบุค่าต่างๆ ได้สำหรับ เวอร์ชันต่างๆ ของแอปกัน เพื่อความยืดหยุ่นที่มากขึ้นและเพื่อหลีกเลี่ยง รายการที่เขียนทับได้เมื่อมีการรวมไฟล์ Manifest ให้นำ จากเอลิเมนต์ <manifest> และกำหนด การตั้งค่าเวอร์ชันในไฟล์บิลด์ของ Gradle แทน

เฟรมเวิร์ก Android มี API เพื่อให้คุณค้นหาระบบได้ เพื่อดูข้อมูลเวอร์ชันเกี่ยวกับแอป หากต้องการรับข้อมูลเวอร์ชัน ให้ใช้ PackageManager.getPackageInfo(java.lang.String, int) วิธี

ระบุข้อกำหนดระดับ API

หากแอปต้องใช้เวอร์ชัน Android ขั้นต่ำที่เฉพาะเจาะจง แพลตฟอร์มของเราคุณสามารถระบุข้อกำหนดเวอร์ชันเป็นการตั้งค่าระดับ API ในไฟล์ build.gradle หรือ build.gradle.kts ของแอป ระหว่างการสร้าง การตั้งค่าเหล่านี้จะผสานรวมเข้ากับไฟล์ Manifest ของแอป การระบุระดับ API เพื่อให้แน่ใจว่าแอปของคุณจะติดตั้งได้ในอุปกรณ์ที่ ที่ใช้แพลตฟอร์ม Android เวอร์ชันที่เข้ากันได้

หมายเหตุ: หากคุณระบุข้อกำหนดระดับ API โดยตรงใน ไฟล์ Manifest ของแอป การตั้งค่าที่เกี่ยวข้องในไฟล์บิลด์ ลบล้างการตั้งค่าในไฟล์ Manifest นอกจากนี้ การกำหนดรายการเหล่านี้ ในไฟล์บิลด์ของ Gradle ช่วยให้คุณระบุค่าต่างๆ ได้สำหรับ เวอร์ชันต่างๆ ของแอปกัน เพื่อความยืดหยุ่นที่มากขึ้นและเพื่อหลีกเลี่ยง รายการที่เขียนทับได้เมื่อมีการรวมไฟล์ Manifest ให้นำ จากเอลิเมนต์ <uses-sdk> และกำหนด API ของคุณ การตั้งค่าระดับในไฟล์บิลด์ของ Gradle แทน

การตั้งค่าระดับ API มีอยู่ 2 แบบ ได้แก่

  • minSdk — เวอร์ชันต่ำสุด ของแพลตฟอร์ม Android ที่แอปจะทำงาน ระบุ ตามตัวระบุระดับ API ของแพลตฟอร์ม
  • targetSdk — ระดับ API ที่ออกแบบมาเพื่อเรียกใช้แอป ในบางกรณี วิธีนี้ทำให้ แอปเพื่อใช้องค์ประกอบหรือลักษณะการทำงานของไฟล์ Manifest ที่กำหนดไว้ในเป้าหมาย ระดับ API ของคุณ แทนการถูกจำกัดให้ใช้เฉพาะระดับที่กำหนด สำหรับระดับ API ขั้นต่ำ

ในการระบุข้อกำหนดระดับ API เริ่มต้นใน build.gradle หรือ build.gradle.kts ให้เพิ่มการตั้งค่าระดับ API อย่างน้อย 1 รายการใน บล็อก defaultConfig{} ที่ฝังอยู่ภายในบล็อก android {} คุณสามารถ ลบล้างค่าเริ่มต้นเหล่านี้สำหรับ เวอร์ชันต่างๆ ของแอปได้โดยการเพิ่มการตั้งค่าให้กับประเภทบิลด์หรือรสชาติของผลิตภัณฑ์

ไฟล์ต่อไปนี้ระบุค่าเริ่มต้น การตั้งค่า minSdk และ targetSdk ใน defaultConfig {} บล็อกและลบล้าง minSdk สำหรับผลิตภัณฑ์ 1 รสชาติ:

ดึงดูด

android {
    ...
    defaultConfig {
        ...
        minSdk 21
        targetSdk 33
    }
    productFlavors {
        main {
            ...
        }
        afterNougat {
            ...
            minSdk 24
        }
    }
}

Kotlin

android {
    ...
    defaultConfig {
        ...
        minSdk = 21
        targetSdk = 33
    }
    productFlavors {
        create("main") {
            ...
        }
        create("afterNougat") {
            ...
            minSdk = 24
        }
    }
}

ขณะเตรียมติดตั้งแอป ระบบจะตรวจสอบค่าของ การตั้งค่าเหล่านี้และเปรียบเทียบกับเวอร์ชันของระบบ หาก ค่า minSdk มากกว่าเวอร์ชันของระบบ ระบบจะป้องกันการติดตั้งแอปดังกล่าว

หากคุณไม่ระบุการตั้งค่าเหล่านี้ ระบบจะถือว่าแอปของคุณ ใช้ได้กับแพลตฟอร์มทุกเวอร์ชัน ค่านี้เทียบเท่ากับการตั้งค่า minSdk เป็น 1

ดูข้อมูลเพิ่มเติมได้ที่ระดับ API คืออะไร สำหรับการตั้งค่าบิลด์ของ Gradle โปรดดูที่กำหนดค่าตัวแปรของบิลด์