Android中获取系统级权限(sharedUserId的使用以及INSTALL_FAILED_SHARED_USER_INCOMPATIBLE问题的解决)

一、前言

近段时间我们打算针对公司已有的设备做一套设备管理系统,采集设备的数据、给设备发送指令。

过程中发现代码执行reboot命令的时候长时间未响应,但是我去adb中执行reboot又是可以的,而且以往从来也没有出现过这个情况,经过我反复排查发现是这批设备没有进行root的原因,导致我的app没有root权限,无法执行这些命令

可是厂家给的app装上竟然可以执行这些命令

原本为了工作的顺利进行,并不打算揪住这一个小的点浪费时间了,不过我是个喜欢刨根问底的人,于是便有了今天这篇博客,这是我这两天查阅各种资料和各种调试测试出来的结果,希望对大家有所帮助

二、获得权限

做一件事情之前我们先搞清楚他的概念,这样理解起来才会顺畅

我们的应用想要获取系统级权限有两种方法:

(1)设备root

(2*)在AndroidManifest中添加

android:sharedUserId="android.uid.system"

简单解释下sharedUserId这个属性,通过设置同一个User id的使得多个应用可以运行在同一个进程中。而将sharedUserId设置成android.uid.system则可以将该应用和系统应用运行在同一进程中,于是乎便有了系统权限

三、加入sharedUserId出现的问题

Manifest文件中加入sharedUserId后,我们会发现一个问题

installation failed

不管是调试安装还是打包安装,都会报一个INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的安装错误

这边就需要阐述一下这个问题出现的原因,我们从设计思想上来反推

如果任意一个app加上跟你一样的sharedUserId都可以与你的app运行在同一进程和你的app共享数据,那么我们的app数据安全谁来保障,肯定不行是吧,所以当你加上这个的时候,安装包是不能安装的

那么怎么样才能安装上呢?

四、解决安装失败(INSTALL_FAILED_SHARED_USER_INCOMPATIBLE的问题)

使用sharedUserId我们需要记住一个概念

使用同一个sharedUserId的应用,需要使用同一个签名文件

(一)下载相关文件

于是乎,想要安装在android设备上,就需要找到android原生应用相同的签名

在google的git上我们可以拿到我们想要的东西

https://android.googlesource.com/platform/build/+/donut-release/target/product/security/

需要的就是这两个签名文件

签名文件

这里需要特别说明一下

如果使用的设备厂家没有对这个改动过,则使用google给的这两个就行了

我碰到过有的设备因为厂家做过处理,所以该文件需要向厂家索取,否则无法还是会导致安装不上的问题

问厂家要的签名工具

除此之外,还需要keytool工具

https://github.com/getfatday/keytool-importkeypair

ketool工具下载

(二)生成.jks签名文件

1、在项目更目录下创建文件夹signApk,并将签名工具和签名文件都放到该文件夹下

创建打包文件夹

2、在该文件夹下创建signature.sh脚本文件,方便直接生成签名

signApk文件夹

编写signature文件

signature.sh
./keytool-importkeypair -k giftedcat.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias key0

giftedcat.jks 是生成签名文件的名称

123456 是签名的密码

key0 是签名的别名

如果是在windows下的话 双击便可以得到签名文件了

生成的jks签名

3.在Android Studio中使用

这一步的话,其实也不需要我过多叙述,相信大家已经是烂熟于心了

签名引用

到这一步,我们的app获取系统级权限就算是大功告成了

已经可以跑起来了,跑不起来的惯例先clean一下

五、结语

在最后需要提醒一下各位,如果之前没有加这个,这次需要加上去的话,是需要将老的应用卸载掉的,毕竟签名都变了,所以对线上已有的应用需要更新的话,加上这个势必会造成影响,这个需要注意

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 220,295评论 6 512
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,928评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,682评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,209评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,237评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,965评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,586评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,487评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,016评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,136评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,271评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,948评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,619评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,139评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,252评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,598评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,267评论 2 358