Android系统的system/app和system/priv-app
Android 4.4起引入了/system/priv-app目錄概念,那么它和原來的/system/app目錄有什么區(qū)別呢?
一句話答案:
只有在/system/priv-app目錄下的app或者和這個目錄下的app相同簽名的app才可以使用android:protectionLevel=signatureOrSystem中的權(quán)限
Android官方文檔解釋 “signatureOrSystem” 級別。
android有4種權(quán)限:
- normal:低風險權(quán)限,只要申請了就可以使用(在AndroidManifest.xml中添加<uses-permission>標簽),安裝時不需要用戶確認;
- dangerous:高風險權(quán)限,安裝時需要用戶的確認才可使用;
- signature:只有當申請權(quán)限的應(yīng)用程序的數(shù)字簽名與聲明此權(quán)限的應(yīng)用程序的數(shù)字簽名相同時(如果是申請系統(tǒng)權(quán)限,則需要與系統(tǒng)簽名相同),才能將權(quán)限授給它;
- signatureOrSystem:簽名相同,或者申請權(quán)限的應(yīng)用為系統(tǒng)應(yīng)用(在system image中)。
這些權(quán)限都在frameworks/base/core/res/AndroidManifest.xml里面定義:
<permission android:name="com.android.alarm.permission.SET_ALARM"android:label="@string/permlab_setAlarm"android:description="@string/permdesc_setAlarm"android:protectionLevel="normal" /><permission android:name="android.permission.READ_CONTACTS"android:permissionGroup="android.permission-group.CONTACTS"android:label="@string/permlab_readContacts"android:description="@string/permdesc_readContacts"android:protectionLevel="dangerous" /><permission android:name="android.permission.ACCESS_IMS_CALL_SERVICE"android:permissionGroup="android.permission-group.PHONE"android:label="@string/permlab_accessImsCallService"android:description="@string/permdesc_accessImsCallService"android:protectionLevel="signature|system" /><permission android:name="android.permission.RECEIVE_EMERGENCY_BROADCAST"android:protectionLevel="signature|privileged" />system/app下的一般是Android系統(tǒng)內(nèi)置的應(yīng)用,例如:相機、瀏覽器、藍牙等等
system/priv-app下的一般時手機廠商預(yù)置的應(yīng)用,例如:與手機廠商合作的各種應(yīng)用。
system/app、system/priv-app目錄下的app什么時候安裝
Android系統(tǒng)啟動時,PackageManagerService由SystemServer啟動,PackageManagerService會掃描 /data/app、/system/app、/system/priv-app、/vendor/app、/vendor/overlay、/oem/app等等目錄,可以理解為會把這些目錄中的Apk安裝一遍,PackageManagerService會結(jié)合上面提到的packages.xml把各個App解析成PackageParser.Package對象。
手機app開發(fā)和機頂盒app開發(fā)的區(qū)別
手機app開發(fā)是直接基于Android原生無裁剪的SDK開發(fā)的,直接使用原生系統(tǒng)提供的各種API,且一般安裝在用戶目錄 data/app 之下。
機頂盒的系統(tǒng)是基于原生AOSP裁剪并進行相應(yīng)擴展而來的系統(tǒng),在其上開發(fā)的app調(diào)用了很多非原生自帶的API等。且一般安裝在系統(tǒng)目錄 system/app 或者廠商定制目錄 vendor/app 之下.
參考:
關(guān)于system/priv-app和system/app目錄以及權(quán)限
system/priv-app和system/app
/system/app 和 /system/priv-app 有什么區(qū)別?
[Android AOSP] /system/priv-app 和 /system/app區(qū)別
預(yù)制到system/app下面開機卻沒有
如何將apk文件更新到系統(tǒng)中vendor文件夾下
adb將Apk內(nèi)置到系統(tǒng)中(system/priv-app)
總結(jié)
以上是生活随笔為你收集整理的Android系统的system/app和system/priv-app的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: RFID区域实时定位系统
- 下一篇: Android获取SystemPrope