Fix NPE on calling Resources.getConfiguration()
Root cause: To update the code paths without triggering onChanged().
Explanation:
1. The mInstallArgs.mInstallFlags contains
PackageManager.DONT_KILL_APP.
2. The existing package settings is not null.
a.k.a. ps1.getOldCodePaths() != null
3. The call flow doesn't trigger ps1.setOldCodePaths(...)
4. The settings memory has been updated. However, snapshot doesn't
update to the clients of PackageManagerServices.
Reference: b/210884444#comment12
Reference: b/209805326#comment10
Test: presubmit
Bug: 210884444
Bug: 209805326
Change-Id: I8a52a65bdfaed0ab385ee21b0512efae54f92c30
This commit is contained in:
@@ -1969,14 +1969,15 @@ final class InstallPackageHelper {
|
||||
reconciledPkg.mPrepareResult.mExistingPackage.getPackageName());
|
||||
if ((reconciledPkg.mInstallArgs.mInstallFlags & PackageManager.DONT_KILL_APP)
|
||||
== 0) {
|
||||
if (ps1.getOldCodePaths() == null) {
|
||||
ps1.setOldCodePaths(new ArraySet<>());
|
||||
Set<String> oldCodePaths = ps1.getOldCodePaths();
|
||||
if (oldCodePaths == null) {
|
||||
oldCodePaths = new ArraySet<>();
|
||||
}
|
||||
Collections.addAll(ps1.getOldCodePaths(), oldPackage.getBaseApkPath());
|
||||
Collections.addAll(oldCodePaths, oldPackage.getBaseApkPath());
|
||||
if (oldPackage.getSplitCodePaths() != null) {
|
||||
Collections.addAll(ps1.getOldCodePaths(),
|
||||
oldPackage.getSplitCodePaths());
|
||||
Collections.addAll(oldCodePaths, oldPackage.getSplitCodePaths());
|
||||
}
|
||||
ps1.setOldCodePaths(oldCodePaths);
|
||||
} else {
|
||||
ps1.setOldCodePaths(null);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user