Platform tarafından imzalanan uygulamalar, platform paketiyle (android
) aynı (veya uyumlu) imzalama sertifikasını paylaşan uygulamalardır. Platform tarafından imzalanan uygulamalar, sistem uygulaması (sistem resmi bölümünde bulunur) veya sistem dışı uygulama olabilir. Platform tarafından imzalanan paylaşılan UID'ler, platform tarafından imzalanan uygulamaları içeren paylaşılan UID'lerdir (android:sharedUserId
). Hata ayıklama yapılabilir derlemeler, android.os.Build.isDebuggable()
döndüren true
derlemelerdir (ör. userdebug
veya eng
derlemeleri).
Geçmişte cihaz üreticileri, platform imzalı paylaşılan bir UID'ye hangi platform imzalı sistem dışı uygulamaların katılabileceği konusunda çok az kontrole sahipti. Android 15'ten itibaren üreticiler, platform tarafından imzalanan sistem dışı uygulamaların /etc/permissions
dizinindeki sistem yapılandırma XML dosyalarında platform tarafından imzalanan paylaşılan UID'lere katılmasına açıkça izin verebilir. Platform imzalı olmayan bir sistem uygulaması, platform imzalı paylaşılan UID'nin izin verilenler listesine eklenmezse ve uygulama yine de platform imzalı paylaşılan UID'ye katılmaya çalışırsa (manifest dosyasında android:sharedUserId
ile birlikte) bu uygulama, hata ayıklama yapılamayan derlemelere yüklenemez.
İzin verilenler listesi ekleme
Uygulamaların izin verilenler listelerini tek bir XML dosyasında veya birden fazla XML dosyasında listeleyebilirsiniz. Örneğin, frameworks/base/data/etc/package-shareduid-allowlist.xml
:
<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.
- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
-->
<config>
<allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>
Eksik izin verilenler listesini bulma
Eksik izin verilenler listesi girişini bulmak için platform tarafından imzalanan sistem dışı uygulamanızı hata ayıklama yapılamayan bir derlemeye yüklemeyi deneyin ve uygulamanın hâlâ yüklenip yüklenemediğini kontrol edin. Aksi takdirde, cihaz günlüklerinde aşağıdaki uyarı mesajı biçimini arayabilirsiniz:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}