添加系统级权限 android:sharedUserId=“android.uid.system“

这篇具有很好参考价值的文章主要介绍了添加系统级权限 android:sharedUserId=“android.uid.system“。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

当我们在项目中添加系统级权限时,运行时会有错误提示如下:

Installation did not succeed.
The application could not be installed: INSTALL_FAILED_SHARED_USER_INCOMPATIBLE

之所以报错,是添加系统级权限之后还需要在目标系统的platform密钥来重新给apk文件签名。我这里用的签名文件是从目标系统中找到的,不是自己生成的。(目标系统是你的apk要安装的Android设备使用的Android系统)
这里以android.uid.system权限为例来说明我们开发的Android应用是怎么获取到该权限的

一、Android项目中添加系统级权限

1. 添加系统级权限

AndroidManifest.xml中添加sharedUserId属性

android:sharedUserId="android.uid.system"

2. 添加已有的签名到build.gradle

添加签名文件的storePassword(密钥库密钥)、keyAlias(密钥标识名)、keyPassword(密钥密码)

android {
    signingConfigs {
        platform {
            storeFile file('D:\\aaa.keystore')
            storePassword '123456'
            keyAlias 'aaa'
            keyPassword '123456'
        }
    }
}

3. Android Studio选择File->Project Structure->Modules

在Signing Configs里可以看到platform已经添加到了Modules中。确认添加成功即可,不做任何变动

Build Variants这一栏是生成apk的配置,内置了有两种生成apk的方式,分别是debug和release
debug用于调试,平时我们把项目代码写好编译完成后默认用的是debug生成的apk;
release用于正式发布供用于下载安装,这种方式需要先创建密钥库(密钥库是apk的证书,当apk有更新时,是需要证书匹配才能更新的),填写了一串信息后通过Build->Build Bundles/APKS->Build APKs生成apk

回到正题,Build Variants中选择生成方式后,在Signing Config中添加要用到的签名,保存并退出窗口

最后,修改发布版本,在android studio界面的左下角,修改build variant,接着,run即可运行项目,可以发现IDE不再报错了,android:sharedUserId=“android.uid.system“权限已经添加到应用中了

二、sharedUserId属性介绍

一般的,每一个apk都具有一个userid,对于安装在设备中的apk文件,Android会根据userid来给它分配一个Linux用户ID进行管理,并且为它创建一个沙箱,以防止影响其他应用程序(或被其它应用程序影响),即属于不同Linux用户ID的apk之间是不能进行通讯的。
但是,某些时候我们开发了多个apk并且需要他们之间互相共享资源,那么就需要通过设置shareUserId来实现,只需要保证这些apk的shareUserId相同即可,值可自定义,如android:sharedUserId=“my_id“

三、不同sharedUserId权限

系统中所有使用android.uid.system作为共享UID的APK,都会首先在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.system”,然后在Android.mk中增加LOCAL_CERTIFICATE := platform

系统中所有使用android.uid.nfc作为共享UID的APK,都会首先在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.nfc”,然后在Android.mk中增加LOCAL_CERTIFICATE := platform

系统中所有使用android.uid.se作为共享UID的APK,都会首先在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.se”,然后在Android.mk中增加LOCAL_CERTIFICATE := platform

系统中所有使用android.uid.shared作为共享UID的APK,都会在AndroidManifest.xml节点中增加android:sharedUserId=”android.uid.shared”,然后在Android.mk中增加LOCAL_CERTIFICATE := shared

系统中所有使用android.media作为共享UID的APK,都会在AndroidManifest.xml节点中增加android:sharedUserId=”android.media”,然后在Android.mk中增加LOCAL_CERTIFICATE := media

四、替换系统签名的方法

当我们无法获取平台系统签名时,就不能对app进行签名。
这时,可以在“平台特权应用程序签名特权文件”里给想要的权限添加白名单即可,文件路径为 /system/etc/permissions/privapp-permissions-platform.xml
【注】需要保证手机已经root成功后,才能修改后push到手机中,以下给出示例
1.在app的AndroidManifest.xml中添加 系统特权权限

    <uses-permission android:name="android.permission.WRITE_SECURE_SETTINGS" />
    <uses-permission android:name="android.permission.INTERACT_ACROSS_USERS" />
    <uses-permission android:name="android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION" />

2.Build APK(s)生成apk,然后将apk push到 /system/priv-app/目录
3.在 /system/etc/permissions/privapp-permissions-platform.xml 里添加权限

    <privapp-permissions package="com.example.test">
        <permission name="android.permission.WRITE_SECURE_SETTINGS"/>
    </privapp-permissions>

    <privapp-permissions package="com.example.test">
        <permission name="android.permission.INTERACT_ACROSS_USERS"/>
    </privapp-permissions>
    
    <privapp-permissions package="com.example.test">
        <permission name="android.permission.SECURE_ELEMENT_PRIVILEGED_OPERATION"/>
    </privapp-permissions>

