Android:sharedUserId介绍

限时加码!20+主流AI编程工具免费用 购周边加赠Coding Plan Lite,Claude Code、Cursor等即刻畅享,学习进阶更高效! 阅读详情

android:sharedUserId = "aa"的格式不对!要仿照标准的写!其实有点就行!

两个APK如果拥有同一个USERID 那么共享了permission!

    安装在设备中的每一个apk文件,Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户都会被分配到一个属于自己的统一的Linux用户ID,并且为它创建一个沙箱,以防止影响其他应用程序(或者其他应用程序影响它)。用户ID 在应用程序安装到设备中时被分配,并且在这个设备中保持它的永久性。

通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中.所以默认就是可以互相访问任意数据. 也可以配置成运行成不同的进程, 同时可以访问其他APK的数据目录下的数据库和文件.就像访问本程序的数据一样.

对于一个APK来说,如果要使用某个共享UID的话,必须做三步:

1、在Manifest节点中增加android:sharedUserId属性。

2、在Android.mk中增加LOCAL_CERTIFICATE的定义。

如果增加了上面的属性但没有定义与之对应的LOCAL_CERTIFICATE的话,APK是安装不上去的。提示错误是:Package com.test.MyTest has no signatures that match those in shared user android.uid.system; ignoring!也就是说,仅有相同签名和相同sharedUserID标签的两个应用程序签名都会被分配相同的用户ID。例如所有和media/download相关的APK都使用android.media作为sharedUserId的话,那么它们必须有相同的签名media。

3、把APK的源码放到packages/apps/目录下,用mm进行编译。

举例说明一下。

系统中所有使用android.uid.system作为共享UID的APK,都会首先在manifest节点中增加android:sharedUserId="android.uid.system",然后在Android.mk中增加LOCAL_CERTIFICATE := platform。可以参见Settings等

系统中所有使用android.uid.shared作为共享UID的APK,都会在manifest节点中增加android:sharedUserId="android.uid.shared",然后在Android.mk中增加LOCAL_CERTIFICATE := shared。可以参见Launcher等

系统中所有使用android.media作为共享UID的APK,都会在manifest节点中增加android:sharedUserId="android.media",然后在Android.mk中增加LOCAL_CERTIFICATE := media。可以参见Gallery等。

另外,应用创建的任何文件都会被赋予应用的用户标识,并且正常情况下不能被其他包访问。当通过getSharedPreferences(String,int)、openFileOutput(String、int)或者openOrCreate Database(String、int、SQLiteDatabase.CursorFactory)创建一个新文件时,开发者可以同时或分别使用MODE_WORLD_READABLE和MODE_WORLD_RITEABLE标志允许其他包读/写此文件。当设置了这些标志后,这个文件仍然属于自己的应用程序,但是它的全局读/写和读/写权限已经设置,所以其他任何应用程序可以看到它。

关于签名:

build/target/product/security目录中有四组默认签名供Android.mk在编译APK使用:

1、testkey:普通APK,默认情况下使用。

2、platform:该APK完成一些系统的核心功能。经过对系统中存在的文件夹的访问测试,这种方式编译出来的APK所在进程的UID为system。

3、shared:该APK需要和home/contacts进程共享数据。

4、media:该APK是media/download系统中的一环。

应用程序的Android.mk中有一个LOCAL_CERTIFICATE字段,由它指定用哪个key签名,未指定的默认用testkey.

对于使用eclipse编译的apk,可以使用signapk.jar来手动进行签名,其源码在build\tools\signapk下,编译后在out/host/linux-x86/framework/signapk.jar,也可以从网上下载。使用方法,以platform为例:java -jar ./signapk platform.x509.pem platform.pk8 input.apk output.apk  (platform.x509.pem platform.pk8在build/target/product/security获取)s

android:sharedUserId 应用进程声明介绍 关于 android:sharedUserId 的声明介绍 阅读详情

相关推荐

Versal ACAP NoC实战:像理解计算机网络一样配置AXI NoC,打通PS与PL数据通路

本文深入探讨了Versal ACAP NoC的配置与优化,通过计算机网络类比解析NoC架构,详细介绍了在VD100开发板上配置AXI NoC实现PS与PL数据交互的实战步骤。文章涵盖NoC组件功能、Vivado配置技巧、性能优化方法及常见问题解决方案,帮助开发者高效打通Versal芯片的数据通路。

