2025年android framework之priv-app,系统特权app权限那些坑

android framework之priv-app,系统特权app权限那些坑csdn 在线学习课程 课程咨询答疑和新课信息 交流群 进行课程讨论 android 跨进程通信实战视频课程 加群获取优惠 hi 大家好 在做 framework 开发过程中相信很多朋友会有一些关于系统应用的一些权限问题 在学习过千里马相关系统内置应用相关课程后

大家好,我是讯享网,很高兴认识大家。

csdn在线学习课程,课程咨询答疑和新课信息:交流群:进行课程讨论

android跨进程通信实战视频课程(加群获取优惠)
hi,大家好!
在做framework开发过程中相信很多朋友会有一些关于系统应用的一些权限问题,在学习过千里马相关系统内置应用相关课程后,大家也知道了系统内置应用一般放在system/app路径下,这样就不会被用户随意卸载了,但是app放在这下面具体运行起来有哪些权限和没有哪些权限就不是很清楚了。

这里刚好做一个比较全面总结:
android中app主要有3个路径可以放:
data/app —这个就是最为普遍 的第三方应用的apk路径,安装在这里一般 可以随意 进行卸载
system/app --系统内置应用,这里面的app是不可以 进行卸载的,所以叫做系统应用,但是系统应用的每个应用的签名却没有要求,即可以是自己应用根据情况确定,比如大部分内置应用是platform,也有shared,media等
system/priv-app —这个部分是android后来版本新加入系统特权应用路径,这里面应用和system/app一样是不可以卸载的,但是这里大家肯定会想他和system/app有什么区别么?这里其实最主要是在于二者目录的权限apk运行起来不一样

那么这里是不是有个疑问,那么是不是系统应用如果在priv-app下是不是权限就是最高 ?
就可以自然拥有很多系统权限才可以干的是它都可以干?这个其实并不是这样的哦,权限虽和你是不是priv-app有关系 ,但并不是说你 预制在priv-app既可以拥有系统权限。这里我们就举个例子吧:
以下是一个可以 修改任何app的组件是否开放(即enable状态)的一个权限,这里要求是需要声明以下权限的,普通权限如网络什么的这里声明其实就可以了,但是这是系统级别当然不是普通第三方应用就可以拥有。

 <uses-permission android:name="android.permission.CHANGE_COMPONENT_ENABLED_STATE" /> 
讯享网

在这里插入图片描述
这里看这权限要求保护级别是signature(平台签名platform)或者privileged(特权app),
那么我们来尝试把app预制到priv-app里面去,具体方法:
在这里插入图片描述
在 对应mk中加入:LOCAL_PRIVILEGED_MODULE := true
这里编译后就会把apk预制到priv-app了,然后我们运行一下,发现依然会报出没有权限相关的运行错误。。。。这个是为啥明明我们就是priv-app.
这里其实我们还忽略了一个重要的,那就是还要去framework对应permission文件下进行声明权限具体方案:
android-8.1.0_r1/frameworks/base/data/etc/目录下有一个 privapp-permissions-platform.xml文件,这里面有各priv-app权限声明
在这里插入图片描述
比如我们看到musicfx就有 对一个权限 进行声明,所以这里我们也需要在这里对我们应用进行声明,具体就完全参考musicfx既可以,只需要改变一下包名既可以

小讯
上一篇 2025-03-29 20:21
下一篇 2025-02-08 22:55

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/31446.html