Drop caches of apks-in-apex if APEX was updated am: 0782f3ea80 am: 94c541d4e5
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/17860345 Change-Id: Ia21285a6a24eb1cd8775c77daec36106d8400c0b Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
@@ -24,6 +24,7 @@ import static com.android.server.pm.PackageManagerService.SCAN_AS_APK_IN_APEX;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_AS_PRIVILEGED;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_AS_SYSTEM;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_BOOTING;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_DROP_CACHE;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_FIRST_BOOT_OR_UPGRADE;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_INITIAL;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_NO_DEX;
|
||||
@@ -167,7 +168,11 @@ final class InitAppsHelper {
|
||||
sp.getFolder().getAbsolutePath())
|
||||
|| apexInfo.preInstalledApexPath.getAbsolutePath().startsWith(
|
||||
sp.getFolder().getAbsolutePath() + File.separator)) {
|
||||
return new ScanPartition(apexInfo.apexDirectory, sp, SCAN_AS_APK_IN_APEX);
|
||||
int flags = SCAN_AS_APK_IN_APEX;
|
||||
if (apexInfo.activeApexChanged) {
|
||||
flags |= SCAN_DROP_CACHE;
|
||||
}
|
||||
return new ScanPartition(apexInfo.apexDirectory, sp, flags);
|
||||
}
|
||||
}
|
||||
return null;
|
||||
|
||||
@@ -72,6 +72,7 @@ import static com.android.server.pm.PackageManagerService.SCAN_AS_VENDOR;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_AS_VIRTUAL_PRELOAD;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_BOOTING;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_DONT_KILL_APP;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_DROP_CACHE;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_FIRST_BOOT_OR_UPGRADE;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_IGNORE_FROZEN;
|
||||
import static com.android.server.pm.PackageManagerService.SCAN_INITIAL;
|
||||
@@ -152,6 +153,7 @@ import com.android.server.pm.dex.ArtManagerService;
|
||||
import com.android.server.pm.dex.DexManager;
|
||||
import com.android.server.pm.dex.DexoptOptions;
|
||||
import com.android.server.pm.dex.ViewCompiler;
|
||||
import com.android.server.pm.parsing.PackageCacher;
|
||||
import com.android.server.pm.parsing.PackageParser2;
|
||||
import com.android.server.pm.parsing.pkg.AndroidPackage;
|
||||
import com.android.server.pm.parsing.pkg.AndroidPackageUtils;
|
||||
@@ -3418,6 +3420,11 @@ final class InstallPackageHelper {
|
||||
// Ignore entries which are not packages
|
||||
continue;
|
||||
}
|
||||
if ((scanFlags & SCAN_DROP_CACHE) != 0) {
|
||||
final PackageCacher cacher = new PackageCacher(mPm.getCacheDir());
|
||||
Log.w(TAG, "Dropping cache of " + file.getAbsolutePath());
|
||||
cacher.cleanCachedResult(file);
|
||||
}
|
||||
parallelPackageParser.submit(file, parseFlags);
|
||||
fileCount++;
|
||||
}
|
||||
|
||||
@@ -376,6 +376,7 @@ public class PackageManagerService implements PackageSender, TestUtilityService
|
||||
static final int SCAN_AS_SYSTEM_EXT = 1 << 21;
|
||||
static final int SCAN_AS_ODM = 1 << 22;
|
||||
static final int SCAN_AS_APK_IN_APEX = 1 << 23;
|
||||
static final int SCAN_DROP_CACHE = 1 << 24;
|
||||
|
||||
@IntDef(flag = true, prefix = { "SCAN_" }, value = {
|
||||
SCAN_NO_DEX,
|
||||
|
||||
Reference in New Issue
Block a user