تكوين ملكية التحديث للتطبيقات والتعامل معها، تكوين ملكية التحديث للتطبيقات والتعامل معها

عندما يتم تثبيت تطبيق ما بواسطة متجر أو أداة تثبيت، يعتبر المتجر أو أداة التثبيت "مثبت السجل" أي آخر أداة تثبيت للتطبيق. قبل إصدار Android 14، سمح Android لمتجر آخر أو أداة تثبيت تطبيق أخرى بأن تصبح أداة تثبيت السجل وتحديث التطبيق دون إخطار المستخدم.

في Android 14، يمكن أن يعلن المثبت الأولي لأحد التطبيقات عن نفسه "مالك التحديث" ويملك التحديثات للتطبيق. إذا حاول مُثبت آخر تحديث التطبيق، فسيتم منح المستخدم الفرصة للموافقة على التحديث الجديد قبل المتابعة.

تمكين الحزم لتحديث الملكية

للإعلان عن أن المتجر أو المثبت يمتلك حزمة تطبيق، قم بتضمين علامة update-ownership في sysconfig XML الخاص بك لكل حزمة على النحو التالي:

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

في هذا المثال، com.example.application هو حزمة التطبيق التي سيتم ملكها و com.example.installer هو مالك الحزمة. عندما يتم الاشتراك في حزمة لتحديث الملكية، يتعين على المتاجر أو المثبتين المميزين الآخرين التعامل مع مالك التحديث والحصول على موافقة المستخدم لتحديث التطبيق.

إلغاء الاشتراك في الحزم من تغييرات الملكية

يمكنك جعل متجرك أو أداة التثبيت الخاصة بك تختار مجموعة فرعية من الحزم من تغييرات مالك التحديث من خلال توفير قائمة الحظر في 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 المثبت الذي يوفر القائمة. يتم مسح أي ملكية تم تعيينها لحزمة يتم تقديمها لاحقًا إلى قائمة الرفض عند تحديث برنامج التثبيت. وعلى هذا النحو، لن تتطلب التحديثات اللاحقة لحزمة التطبيق في قائمة الرفض تدخل المستخدم.

التعامل مع مالك التحديث والحصول على موافقة المستخدم

مع Android 14، حتى إذا كان متجر أو مثبت تطبيق لديه إذن android.permission.INSTALL_PACKAGES ، فإنه لا يزال بحاجة إلى التعامل مع حالة STATUS_PENDING_USER_ACTION إذا كان يريد تحديث تطبيق مملوكة تحديثاته لمتجر أو مثبت آخر.

يوضح نموذج التطبيق InstallAPKSessionApi.java أيضًا كيفية التعامل مع STATUS_PENDING_USER_ACTION .

إنشاء ملكية للتطبيقات المحملة مسبقًا

عادةً لا تكون التطبيقات المحملة مسبقًا مملوكة لمثبت معين. وبدلاً من ذلك، يتم تعيين مالك جديد للتطبيقات المحملة مسبقًا باستخدام تكوين النظام كما هو موضح في تمكين الحزم لتحديث الملكية .