java 差分升級_关于android8.1实现多个app升级时的注意事项

关于android8.1实现多个app升级时的注意事项

android新的版本,packagemanager对app安装有一定的限制,就是除了shell和root用户外,其他用户的进程不允许安装除了系统用户(system ui)以外的app。也就是例如system用户不允许安装uid为7000的app。

所以,如果你想通过一个appupgrade(一个system用户的进程)专门去进行多个不用用户的应用进行差分升级,那么需要去掉此限制。

修改如下:

diff --git a/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java b/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java

index 94f7577..53eea02 100644

--- a/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java

+++ b/frameworks/base/services/core/java/com/android/server/pm/PackageInstallerService.java

@@ -438,7 +438,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {

throw new SecurityException("User restriction prevents installing");

}

if ((callingUid == Process.SHELL_UID) || (callingUid == Process.ROOT_UID)) {

if ((callingUid == Process.SHELL_UID) || (callingUid == Process.ROOT_UID) || (callingUid == Process.SYSTEM_UID)) {

params.installFlags |= PackageManager.INSTALL_FROM_ADB;

} else {

@@ -737,7 +737,7 @@ public class PackageInstallerService extends IPackageInstaller.Stub {

IntentSender statusReceiver, int userId) throws RemoteException {

final int callingUid = Binder.getCallingUid();

mPm.enforceCrossUserPermission(callingUid, userId, true, true, "uninstall");

if ((callingUid != Process.SHELL_UID) && (callingUid != Process.ROOT_UID)) {

if ((callingUid != Process.SHELL_UID) && (callingUid != Process.ROOT_UID) && (callingUid != Process.SYSTEM_UID)) {

mAppOps.checkPackage(callingUid, callerPackageName);

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值