在system/priv-app目錄主要是存放手機廠商定製的系統的系統級應用,好比phone app,settings app,systemui app等,這些應用須要系統及權限,而又不能被用戶卸載掉。這個目錄是在Android KitKat新增長的分區。在KitKat以前版本在系統分區的全部apks均可以使用系統權限,這個更改使手機廠商可以更好的控制捆綁軟件對敏感權限的訪問。手機廠商在定製一些系統軟件的時候軟件也會須要專門給priv-app添加selinux policy。固然應用須要獲取系統權限還有其餘的辦法,在AndroidManifest.xml文件中添加 android:sharedUserId="android.uid.sysytem",同時給該apk添加系統簽名,好比小米手機就須要給apk添加小米的系統權限。java
其實從安全的角度考慮,谷歌也不但願使用WebView控件的system/app/的應用擁有系統權限,好比Chrome,Chrome一直是黑客喜歡利用的攻擊點,因此谷歌在代碼力會檢測使用WebView控件的應用有沒有系統權限。貼一段代碼:linux
194 static WebViewFactoryProvider getProvider() { 195 synchronized (sProviderLock) { 196 // For now the main purpose of this function (and the factory abstraction) is to keep 197 // us honest and minimize usage of WebView internals when binding the proxy. 198 if (sProviderInstance != null) return sProviderInstance; 199 200 final int uid = android.os.Process.myUid(); 201 if (uid == android.os.Process.ROOT_UID || uid == android.os.Process.SYSTEM_UID 202 || uid == android.os.Process.PHONE_UID || uid == android.os.Process.NFC_UID 203 || uid == android.os.Process.BLUETOOTH_UID) { 204 throw new UnsupportedOperationException( 205 "For security reasons, WebView is not allowed in privileged processes"); 206 }注意黃色標記的進程都是具備system權限的。以上就是system/priv-app/分區的特殊之處。