Kiedy aplikacja jest instalowana przez sklep lub instalatora, sklep lub instalator jest uważany za „zarejestrowanego instalatora”, czyli ostatniego instalatora aplikacji. Przed wersją Androida 14 Android pozwalał innemu instalatorowi sklepu lub aplikacji zostać zarejestrowanym instalatorem i aktualizować aplikację bez powiadamiania użytkownika.
W systemie Android 14 początkowy instalator aplikacji może zadeklarować się jako „właściciel aktualizacji” i być właścicielem aktualizacji aplikacji. Jeśli inny instalator spróbuje zaktualizować aplikację, użytkownik będzie miał możliwość zatwierdzenia nowej aktualizacji przed jej kontynuowaniem.
Włącz pakiety, aby zaktualizować własność
Aby zadeklarować, że sklep lub instalator jest właścicielem pakietu aplikacji, dołącz znacznik update-ownership
do pliku XML sysconfig
dla każdego pakietu w następujący sposób:
<update-ownership package="com.example.application" installer="com.example.installer" />
W tym przykładzie com.example.application
to pakiet aplikacji, który ma być własnością, a com.example.installer
jest właścicielem pakietu. Gdy pakiet ma zgodę na aktualizację własności, inne uprzywilejowane sklepy lub instalatorzy muszą obsłużyć właściciela aktualizacji i uzyskać zgodę użytkownika na aktualizację aplikacji.
Zrezygnuj z pakietów ze zmianami własności
Możesz poprosić swój sklep lub instalatora o wyłączenie podzbioru pakietów ze zmian właściciela aktualizacji, udostępniając listę odrzuconych w pliku APK. Umieszczając pakiet na tej liście, żaden sklep ani instalator nie będzie mógł zażądać aktualizacji własności pakietu.
Aby zrezygnować z możliwości aktualizacji pakietów przez inny sklep lub instalatora:
Dołącz następującą właściwość do oryginalnego pliku
AndroidManifest.xml
sklepu lub instalatora:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>
Ten przykład odwołuje się do listy odrzuconych XML o nazwie
legacyOwnershipDenylist
.Utwórz listę odrzuconych jako surowy zasób XML w następującym formacie:
<deny-ownership>com.example.app1</deny-ownership> <deny-ownership>com.example.app2</deny-ownership>
Jeśli sklep lub instalator poprosi o własność pakietu znajdującego się na liście odrzuconych, własność nie zostanie przyznana, a pakiet będzie nadal zainstalowany, ale nie będzie własnością żadnego instalatora. Co więcej, niezależnie od instalatora, aplikacja znajdująca się na liście odrzuconych nie może być niczyją własnością.
Zestaw pakietów na tej liście może ulec zmianie poprzez aktualizację instalatora APK udostępniającego tę listę. Wszelka własność ustawiona dla pakietu, który zostanie następnie wprowadzony na listę odrzuconych, zostanie wyczyszczona po aktualizacji instalatora. W związku z tym kolejne aktualizacje pakietu aplikacji znajdującego się na liście odrzuconych nie będą wymagały interakcji użytkownika.
Zajmij się właścicielem aktualizacji i uzyskaj zgodę użytkownika
W systemie Android 14, nawet jeśli sklep lub instalator aplikacji ma uprawnienia android.permission.INSTALL_PACKAGES
, nadal musi obsłużyć stan STATUS_PENDING_USER_ACTION
, jeśli chce zaktualizować aplikację, której aktualizacje są własnością innego sklepu lub instalatora.
Przykładowa aplikacja InstallAPKSessionApi.java
pokazuje również, jak obsługiwać STATUS_PENDING_USER_ACTION
.
Ustal własność wstępnie załadowanych aplikacji
Fabrycznie załadowane aplikacje zazwyczaj nie są własnością konkretnego instalatora. Zamiast tego wstępnie załadowanym aplikacjom przypisywany jest nowy właściciel przy użyciu konfiguracji systemu, jak pokazano w opcji Opt pakiety w celu aktualizacji własności .