priv-app 系统应用权限
参考:https://source.android.com/devices/tech/config/perms-allowlist?hl=zh-cn
特权应用
特权应用是 priv-app 目录下的系统应用。
- Android 8.1 and lower:priv-app位于/system 分区
- Android 9 and higher:priv-app位于/system, /product, /vendor 分区
下文用partition统一指代 /system, /product, /vendor
特权应用权限XML文件
从 Android 8.0 开始,制造商必须在 partition/etc/permissions 目录下的privapp-permissions-xxxxxx.XML 文件中,明确每个特许app的权限。
privapp-permissions-xxxxxx.XML 文件只有与相应的app位于同一partition时才起作用。
例如,OnePlus5T的HydrogenOS 10.0.3中的/etc/permissions文件夹中包含如下文件: 其中,com.incorporateapps.fakegps.fre不是系统原生的priv-app,而是我们使用systemizer这个magisk module放入system/priv-app,使其变为系统app的。
XML文件修改
我们将其内容修改为如下:
<?xml version="1.0" encoding="utf-8"?>
<permissions>
<privapp-permissions package="com.incorporateapps.fakegps.fre">
<permission name="android.permission.ACCESS_COARSE_LOCATION"/>
<permission name="android.permission.ACCESS_FINE_LOCATION"/>
<permission name="android.permission.ACCESS_GPS"/>
<permission name="android.permission.ACCESS_MOCK_LOCATION"/>
<permission name="android.permission.ACCESS_NETWORK_STATE"/>
<permission name="android.permission.FOREGROUND_SERVICE"/>
<permission name="android.permission.INTERNET"/>
<permission name="android.permission.VIBRATE"/>
<permission name="android.permission.WAKE_LOCK"/>
<permission name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
<permission name="android.permission.INSTALL_LOCATION_PROVIDER"/>
<permission name="android.permission.UPDATE_APP_OPS_STATS"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
<permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<permission name="android.permission.ACCESS_MOCK_LOCATION"/>
</privapp-permissions>
</permissions>
也就是加上了:
<permission name="android.permission.INSTALL_LOCATION_PROVIDER"/>
<permission name="android.permission.UPDATE_APP_OPS_STATS"/>
<permission name="android.permission.WRITE_SECURE_SETTINGS"/>
<permission name="android.permission.CHANGE_COMPONENT_ENABLED_STATE"/>
<permission name="android.permission.ACCESS_MOCK_LOCATION"/>
|