weixin_42665255的博客 263

Android 灯带功能开发 基与Android N 过gms认证

之前公司安排一个灯带的功能让开发。现在整理下,针对开发过程中碰到的一些问题提出来分享一下。大家可以根据目录来选择性的查看。最终效果图:真机图:客户基本需求:蓝灯:开机亮屏时显示绿灯:来电时闪烁黄灯:有未接来电时闪烁粉灯:有未读消息或未读短信时闪烁红灯:低电量时闪烁UI显示:Settings一级菜单新增灯效item,并新增对应二级菜单扩展功能:静音模式下关闭灯效时刻表范围内关闭灯效灯带定时关闭 简述...

Mis_wenwen的博客 2431

Boost变换电路在新能源车充电系统中的创新应用与挑战

本文探讨了Boost变换电路在新能源车充电系统中的创新应用与挑战,重点分析了其在高压快充、能量回收等场景中的技术突破。通过电力电子仿真和新型器件应用,如SiC MOSFET,显著提升了功率密度和转换效率。同时,文章还深入讨论了电磁兼容性(EMC)挑战及智能控制算法的实际应用,为新能源车充电系统的优化提供了实用解决方案。

7z8x2c4v6b9的博客 198

Android中应用程序如何获得系统签名权限

Android中应用程序如何获得系统签名权限 有些库的使用条件比较苛刻,要求同一签名的程序才可以获得访问权。此时即便是在AndroidManifest.xml中添加了相应的permission,依旧会得到没有xx访问权限的问题。比如android.permission.ACCESS_SURFACE_FLINGER 。   第一个方法简单点,不过需要在Android系统源码

summer's android 专栏 890

Android:shareUserId知多少

通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。所以默认就是可以互相访问任意数据。也可以配置成运行成不同的进程,同时可以访问其他APK的数据目录下的数据库和文件,就像访问本程序的数据一样。

weixin_43858011的博客 1767

关于android:sharedUserId

作用是多个app进程共享数据 多个app设置成相同的user id android:sharedUserId=“android.uid.system” 系统级进程 android:sharedUserId=“com.example” 普通共享app 具体参考如下文章: https://blog.csdn.net/jiangwei0910410003/article/details/51316688...

jamikabin的专栏 1303

Android逆向之旅---Android中的sharedUserId属性详解

Android逆向之旅---Android中的sharedUserId属性详解 一、前言 今天我们来看一下Android中一个众人熟悉的一个属性:shareUserId,关于这个属性可能大家都很熟悉了,最近在开发项目,用到了这个属性,虽然知道一点知识,但是感觉还是有些迷糊,所以就写篇文章来深入研究一下。 关于Android中的sharedUserId的概念这里就简单介绍

我的专栏 1210

sharedUserId共享两个APP的SP数据

第一步 两个APP的manifest里面使用统一的android:sharedUserId=“shared.cn.ly” shared.cn.ly这个值随便取,但是要求xxx.xxx这种格式。 第二步 第一个APP的某个activity中往sp里面写数据 val sp = getSharedPreferences("data", Context.MODE_PRIVATE) sp.edit().putString("name","alex").apply() 第三步 必须要用

重学Android,保持学习 729

Android基础知识之Manifest文件的组织结构

网上高级工程师面试相关文章鱼龙混杂,要么一堆内容,要么内容质量太浅, 鉴于此我整理了上述安卓开发高级工程师面试题以及答案。希望帮助大家顺利进阶为高级工程师。目前我就职于某大厂安卓高级工程师职位,在当下大环境下也想为安卓工程师出一份力,通过我的技术经验整理了面试经常问的题,答案部分是一篇文章或者几篇文章,都是我认真看过并且觉得不错才整理出来。大家知道高级工程师不会像刚入门那样被问的问题一句话两句话就能表述清楚,所以我通过过滤好文章来帮助大家理解。现在都说互联网寒冬,其实只要自身技术能力够强,咱们就不怕。

2301_79985012的博客 561

Android系统设置屏幕不旋转

