وقتی یک برنامه توسط یک فروشگاه یا نصاب نصب میشود، آن فروشگاه یا نصاب به عنوان "نصبکنندهی رکورد" در نظر گرفته میشود، به این معنی که آخرین نصبکنندهی برنامه است. قبل از اندروید ۱۴، اندروید به فروشگاه یا نصبکنندهی برنامهی دیگری اجازه میداد تا به عنوان نصبکنندهی رکورد تبدیل شود و برنامه را بدون اطلاع کاربر بهروزرسانی کند.
در اندروید ۱۴، نصبکننده اولیه یک برنامه میتواند خود را «مالک بهروزرسانی» اعلام کند و بهروزرسانیهای برنامه را در اختیار داشته باشد. اگر نصبکننده دیگری سعی در بهروزرسانی برنامه داشته باشد، به کاربر این فرصت داده میشود که قبل از ادامه، بهروزرسانی جدید را تأیید کند.
برای بهروزرسانی مالکیت، بستهها را انتخاب کنید
برای اعلام اینکه یک فروشگاه یا نصبکننده مالک یک بسته برنامه است، برچسب 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.permission.INSTALL_PACKAGES را داشته باشد، اگر بخواهد برنامهای را بهروزرسانی کند که بهروزرسانیهای آن متعلق به فروشگاه یا نصبکننده دیگری است، همچنان باید وضعیت STATUS_PENDING_USER_ACTION را مدیریت کند.
برنامه نمونه InstallAPKSessionApi.java همچنین نحوه مدیریت STATUS_PENDING_USER_ACTION را نشان میدهد.
ایجاد مالکیت برای برنامههای از پیش بارگذاری شده
برنامههای از پیش نصبشده معمولاً متعلق به یک نصبکننده خاص نیستند. در عوض، برنامههای از پیش نصبشده با استفاده از پیکربندی سیستم، همانطور که در بخش «انتخاب بستهها برای بهروزرسانی مالکیت» نشان داده شده است، یک مالک جدید پیدا میکنند.