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

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

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

تفعيل الحِزم لتعديل الملكية

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

<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.

تحديد ملكية التطبيقات المُحمَّلة مُسبقًا

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