[pm] Fix appId naming

+ appId should not be called userId (at least in dumpsys)
+ fixing a mistake from ag/16740473 (line 1285)
+ remove log spam when appId was not set for package settings with
  shared user setting which is expected during initialization (line 1286)

BUG: 235381248
Test: builds / dumpsys
Test: will test with manual OTA
Change-Id: I9ca72c151107bf4c72f0728065fe6b7447049483
This commit is contained in:
Songchun Fan
2022-06-08 12:54:31 -07:00
parent 3d6f224261
commit 724530ce37

View File

@@ -993,7 +993,7 @@ public final class Settings implements Watchable, Snappable {
pkgSetting = new PackageSetting(pkgName, realPkgName, codePath,
legacyNativeLibraryPath, primaryCpuAbi, secondaryCpuAbi,
null /*cpuAbiOverrideString*/, versionCode, pkgFlags, pkgPrivateFlags,
0 /*sharedUserId*/, usesSdkLibraries, usesSdkLibrariesVersions,
0 /*sharedUserAppId*/, usesSdkLibraries, usesSdkLibrariesVersions,
usesStaticLibraries, usesStaticLibrariesVersions,
createMimeGroups(mimeGroupNames), domainSetId);
pkgSetting.setLastModifiedTime(codePath.lastModified());
@@ -1282,12 +1282,12 @@ public final class Settings implements Watchable, Snappable {
"Package " + p.getPackageName() + " was user "
+ existingSharedUserSetting + " but is now " + sharedUser
+ "; I am not changing its files so it will probably fail!");
sharedUser.removePackage(p);
} else if (p.getAppId() != sharedUser.mAppId) {
existingSharedUserSetting.removePackage(p);
} else if (p.getAppId() != 0 && p.getAppId() != sharedUser.mAppId) {
PackageManagerService.reportSettingsProblem(Log.ERROR,
"Package " + p.getPackageName() + " was user id " + p.getAppId()
"Package " + p.getPackageName() + " was app id " + p.getAppId()
+ " but is now user " + sharedUser
+ " with id " + sharedUser.mAppId
+ " with app id " + sharedUser.mAppId
+ "; I am not changing its files so it will probably fail!");
}
@@ -1296,15 +1296,15 @@ public final class Settings implements Watchable, Snappable {
p.setAppId(sharedUser.mAppId);
}
// If we know about this user id, we have to update it as it
// If we know about this app id, we have to update it as it
// has to point to the same PackageSetting instance as the package.
Object userIdPs = getSettingLPr(p.getAppId());
Object appIdPs = getSettingLPr(p.getAppId());
if (sharedUser == null) {
if (userIdPs != null && userIdPs != p) {
if (appIdPs != null && appIdPs != p) {
mAppIds.replaceSetting(p.getAppId(), p);
}
} else {
if (userIdPs != null && userIdPs != sharedUser) {
if (appIdPs != null && appIdPs != sharedUser) {
mAppIds.replaceSetting(p.getAppId(), sharedUser);
}
}
@@ -3581,17 +3581,17 @@ public final class Settings implements Watchable, Snappable {
UUID domainSetId = DomainVerificationManagerInternal.DISABLED_ID;
PackageSetting ps = new PackageSetting(name, realName, new File(codePathStr),
legacyNativeLibraryPathStr, primaryCpuAbiStr, secondaryCpuAbiStr, cpuAbiOverrideStr,
versionCode, pkgFlags, pkgPrivateFlags, 0 /*sharedUserId*/, null, null, null, null,
null, domainSetId);
versionCode, pkgFlags, pkgPrivateFlags, 0 /*sharedUserAppId*/, null, null, null,
null, null, domainSetId);
long timeStamp = parser.getAttributeLongHex(null, "ft", 0);
if (timeStamp == 0) {
timeStamp = parser.getAttributeLong(null, "ts", 0);
}
ps.setLastModifiedTime(timeStamp);
ps.setLastUpdateTime(parser.getAttributeLongHex(null, "ut", 0));
ps.setAppId(parser.getAttributeInt(null, "userId", 0));
ps.setAppId(parseAppId(parser));
if (ps.getAppId() <= 0) {
final int sharedUserAppId = parser.getAttributeInt(null, "sharedUserId", 0);
final int sharedUserAppId = parseSharedUserAppId(parser);
ps.setAppId(sharedUserAppId);
ps.setSharedUserAppId(sharedUserAppId);
}
@@ -3638,7 +3638,7 @@ public final class Settings implements Watchable, Snappable {
throws XmlPullParserException, IOException {
String name = null;
String realName = null;
int userId = 0;
int appId = 0;
int sharedUserAppId = 0;
String codePathStr = null;
String legacyCpuAbiString = null;
@@ -3670,8 +3670,8 @@ public final class Settings implements Watchable, Snappable {
try {
name = parser.getAttributeValue(null, ATTR_NAME);
realName = parser.getAttributeValue(null, "realName");
userId = parser.getAttributeInt(null, "userId", 0);
sharedUserAppId = parser.getAttributeInt(null, "sharedUserId", 0);
appId = parseAppId(parser);
sharedUserAppId = parseSharedUserAppId(parser);
codePathStr = parser.getAttributeValue(null, "codePath");
legacyCpuAbiString = parser.getAttributeValue(null, "requiredCpuAbi");
@@ -3764,8 +3764,8 @@ public final class Settings implements Watchable, Snappable {
firstInstallTime = parser.getAttributeLongHex(null, "it", 0);
lastUpdateTime = parser.getAttributeLongHex(null, "ut", 0);
if (PackageManagerService.DEBUG_SETTINGS)
Log.v(PackageManagerService.TAG, "Reading package: " + name + " userId=" + userId
+ " sharedUserId=" + sharedUserAppId);
Log.v(PackageManagerService.TAG, "Reading package: " + name + " appId=" + appId
+ " sharedUserAppId=" + sharedUserAppId);
if (realName != null) {
realName = realName.intern();
}
@@ -3777,19 +3777,19 @@ public final class Settings implements Watchable, Snappable {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: <package> has no codePath at "
+ parser.getPositionDescription());
} else if (userId > 0) {
} else if (appId > 0) {
packageSetting = addPackageLPw(name.intern(), realName, new File(codePathStr),
legacyNativeLibraryPathStr, primaryCpuAbiString, secondaryCpuAbiString,
cpuAbiOverrideString, userId, versionCode, pkgFlags, pkgPrivateFlags,
cpuAbiOverrideString, appId, versionCode, pkgFlags, pkgPrivateFlags,
null /* usesSdkLibraries */, null /* usesSdkLibraryVersions */,
null /* usesStaticLibraries */, null /* usesStaticLibraryVersions */,
null /* mimeGroups */, domainSetId);
if (PackageManagerService.DEBUG_SETTINGS)
Log.i(PackageManagerService.TAG, "Reading package " + name + ": userId="
+ userId + " pkg=" + packageSetting);
Log.i(PackageManagerService.TAG, "Reading package " + name + ": appId="
+ appId + " pkg=" + packageSetting);
if (packageSetting == null) {
PackageManagerService.reportSettingsProblem(Log.ERROR, "Failure adding uid "
+ userId + " while parsing settings at "
PackageManagerService.reportSettingsProblem(Log.ERROR, "Failure adding appId "
+ appId + " while parsing settings at "
+ parser.getPositionDescription());
} else {
packageSetting.setLastModifiedTime(timeStamp);
@@ -3811,22 +3811,23 @@ public final class Settings implements Watchable, Snappable {
mPendingPackages.add(packageSetting);
if (PackageManagerService.DEBUG_SETTINGS)
Log.i(PackageManagerService.TAG, "Reading package " + name
+ ": sharedUserId=" + sharedUserAppId + " pkg=" + packageSetting);
+ ": sharedUserAppId=" + sharedUserAppId + " pkg="
+ packageSetting);
} else {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: package " + name
+ " has bad sharedId " + sharedUserAppId + " at "
+ " has bad sharedUserAppId " + sharedUserAppId + " at "
+ parser.getPositionDescription());
}
} else {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: package " + name + " has bad userId "
+ userId + " at " + parser.getPositionDescription());
"Error in package manager settings: package " + name + " has bad appId "
+ appId + " at " + parser.getPositionDescription());
}
} catch (NumberFormatException e) {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: package " + name + " has bad userId "
+ userId + " at " + parser.getPositionDescription());
"Error in package manager settings: package " + name + " has bad appId "
+ appId + " at " + parser.getPositionDescription());
}
if (packageSetting != null) {
InstallSource installSource = InstallSource.create(
@@ -3959,6 +3960,22 @@ public final class Settings implements Watchable, Snappable {
}
}
/**
* The attribute "appId" was historically called "userId".
* TODO(b/235381248): Fix it when we solve tooling compatibility issues
*/
private static int parseAppId(TypedXmlPullParser parser) {
return parser.getAttributeInt(null, "userId", 0);
}
/**
* The attribute "sharedUserAppId" was historically called "sharedUserId".
* TODO(b/235381248): Fix it when we solve tooling compatibility issues
*/
private static int parseSharedUserAppId(TypedXmlPullParser parser) {
return parser.getAttributeInt(null, "sharedUserId", 0);
}
void addInstallerPackageNames(InstallSource installSource) {
if (installSource.installerPackageName != null) {
mInstallerPackages.add(installSource.installerPackageName);
@@ -4089,7 +4106,7 @@ public final class Settings implements Watchable, Snappable {
SharedUserSetting su = null;
{
name = parser.getAttributeValue(null, ATTR_NAME);
int userId = parser.getAttributeInt(null, "userId", 0);
int appId = parseAppId(parser);
if (parser.getAttributeBoolean(null, "system", false)) {
pkgFlags |= ApplicationInfo.FLAG_SYSTEM;
}
@@ -4097,13 +4114,13 @@ public final class Settings implements Watchable, Snappable {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: <shared-user> has no name at "
+ parser.getPositionDescription());
} else if (userId == 0) {
} else if (appId == 0) {
PackageManagerService.reportSettingsProblem(Log.WARN,
"Error in package manager settings: shared-user " + name
+ " has bad userId " + userId + " at "
+ " has bad appId " + appId + " at "
+ parser.getPositionDescription());
} else {
if ((su = addSharedUserLPw(name.intern(), userId, pkgFlags, pkgPrivateFlags))
if ((su = addSharedUserLPw(name.intern(), appId, pkgFlags, pkgPrivateFlags))
== null) {
PackageManagerService
.reportSettingsProblem(Log.ERROR, "Occurred while parsing settings at "
@@ -4528,7 +4545,7 @@ public final class Settings implements Watchable, Snappable {
pw.println(ps.getPackageName());
}
pw.print(prefix); pw.print(" userId="); pw.println(ps.getAppId());
pw.print(prefix); pw.print(" appId="); pw.println(ps.getAppId());
SharedUserSetting sharedUserSetting = getSharedUserSettingLPr(ps);
if (sharedUserSetting != null) {
@@ -5100,7 +5117,7 @@ public final class Settings implements Watchable, Snappable {
pw.println("):");
String prefix = " ";
pw.print(prefix); pw.print("userId="); pw.println(su.mAppId);
pw.print(prefix); pw.print("appId="); pw.println(su.mAppId);
pw.print(prefix); pw.println("Packages");
final ArraySet<PackageStateInternal> susPackageStates =