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

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

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既可以,只需要改变一下包名既可以

分区: my_bigball - 文件: my_bigball.txt (单位: MB) 测试机 对比机 差异(MB) 标记 路径 大小(MB) 路径 大小(MB) 差异(MB) 标记 y_bigball 40 y_bigball 570272 -570232 减小 y_bigball/app 4 y_bigball/app 210660 -210656 减小 y_bigball/app/Facebook-appmanager 4712 -4712 除去 y_bigball/app/Facebook-appmanager/Facebook-appmanager.apk 4708 -4708 除去 y_bigball/app/GoogleAssistantShell 968 -968 除去 y_bigball/app/GoogleAssistantShell/GoogleAssistantShell.apk 964 -964 除去 y_bigball/app/GoogleContacts 13624 -13624 除去 y_bigball/app/GoogleContacts/GoogleContacts.apk 13620 -13620 除去 y_bigball/app/GoogleWallet 11360 -11360 除去 y_bigball/app/GoogleWallet/GoogleWallet.apk 11356 -11356 除去 y_bigball/app/LatinImeGoogle 46932 -46932 除去 y_bigball/app/LatinImeGoogle/LatinImeGoogle.apk 46928 -46928 除去 y_bigball/app/Meet 53028 -53028 除去 y_bigball/app/Meet/Meet.apk 53024 -53024 除去 y_bigball/app/Photos 80032 -80032 除去 y_bigball/app/Photos/Photos.apk 80028 -80028 除去 y_bigball/applist 4 y_bigball/applist 8 -4 减小 y_bigball/applist/applist.txt 4 -4 除去 y_bigball/build.prop 4 y_bigball/build.prop 4 0 相同 y_bigball/del-app-pre 198480 -198480 除去 y_bigball/del-app-pre/Drive_del 32532 -32532 除去 y_bigball/del-app-pre/Drive_del/Drive.apk 32528 -32528 除去 y_bigball/del-app-pre/Facebook 200 -200 除去 y_bigball/del-app-pre/Facebook/Facebook.apk 196 -196 除去 y_bigball/del-app-pre/GoogleFindMyDevice 7076 -7076 除去 y_bigball/del-app-pre/GoogleFindMyDevice/GoogleFindMyDevice.apk 7072 -7072 除去 y_bigball/del-app-pre/GoogleFitbit 39680 -39680 除去 y_bigball/del-app-pre/GoogleFitbit/GoogleFitbit.apk 39676 -39676 除去 y_bigball/del-app-pre/GoogleHome 51560 -51560 除去 y_bigball/del-app-pre/GoogleHome/GoogleHome.apk 51556 -51556 除去 y_bigball/del-app-pre/GoogleOne 15996 -15996 除去 y_bigball/del-app-pre/GoogleOne/GoogleOne.apk 15992 -15992 除去 y_bigball/del-app-pre/Videos_del 19676 -19676 除去 y_bigball/del-app-pre/Videos_del/Videos.apk 19672 -19672 除去 y_bigball/del-app-pre/YTMusic_del 31756 -31756 除去 y_bigball/del-app-pre/YTMusic_del/YTMusic.apk 31752 -31752 除去 y_bigball/etc 8 y_bigball/etc 80 -72 减小 y_bigball/etc/NOTICE.xml.gz 4 y_bigball/etc/NOTICE.xml.gz 4 0 相同 y_bigball/etc/default-permissions 8 -8 除去 y_bigball/etc/default-permissions/facebook_default_permissions.xml 4 -4 除去 y_bigball/etc/engineermode 8 -8 除去 y_bigball/etc/engineermode/config.json 4 -4 除去 y_bigball/etc/extension 8 -8 除去 y_bigball/etc/extension/feature_rsa4.0_t2_default_app.xml 4 -4 除去 y_bigball/etc/permissions 12 -12 除去 y_bigball/etc/permissions/com.oplus.android.feature.PAI.xml 4 -4 除去 y_bigball/etc/permissions/facebook_privapp_permissions.xml 4 -4 除去 y_bigball/etc/region 8 -8 除去 y_bigball/etc/region/build.prop 4 -4 除去 y_bigball/etc/rsa_chrome_config_homepage.xml 4 -4 除去 y_bigball/etc/sysconfig 24 -24 除去 y_bigball/etc/sysconfig/asi_infrastructure.xml 4 -4 除去 y_bigball/etc/sysconfig/cds-feature-support.xml 4 -4 除去 y_bigball/etc/sysconfig/com.google.android.dialer.support.xml 4 -4 除去 y_bigball/etc/sysconfig/com_google_android_dialer_call_recording_audio_support.xml 4 -4 除去 y_bigball/etc/sysconfig/facebook_sysconfig.xml 4 -4 除去 y_bigball/framework 8 -8 除去 y_bigball/framework/com.google.android.dialer.support.jar 4 -4 除去 y_bigball/lib 4 y_bigball/lib 4 0 相同 y_bigball/lib64 4 y_bigball/lib64 4 0 相同 y_bigball/overlay 4 y_bigball/overlay 64 -60 减小 y_bigball/overlay/GmsConfigOverlayASI_Infrastructure 12 -12 除去 y_bigball/overlay/GmsConfigOverlayASI_Infrastructure/GmsConfigOverlayASI_Infrastructure.apk 8 -8 除去 y_bigball/overlay/GmsConfigOverlayCommonEx 24 -24 除去 y_bigball/overlay/GmsConfigOverlayCommonEx/GmsConfigOverlayCommonEx.apk 20 -20 除去 y_bigball/overlay/GmsConfigOverlayComms 12 -12 除去 y_bigball/overlay/GmsConfigOverlayComms/GmsConfigOverlayComms.apk 8 -8 除去 y_bigball/overlay/GmsConfigOverlayGSA 12 -12 除去 y_bigball/overlay/GmsConfigOverlayGSA/GmsConfigOverlayGSA.apk 8 -8 除去 y_bigball/priv-app 4 y_bigball/priv-app 160956 -160952 减小 y_bigball/priv-app/AndroidSystemIntelligence_Infrastructure 17868 -17868 除去 y_bigball/priv-app/AndroidSystemIntelligence_Infrastructure/AndroidSystemIntelligence_Infrastructure.apk 17748 -17748 除去 y_bigball/priv-app/AndroidSystemIntelligence_Infrastructure/oat 116 -116 除去 y_bigball/priv-app/AndroidSystemIntelligence_Infrastructure/oat/arm64 112 -112 除去 y_bigball/priv-app/AndroidSystemIntelligence_Infrastructure/oat/arm64/AndroidSystemIntelligence_Infrastructure.vdex 108 -108 除去 y_bigball/priv-app/CrossDeviceServicesStub 1696 -1696 除去 y_bigball/priv-app/CrossDeviceServicesStub/CrossDeviceServicesStub.apk 1692 -1692 除去 y_bigball/priv-app/Facebook-installer 284 -284 除去 y_bigball/priv-app/Facebook-installer/Facebook-installer.apk 280 -280 除去 y_bigball/priv-app/Facebook-services 2240 -2240 除去 y_bigball/priv-app/Facebook-services/Facebook-services.apk 2168 -2168 除去 y_bigball/priv-app/Facebook-services/oat 68 -68 除去 y_bigball/priv-app/Facebook-services/oat/arm64 64 -64 除去 y_bigball/priv-app/Facebook-services/oat/arm64/Facebook-services.vdex 60 -60 除去 y_bigball/priv-app/GoogleDialer 43032 -43032 除去 y_bigball/priv-app/GoogleDialer/GoogleDialer.apk 42640 -42640 除去 y_bigball/priv-app/GoogleDialer/oat 388 -388 除去 y_bigball/priv-app/GoogleDialer/oat/arm64 384 -384 除去 y_bigball/priv-app/GoogleDialer/oat/arm64/GoogleDialer.vdex 380 -380 除去 y_bigball/priv-app/Messages 84444 -84444 除去 y_bigball/priv-app/Messages/Messages.apk 83028 -83028 除去 y_bigball/priv-app/Messages/oat 1412 -1412 除去 y_bigball/priv-app/Messages/oat/arm64 1408 -1408 除去 y_bigball/priv-app/Messages/oat/arm64/Messages.vdex 1404 -1404 除去 y_bigball/priv-app/PlayAutoInstallConfig 12 -12 除去 y_bigball/priv-app/PlayAutoInstallConfig/PlayAutoInstallConfig.apk 8 -8 除去 y_bigball/priv-app/PrivateComputeServices 11376 -11376 除去 y_bigball/priv-app/PrivateComputeServices/PrivateComputeServices.apk 11284 -11284 除去 y_bigball/priv-app/PrivateComputeServices/oat 88 -88 除去 y_bigball/priv-app/PrivateComputeServices/oat/arm64 84 -84 除去 y_bigball/priv-app/PrivateComputeServices/oat/arm64/PrivateComputeServices.vdex 80 -80 除去 文件汇总 80 2284932 -2284852 my_bigball路径下: 减小941976.00MB 增大0.00MB 新增文件0.00MB 减少文件1342876.00MB 上面是my_bigball解析出来结果,下面是测试机du -a出来的结果(单位kb),分析一下为什么输出结果路径列是y_bigball,大小也不正确,修改脚本 4 my_bigball/app 0 my_bigball/applist/applist.txt 4 my_bigball/applist 4 my_bigball/build.prop 4 my_bigball/etc/NOTICE.xml.gz 8 my_bigball/etc 4 my_bigball/lib 4 my_bigball/lib64 4 my_bigball/overlay 4 my_bigball/priv-app 40 my_bigball
08-08
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千里马学框架

帮助你了,就请我喝杯咖啡

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值