系统集成应用版本升级不成功,查看系统日志Package com.xiaoji.emulator new target SDK 22 doesn’t support runtime permissions but the old target SDK 23 does
应用新版本sdk比旧版本低导致升级失败,从Android6.0之后的版本 targetSDKVerssion是不能降级的.
临时修复方法,在PackageManagerService.java中针对该应用不比较升级应用和原应用的sdk版本,具体修改方法如下
PackageManagerService.java
if (replace) {
// Prevent apps opting out from runtime permissions
PackageParser.Package oldPackage = mPackages.get(pkgName);
final int oldTargetSdk = oldPackage.applicationInfo.targetSdkVersion;
final int newTargetSdk = pkg.applicationInfo.targetSdkVersion;
Log.d("test","package =" + pkg.packageName);
//modify to fix xiaoji upgrade bug
if (oldTargetSdk > Build.VERSION_CODES.LOLLIPOP_MR1
&& newTargetSdk <= Build.VERSION_CODES.LOLLIPOP_MR1 && !(pkg.packageName.equals("com.xiaoji.emulator"))) {
res.setError(PackageManager.INSTALL_FAILED_PERMISSION_MODEL_DOWNGRADE,
"Package " + pkg.packageName + " new target SDK " + newTargetSdk
+ " doesn't support runtime permissions but the old"
+ " target SDK " + oldTargetSdk + " does.");
return;
}
// Prevent installing of child packages
if (oldPackage.parentPackage != null) {
res.setError(PackageManager.INSTALL_PARSE_FAILED_BAD_PACKAGE_NAME,
"Package " + pkg.packageName + " is child of package "
+ oldPackage.parentPackage + ". Child packages "
+ "can be updated only through the parent package.");
return;
}
}
}