在Android 14系统中,System Apps(系统应用)是预装在设备上的应用,通常由设备制造商、操作系统开发者(如Google)或移动运营商提供。这些应用享有更高的权限级别,但也受到严格的安全管理。以下是关于System Apps权限的详细说明,包括变化和注意点:
System Apps权限的特点
-
预装特权
- System Apps 通常安装在
/system/app
或/system/priv-app
目录下。 - 这些应用默认具有
system
签名,与系统框架共享相同的权限范围。
- System Apps 通常安装在
-
平台签名权限
- 系统应用若使用与平台相同的签名,可以请求一些普通应用无法访问的权限,如:
- READ_PRIVILEGED_PHONE_STATE:读取用户设备的敏感信息(如IMEI)。
- MANAGE_USERS:管理设备上的用户账户。
- PACKAGE_USAGE_STATS:访问应用使用数据。
- 这些权限只能通过
signature
级别授权。
- 系统应用若使用与平台相同的签名,可以请求一些普通应用无法访问的权限,如:
-
Privileged Apps
- 位于
/system/priv-app
目录下的应用称为特权应用(Privileged Apps)。 - 特权应用可以请求额外的权限,如:
- INSTALL_PACKAGES:静默安装应用。
- DELETE_PACKAGES:静默卸载应用。
- WRITE_SECURE_SETTINGS:修改
Settings.Secure
中的安全设置。
- 必须在设备的
privapp-permissions.xml
中显式声明这些权限。
- 位于
-
权限授予方式
- 普通权限(Normal Permissions):自动授予。
- 危险权限(Dangerous Permissions):即使是系统应用,也需要通过运行时权限申请。
- 特权权限(Privileged Permissions):需要在
privapp-permissions.xml
中配置,或者与系统签名匹配。
Android 14的权限变化
Android 14 在安全性和权限管理方面进行了增强,包括对系统应用的限制和优化:
权限精细化
-
动态权限分区
- 针对不同的应用类型,Android 14 引入了更细化的权限分区:
system_core
应用:核心系统应用,权限最高。default_system
应用:普通系统应用,权限受到限制。
- 这种分区限制了低级别系统应用滥用高权限。
- 针对不同的应用类型,Android 14 引入了更细化的权限分区:
-
动态权限管理
- 运行时权限模型进一步强化,即使是系统应用,也需要动态申请一些危险权限。
- Android 14 禁止系统应用使用某些过时或危险的权限(如:WRITE_EXTERNAL_STORAGE)。
隐私保护增强
-
对用户数据的访问限制
- ACCESS_FINE_LOCATION 和 ACCESS_BACKGROUND_LOCATION 等权限需要更明确的用户同意。
- 系统应用也不能绕过这些限制。
-
感知权限的记录与监控
- Android 14 继续改进了权限监控机制,允许用户查看系统应用何时访问了敏感数据(如摄像头、位置、麦克风)。
文件访问权限的变化
- Android 14 对存储权限进行了限制:
- 应用必须使用分区存储(Scoped Storage),无法直接访问
/data
或/sdcard
根目录。 - 系统应用如果需要全面文件访问,必须申请 MANAGE_EXTERNAL_STORAGE 权限,并在设置中启用。
- 应用必须使用分区存储(Scoped Storage),无法直接访问
自定义权限的限制
- 系统应用创建的自定义权限必须显式声明访问策略,并受到 Android 系统的动态管理。
配置权限的文件
以下是影响系统应用权限的关键配置文件:
-
AndroidManifest.xml
- 系统应用声明的权限大多通过此文件定义,例如:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"> <uses-permission android:name="android.permission.READ_PRIVILEGED_PHONE_STATE" /> </manifest>
- 系统应用声明的权限大多通过此文件定义,例如:
-
privapp-permissions.xml
- 位于
/etc/permissions/
,此文件定义了特权应用的权限。例如:<privapp-permissions> <privapp-package name="com.example.privilegedapp"> <permission name="android.permission.INSTALL_PACKAGES" /> <permission name="android.permission.DELETE_PACKAGES" /> </privapp-package> </privapp-permissions>
- 位于
-
platform.xml
- 位于
/etc/permissions/
,定义了权限与应用签名的匹配关系。
- 位于
-
default-permissions.xml
- 定义了默认授予的权限,例如对预装应用授予某些危险权限。
注意事项
-
滥用检测
- Android 14 加强了对系统应用的滥用检测,违规的系统应用可能被用户禁用或卸载。
-
特权权限的审查
- 如果特权应用的权限未在配置文件中声明,应用可能无法启动。
-
定期更新
- 厂商需要定期更新系统应用,以确保兼容性和安全性。
-
开发建议
- 遵循最小权限原则(Least Privilege Principle),避免不必要的高权限申请。
总结
在Android 14中,System Apps的权限体系得到了进一步的精细化和限制,以提高设备安全性和隐私保护。开发者和厂商需要特别关注配置文件中的权限声明,以及遵守Google最新的权限策略,以避免兼容性问题。
结束语 Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!