Accept UserHandle.USER_ALL during profile preparation

Test: adb install foo.apk
Bug: 72453027
Change-Id: I840d70d47a256c8853bbe1b9b023f51bdd5ddf6b
This commit is contained in:
Calin Juravle
2018-01-24 14:43:24 -08:00
parent e891dbaa4f
commit 5bbe26ee01
2 changed files with 18 additions and 1 deletions

View File

@@ -17022,7 +17022,7 @@ Slog.e("TODD",
// Prepare the application profiles for the new code paths.
// This needs to be done before invoking dexopt so that any install-time profile
// can be used for optimizations.
mArtManagerService.prepareAppProfiles(pkg, args.user.getIdentifier());
mArtManagerService.prepareAppProfiles(pkg, resolveUserIds(args.user.getIdentifier()));
// Check whether we need to dexopt the app.
//

View File

@@ -245,6 +245,14 @@ public class ArtManagerService extends android.content.pm.dex.IArtManager.Stub {
*/
public void prepareAppProfiles(PackageParser.Package pkg, @UserIdInt int user) {
final int appId = UserHandle.getAppId(pkg.applicationInfo.uid);
if (user < 0) {
Slog.wtf(TAG, "Invalid user id: " + user);
return;
}
if (appId < 0) {
Slog.wtf(TAG, "Invalid app id: " + appId);
return;
}
try {
ArrayMap<String, String> codePathsProfileNames = getPackageProfileNames(pkg);
for (int i = codePathsProfileNames.size() - 1; i >= 0; i--) {
@@ -266,6 +274,15 @@ public class ArtManagerService extends android.content.pm.dex.IArtManager.Stub {
}
}
/**
* Prepares the app profiles for a set of users. {@see ArtManagerService#prepareAppProfiles}.
*/
public void prepareAppProfiles(PackageParser.Package pkg, int[] user) {
for (int i = 0; i < user.length; i++) {
prepareAppProfiles(pkg, user[i]);
}
}
/**
* Build the profiles names for all the package code paths (excluding resource only paths).
* Return the map [code path -> profile name].