admin管理员组文章数量:1542784
AOSP-应用获取root权限+System用户提示
- 一、应用获取root权限
- 二、System用户提示
一、应用获取root权限
-
源码路径:framework/base/core/java/com/android/internal/os/ZygoteConnection.java
-
修改思路
根据app的包名来判断,授予不同的权限等级
权限等级说明,下面0与1000代表Linux下不同用户组的权限
root权限:对应0
system权限:对应1000
注意:修改为root或system权限会导致无法使用SharedPreferences
- 源码
if (!args.gidSpecified) {
args.gid = peer.getGid();
args.gidSpecified = true;
}
- 为不同app设置不同的权限
if (!args.gidSpecified) {
args.gid = peer.getGid();
args.gidSpecified = true;
}
//zjp add
if((args.niceName!=null) && (args.niceName.contains(".test.")) ){
args.uid=1000;
args.gid=1000;
}
if((args.niceName!=null) && (args.niceName.contains(".test.app"))){
args.uid=0;
args.gid=0;
}
二、System用户提示
上面的用户组如果设置到1000
app在运行的时候会提示“W/ContextImpl: Calling a method in the system process without a qualified user: …”
下面介绍如何屏蔽该提示
- 源码路径: /frameworks/base/core/java/android/app/ContextImpl.java
- 源码
private void warnIfCallingFromSystemProcess() {
if (Process.myUid() == Process.SYSTEM_UID {
Slog.w(TAG, "Calling a method in the system process without a qualified user: "
+ Debug.getCallers(5));
}
}
- 修改
private void warnIfCallingFromSystemProcess() {
//zjp update
if (Process.myUid() == Process.SYSTEM_UID && !Debug.getCallers(5).contains("com.test.") {
Slog.w(TAG, "Calling a method in the system process without a qualified user: "
+ Debug.getCallers(5));
}
}
版权声明:本文标题:一、AOSP-应用获取root权限+System用户提示 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://m.elefans.com/dongtai/1727080931a1096823.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论