กำหนดค่าและจัดการการเป็นเจ้าของการอัปเดตสำหรับแอป

เมื่อ Store หรือเครื่องมือติดตั้งแอปติดตั้งแอป ระบบจะถือว่า Store หรือเครื่องมือติดตั้งแอปนั้นเป็น "เครื่องมือติดตั้งที่บันทึกไว้" ซึ่งหมายถึงเครื่องมือติดตั้งแอปล่าสุดของแอปนั้น ก่อน Android 14 Android อนุญาตให้ Store หรือเครื่องมือติดตั้งแอปอื่นเป็นเครื่องมือติดตั้งที่บันทึกไว้และอัปเดตแอปได้โดยไม่ต้องแจ้งให้ผู้ใช้ทราบ

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

เลือกใช้แพ็กเกจเพื่ออัปเดตการเป็นเจ้าของ

หากต้องการประกาศว่า Store หรือโปรแกรมติดตั้งเป็นเจ้าของแพ็กเกจแอป ให้ใส่แท็ก update-ownership ใน sysconfig XML ของแพ็กเกจแต่ละรายการ ดังนี้

<update-ownership package="com.example.application" installer="com.example.installer" />

ในตัวอย่างนี้ com.example.application คือแพ็กเกจแอปที่จะเป็นเจ้าของ และ com.example.installer คือเจ้าของแพ็กเกจ เมื่อเลือกแพ็กเกจเพื่ออัปเดตการเป็นเจ้าของแล้ว ร้านค้าหรือโปรแกรมติดตั้งที่มีสิทธิ์อื่นๆ จะต้องจัดการเจ้าของการอัปเดตและขอความยินยอมจากผู้ใช้เพื่ออัปเดตแอป

เลือกไม่ใช้แพ็กเกจในการเปลี่ยนแปลงการเป็นเจ้าของ

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

วิธีเลือกไม่ให้แพ็กเกจอัปเดตโดยร้านค้าหรือโปรแกรมติดตั้งอื่น

  1. ใส่พร็อพเพอร์ตี้ต่อไปนี้ในไฟล์ AndroidManifest.xml ของร้านค้าหรือโปรแกรมติดตั้งเดิม

    <application …>
      <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST"
                android:resource="@xml/legacyOwnershipDenylist" />
    </application>
    

    ตัวอย่างนี้อ้างอิงรายการที่ปฏิเสธ XML ชื่อ legacyOwnershipDenylist

  2. สร้างรายการที่ปฏิเสธเป็นแหล่งข้อมูล XML ดิบโดยใช้รูปแบบต่อไปนี้

    <deny-ownership>com.example.app1</deny-ownership>
    <deny-ownership>com.example.app2</deny-ownership>
    

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

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

จัดการเจ้าของการอัปเดตและขอความยินยอมจากผู้ใช้

ใน Android 14 แม้ว่า Store หรือเครื่องมือติดตั้งแอปจะมีสิทธิ์ android.permission.INSTALL_PACKAGES แต่ก็ยังต้องจัดการสถานะ STATUS_PENDING_USER_ACTION อยู่หากต้องการอัปเดตแอปที่การอัปเดตเป็นของ Store หรือเครื่องมือติดตั้งอื่น

แอปตัวอย่าง InstallAPKSessionApi.java ยังแสดงวิธีจัดการ STATUS_PENDING_USER_ACTION ด้วย

กำหนดความเป็นเจ้าของสำหรับแอปที่โหลดล่วงหน้า

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