想要修改系统设置,需要apk有系统权限,有系统权限manifest文件要添加android:sharedUserId=“android.uid.system”,还要有系统签名,应用添加如下权限: <uses-permission android:name="android.permission.WRITE_SETTINGS" /> 设置屏幕是否自动旋转 Settings.System.putInt(mContext.getContentResolver(), Settings.Syst

lebulangzhen的博客 1566

Android APP权限之sharedUserId和签名

Android会根据manifest中声明的userid给每个APK进程分配一个单独的用户空间,所以不同APK(用户)间互相访问数据默认是禁止的。但是它也提供了2种APK间共享数据的形式:1. Share Preference. / Content ProviderAPK可以指定接口和数据给任何其他APK读取. 需要自己实现接口和Share的数据.本文对于这个不做详细解释2. Shared Use

大海蓝天的专栏 1721

Android sharedUserId数据权限

Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户 (Android 系统是基于Linux)的. 所以不同APK(用户)间互相访问数据默认是禁止的. 但是它也提供了2种APK间共享数据的形式: 1. Share Preference. / Content Provider APK可以指定接口和数据给任何其他APK读取. 需要...

iteye_2768的博客 154

AndroidsharedUserId的用处

不同APK之间如何互相访问数据? Android为我们提供了两种数据互访的方法: (1) 使用Share Preference(设置为共有)或Content Provider APK通过指定接口和数据供其它APK读取,开发者需要实现接口和指定share的数据 (2)在配置文件AndroidManifest.xml中配置相同的UserId 通过共享userid,拥有相同userid的用户可...

嵌入式软件开发交流 2万+

android:sharedUserId="android.uid.system" 的使用

系统权限使用 android:sharedUserId=”android.uid.system” 通过Shared User id,拥有同一个User id的多个APK可以配置成运行在同一个进程中。那么把程序的UID配成android.uid.system,也就是要让程序运行在系统进程中,这样相关权限就可以获得 项目中是针对于平板电脑的,Android 版本6.0.1 app需要开启相机权...

m0_38094058的博客 1万+

关于android:sharedUserId="android.uid.system"这个系统级权限

最近在做的项目,有好大一部分都用到这个权限,修改系统时间啊,调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver: Permission denied ".这个函数需要root权限或者运行于系统进程中才可以用。网上搜索了好久,发现有两种方法可以解决:

HarryWeasley的专栏 1万+

Android-sharedUserId数据权限

|字号 订阅 Android给每个APK进程分配一个单独的用户空间,其manifest中的userid就是对应一个Linux用户 (Android 系统是基于Linux)的. 所以不同APK(用户)间互相访问数据默认是禁止的. 但是它也提供了2种APK间共享数据的形式: 1. Share Preference. / Content Provider APK可以指定接口和数据给任何其他AP

Viktor的专栏 454

Pico 使用 android:sharedUserId=“android.uid.system“ 的问题

在需要某些功能的时候 比如 pico的按键禁用,或调用 重启 、关机 等函数时,都会要修改配置文件 加上 android:sharedUserId=“android.uid.system” 。 但是打包后 安装 会出现 应用未安装 的字样 ,这是因为没有系统签名的缘故 ,登入 网站 http://sign.picovr.com/login, 账号的话需要官方人员帮你注册 ,然后上传打包出来的apk,然后等待签名完毕 . 签名成功后在 已签名 那下载签名成功的包,然后就能安装了 ...

LightHuiHui的博客 1353

android:sharedUserId=“android.uid.system“的使用

有时候我们需要在自己的应用中使用一些系统相关权限,比如USB权限,如果我们自己的应用所在进程和系统进程为同一个UID,就会默认拥有该权限,不需要用户自己去授予,很多情况下会方便很多。最近在做的项目,有好大一部分都用到这个权限,修改系统时间(SytemClock.setCurrentTimeMillis()),调用隐藏方法啊,系统关机重启啊,静默安装升级卸载应用等等,刚开始的时候,直接添加权限,运行就报错,无论模拟器还是真机,在logcat中总会得到"Unable to open alarm driver:

yzpbright的博客 960
上一篇: AndroidManifest.xml介绍
下一篇: android CTS测试
prettyice
博客等级 码龄18年 13粉丝 12原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值