- 浏览: 235581 次
文章分类
最新评论
-
iwangyiyx2:
...
加盐算法 -
seffxu:
我安装了run-jetty-run插件,并配置完成;通过Deb ...
jetty eclipse 插件 run-jetty-run
共享UID
安装在设备中的每一个Android包文件(.apk)都会被分配到一个属于自己的统一的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.
发表评论
-
通过打开android应用市场来定位你的app
2015-06-24 11:42 2700在我们自己开发的app中,往往要打开android mark ... -
webview 播放在线视频不能全屏 (附件工程)
2014-07-15 16:12 0webview 播放在线视频不能全屏 (附件工程) -
android xml自定义数据 解析
2014-05-19 19:53 138package com.lenovo.sharecente ... -
Lenovo MagicShare Network Protocol
2014-04-03 13:42 0****************************** ... -
正则表达式
2014-03-11 18:05 672^[a-zA-Z][a-zA-Z0-9_]*$ -
UDP局域网发现 广播方式实现笔记
2013-12-03 10:32 273文件传输部分: 侦听端口:2999,这只是一个建 ... -
android wifi-director api 解读
2013-08-20 21:03 16931、When a p2p connection is ... -
启动应用的方法,以camera模块为例
2013-08-01 18:11 988//通过包名和类名启动activity priva ... -
android appot和wifi 学习demo 工程
2013-08-01 18:11 856android ap 建立 关闭 实现 wifi 打开 关 ... -
数据库操作
2013-07-31 16:19 734从URI获得文件路径 string myImage ... -
FileObserver的使用方式,监测camera文件夹,android4.1
2013-07-30 14:37 83见附件。 -
android 启动应用或者activity的方法
2013-07-29 17:44 730//通过包名和类名启动activity priva ... -
让Eclipse兼容MacBook Retina屏幕的办法(解决Retina屏幕下eclipse字体变虚的问题)
2013-07-25 16:50 9452最近因为想在本地(MacBook Pro 15' Retin ... -
android 点击空白出隐藏软键盘
2013-06-03 14:18 3335public class HomeActivity exte ... -
Android 图片平铺效果
2013-05-08 10:46 992我们大家都看过平铺的效果,那么我们都是怎么样才能实现的那,我 ... -
android paint-pad
2013-04-17 18:45 891画图板程序,挺全的。 -
onFling onScroll各个手势效果实现
2013-03-22 15:02 4611package com.lenovo.anyclock; ... -
view拖动、listview加载、touch事件分发
2013-03-14 19:59 429package com.xiaxing.slidingdra ... -
android开发旋转罗盘、风车
2013-01-17 19:57 1276一、RotatView package com.s ... -
android多点触摸的的一些记录和思考
2013-01-17 18:15 2127一、UC浏览器的单指、多指操作很有意思,记录一些实现想 ...
相关推荐
通过在每个App中使用sharedUserId设置即可共享系统账户权限,比如android:sharedUserId="android.uid.system" 这样就是用了system这个uid了。给apk增加系统签名,否则一些系统apk将无法安装,使用命令: java -jar ...
Android安全架构的核心是基于Linux内核的权限管理系统,它构建在微内核之上,为每个应用程序分配了独立的用户ID(UID)和组ID(GID),以实现进程隔离。Android系统还引入了 SELinux(Security-Enhanced Linux)来...
在Android开发中,多Activity进程共享是...总之,通过设置共享用户ID,Android开发者可以实现多Activity进程的共享,提高效率和用户体验。但在使用时,务必考虑安全性和权限管理,以确保应用的稳定性和用户数据的安全。
2. **插件化框架**:某些插件化框架利用`sharedUserId`实现主应用与插件应用之间的数据和权限共享。 ### 六、最佳实践 1. **最小权限原则**:仅在必要时共享数据,避免不必要的权限暴露。 2. **安全审计**:定期...
### Android权限问题详解 #### 一、Android权限体系概述 Android作为一款基于Linux内核的操作系统,继承了Linux系统的安全模型。在Android中,权限管理是保障应用安全运行的重要机制之一。本文将针对“Android权限...
9. **权限分类**:Android权限分为正常权限和危险权限。正常权限对用户隐私或系统稳定性影响较小,安装时自动授予;而危险权限涉及用户隐私或可能影响其他应用,需要用户在运行时确认。 综上所述,Android的安全...
在Android开发中,混淆、签名和反编译是三个关键步骤,它们对于应用程序的安全性和发布流程至关重要。 **混淆**的主要目的是保护代码不被轻易逆向工程解析,减少恶意攻击的可能性。在Android中,通常使用ProGuard...
共享UID的应用可以相互访问代码和数据,因为它们在同一进程中运行。 2. 沙箱机制:Android通过“沙箱”策略,利用Linux的UID机制,将不同应用隔离开,使其在各自的进程中独立运行,从而实现多用户级别的隔离。 3. ...
2. **权限管理机制**:为了限制应用程序的权限范围,防止其滥用权限导致的安全问题,Android为每个应用程序分配了一个唯一的Linux用户ID(UID),并通过权限管理系统来控制应用程序对系统资源和服务的访问。...
Android采用权限管理系统,将权限分为普通、危险、签名和系统/签名四个级别。开发者在manifest文件中声明所需权限,用户在安装时需给予或拒绝这些权限。此外,per-URI权限允许对特定数据块进行临时访问控制,增强了...
首先,要理解Android权限模型。每个Android应用都有自己的运行环境,称为用户ID(UserID,简称UID),这决定了应用能访问哪些资源和执行哪些操作。系统权限通常只授予那些运行在系统核心服务中的应用,而普通应用则...
在安装阶段,系统会根据应用的签名和用户确认来授予相应的权限。一旦权限被授予,除非用户手动撤销,否则在应用的生命周期内一直有效。 - **权限分类**:权限分为普通权限和危险权限。危险权限需要用户明确同意才能...
常见的`sharedUserId`有“android.uid.system”、“android.media”和“android.uid.shared”等。 设置应用权限通常在应用的`AndroidManifest.xml`中进行,例如: ```xml <uses-permission android:name="android....
总的来说,Android系统的隐私保护技术是多层次、多角度的,既依赖于系统级别的隔离和权限控制,也依赖于开发者对隐私安全的重视和用户自身的隐私设置。随着技术的发展,未来Android系统的隐私保护能力将进一步提升,...
为了实施这一安全策略,Android采用了Linux内核的进程隔离功能,为每个应用程序分配独特的用户ID(UID)和组ID(GID)。这一措施确保了应用程序之间的相互独立,除非应用程序明确声明并获得特定的“permissions”。 ...