عندما يتم تثبيت تطبيق من خلال متجر أو برنامج تثبيت، يُعتبر المتجر أو برنامج التثبيت "برنامج التثبيت الأساسي"، أي آخر برنامج تم استخدامه لتثبيت التطبيق. قبل 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. عند تضمين حزمة في هذه القائمة، لن يتمكّن أي متجر أو برنامج تثبيت من طلب ملكية التحديث للحزمة.
لإيقاف إمكانية تحديث الحِزم من خلال متجر أو برنامج تثبيت آخر، اتّبِع الخطوات التالية:
ضمِّن السمة التالية في ملف
AndroidManifest.xmlالخاص بالمتجر أو برنامج التثبيت الأصلي:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>يشير هذا المثال إلى قائمة حظر بتنسيق XML باسم
legacyOwnershipDenylist.أنشئ قائمة حظر كمورد 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.
تحديد ملكية التطبيقات المحمَّلة مسبقًا
لا يمتلك برنامج تثبيت معيّن عادةً التطبيقات المحمَّلة مسبقًا. بدلاً من ذلك، يتم تعيين مالك جديد للتطبيقات المحمَّلة مسبقًا باستخدام إعدادات النظام كما هو موضّح في تفعيل ميزة "مالك التحديث" لحِزم التطبيقات.