4.手机重启后生效文章来源地址https://www.toymoban.com/news/detail-546914.html

到了这里,关于添加系统级权限 android:sharedUserId=“android.uid.system“的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 区块链系统权限控制-添加委员账号

            这篇文章讲的是区块链系统的权限,但是注意这篇文章讲的并不是国密版本的,所以在开始之前我们需要准备好一条FICSCO-BCOS的链和控制台。         获取操作脚本: 如果因为网络原因长时间无法下载,请尝试:curl -#LO https://osp-1257653870.cos.ap-guangzhou.myqcloud.com/FISCO

    2024年01月17日
    浏览(49)
  • Linux系统添加用户并授权管理员(sudo)权限

    一方面是为了安全权限考虑、也是防止误操作。另一方面也是为了保证用户平时处于普通权限下。 1、添加用户 使用useradd命令添加用户 useradd -m kingbase 2、修改密码 给新添加的用户“kingbase”设置一个密码( 注:设置密码的时候linux系统默认会有密码复杂度规则 ) passwd king

    2024年02月16日
    浏览(47)
  • (Linux)在Ubuntu系统中添加新用户并授予root权限

    向Ubuntu系统中添加新用户并为其授予root权限的步骤如下: 打开终端Terminal 输入命令: sudo su - 以 root 身份登录. 注: sudo su : 切换root身份, 不携带当前用户环境变量 sudo su - : 切换root身份, 携带当前用户环境变量 输入命令: adduser username 向Ubuntu系统中添加新用户. 输入命令: passwd us

    2024年02月16日
    浏览(50)
  • 明修"栈"道——越过Android启动栈陷阱

    作者:vivo 互联网大前端团队- Zhao Kaiping 本文从一例业务中遇到的问题出发,以FLAG_ACTIVITY_NEW_TASK这一flag作为切入点,带大家探究Activity启动前的一项重要的工作——栈校验。 文中列举一系列业务中可能遇到的异常状况,详细描述了使用FLAG_ACTIVITY_NEW_TASK时可能遇到的“坑”,

    2023年04月18日
    浏览(35)
  • Android请求麦克风权限+系统权限页面回调

    目录 一、效果展示 二、代码实现 1、设置权限 2、UI 3、代码逻辑 之前写的基于原生api太复杂了,现基于PermissionX重新实现。 Android基于PermissionX请求mic权限 在manifest文件中配置RECORD_AUDIO权限 简单的button按钮,点击触发动态申请权限逻辑

    2024年02月11日
    浏览(54)
  • 对文件权限误操作导致的sudo报错Sudo doesn‘t work: “/etc/sudoers is owned by uid 1000, should be 0”的问题

          系统是Ubuntu20.04,使用VsCode在局域网ssh登陆主机。 为了给ssh登陆主机的vscode提供写入权限,试图用这个命令给vscode整个etc文件夹的读取权限 然后sudo就没有办法使用了 只有一个用户,没有超级管理员,没有sudo没有办法修改权限的配置文件。 试图将权限改回全部用户的

    2024年02月12日
    浏览(41)
  • Android系统安全权限

    ndroid将安全设计贯穿系统架构的各个层面,覆盖系统内核、虚拟机、应用程序框架层以及应用层各个环节,力求在开放的同时,也最大程度地保护用户的数据、应用程序和设备的安全。Android安全模型主要提供以下几种安全机制: 从技术架构角度来看,Android安全模型基于Lin

    2024年03月22日
    浏览(39)
  • Android系统安全权限相关内容

    Android手机把权限从低到高分成三大类: 1、第三方应用权限(App可以在用户授权下访问某些具体的操作) 2、Android手机用户普通权限(手机使用者可以操作Android系统的日常应用) 3、Android手机的Root权限(超级用户权限,可以控制Android系统的运转) 1. 更新操作系统和应用程序

    2024年03月23日
    浏览(36)
  • Android 11 添加系统属性

    在初识Android 属性一文中提到,系统会默认加载以下文件 要弄清楚我们应该在哪里添加系统属性,就要知道这些文件是怎么生成的。以/system/build.prop文件为例,来分析下其生成过程 属性文件的生成逻辑集中在buildmakecoreMakefile文件中 注释1处,将ADDITIONAL_BUILD_PROPERTIES定义的属

    2024年04月08日
    浏览(74)
  • Android在系统界面上添加窗口

    WindowManager.addView()是Android中的一个方法,用于在屏幕上添加一个窗口。它允许你在应用程序的上下文之外创建一个窗口,并将其显示在其他应用程序或系统界面上。 新建一个自定义View用于显示 使用windowManager.addView()显示 首先创建了一个WindowManager对象,在这个对象上进行操作

    2024年01月18日
    浏览(35)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包