使用Uid的2个场景案例

Uid介绍

Uid是用户ID,在Android中,Uid在应用安装时被分配,一个应用程序有且仅有一个Uid,多个应用可以共享同一个Uid。
1 通过命名可以查看:

adb shell ps | grep name

adb方式
2 如果手机有root权限的话,可以导出 data/system/packages.list 文件, 里面可以看到所有应用的包名及对应的 UID
3 通过代码拿到应用的 ApplicationInfo的实例,applicationInfo.uid
4 通过代码int uid = Binder.getCallingUid();拿到

场景一

在Service组件开发中,对外暴露了aidl接口。要在接口 中打印调用进程的信息,如包名。

int uid = Binder.getCallingUid();
String packageName = getPackageManager().getNameForUid(uid);

场景二

开发第三方应用程序,为了在程序中调用一些系统权限接口,如使用SystemProperties操作系统属性,要使第三方应用程序获取系统权限。
首先在AndroidManifest加入android:sharedUserId="android.uid.system"这个属性,第三方应用程序虽然有独立的进程Pid,但是就能有和系统一样的Uid了。为了安装第三方应用,需要使用系统的签名文件对第三方应用签名打包。
签名打包方式一:为签名的apk
在源码的build/target/product/security目录下platform.pk8和platform.x509.pem两个文件:

java -jar signapk.jar platform.x509.pem platform.pk8 my.apk new.apk

签名打包方式二:已签名的apk

keytool-importkeypair -k demo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias demo

签名打包方式三:源码环境编译
在Android.mk中,

LOCAL_CERTIFICATE :=platform
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值