هنگامی که یک برنامه توسط یک فروشگاه یا نصب کننده نصب می شود، فروشگاه یا نصب کننده به عنوان "نصب کننده رکورد" به معنای آخرین نصب کننده برنامه در نظر گرفته می شود. قبل از اندروید 14، اندروید به فروشگاه یا نصب کننده برنامه دیگری اجازه می داد تا نصب کننده رکورد باشد و بدون اطلاع کاربر، برنامه را به روز کند.
در اندروید 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
را نشان می دهد.
مالکیت برنامه های از پیش بارگذاری شده را ایجاد کنید
برنامه های از پیش بارگذاری شده معمولاً متعلق به نصب کننده خاصی نیستند. در عوض، به برنامههای از پیش بارگذاریشده با استفاده از پیکربندی سیستم، همانطور که در بستههای Opt in نشان داده شده است، مالک جدیدی اختصاص داده میشود تا مالکیت بهروزرسانی شود .