diff options
| -rw-r--r-- | services/core/java/com/android/server/pm/Settings.java | 14 | ||||
| -rw-r--r-- | services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt | 2 |
2 files changed, 10 insertions, 6 deletions
diff --git a/services/core/java/com/android/server/pm/Settings.java b/services/core/java/com/android/server/pm/Settings.java index e35a169cdd60..49c2d03d1d55 100644 --- a/services/core/java/com/android/server/pm/Settings.java +++ b/services/core/java/com/android/server/pm/Settings.java @@ -92,6 +92,7 @@ import android.util.proto.ProtoOutputStream; import com.android.internal.annotations.GuardedBy; import com.android.internal.annotations.VisibleForTesting; import com.android.internal.os.BackgroundThread; +import com.android.internal.pm.parsing.pkg.AndroidPackageInternal; import com.android.internal.pm.pkg.component.ParsedComponent; import com.android.internal.pm.pkg.component.ParsedIntentInfo; import com.android.internal.pm.pkg.component.ParsedPermission; @@ -909,8 +910,10 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile sharedUserSetting.mDisabledPackages.remove(p); } p.getPkgState().setUpdatedSystemApp(false); + final AndroidPackageInternal pkg = p.getPkg(); PackageSetting ret = addPackageLPw(name, p.getRealName(), p.getPath(), p.getAppId(), - p.getFlags(), p.getPrivateFlags(), mDomainVerificationManager.generateNewId()); + p.getFlags(), p.getPrivateFlags(), mDomainVerificationManager.generateNewId(), + pkg == null ? false : pkg.isSdkLibrary()); if (ret != null) { ret.setLegacyNativeLibraryPath(p.getLegacyNativeLibraryPath()); ret.setPrimaryCpuAbi(p.getPrimaryCpuAbiLegacy()); @@ -949,8 +952,8 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile } } - PackageSetting addPackageLPw(String name, String realName, File codePath, int uid, int pkgFlags, - int pkgPrivateFlags, @NonNull UUID domainSetId) { + PackageSetting addPackageLPw(String name, String realName, File codePath, int uid, + int pkgFlags, int pkgPrivateFlags, @NonNull UUID domainSetId, boolean isSdkLibrary) { PackageSetting p = mPackages.get(name); if (p != null) { if (p.getAppId() == uid) { @@ -962,7 +965,8 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile } p = new PackageSetting(name, realName, codePath, pkgFlags, pkgPrivateFlags, domainSetId) .setAppId(uid); - if (mAppIds.registerExistingAppId(uid, p, name)) { + if ((uid == Process.INVALID_UID && isSdkLibrary && Flags.disallowSdkLibsToBeApps()) + || mAppIds.registerExistingAppId(uid, p, name)) { mPackages.put(name, p); return p; } @@ -4157,7 +4161,7 @@ public final class Settings implements Watchable, Snappable, ResilientAtomicFile } else if (appId > 0 || (appId == Process.INVALID_UID && isSdkLibrary && Flags.disallowSdkLibsToBeApps())) { packageSetting = addPackageLPw(name.intern(), realName, new File(codePathStr), - appId, pkgFlags, pkgPrivateFlags, domainSetId); + appId, pkgFlags, pkgPrivateFlags, domainSetId, isSdkLibrary); if (PackageManagerService.DEBUG_SETTINGS) Log.i(PackageManagerService.TAG, "Reading package " + name + ": appId=" + appId + " pkg=" + packageSetting); diff --git a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt index 538c0ee52424..c9aab5318840 100644 --- a/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt +++ b/services/tests/mockingservicestests/src/com/android/server/pm/MockSystem.kt @@ -166,7 +166,7 @@ class MockSystem(withSession: (StaticMockitoSessionBuilder) -> Unit = {}) { null } whenever(mocks.settings.addPackageLPw(nullable(), nullable(), nullable(), nullable(), - nullable(), nullable(), nullable())) { + nullable(), nullable(), nullable(), nullable())) { val name: String = getArgument(0) val pendingAdd = mPendingPackageAdds.firstOrNull { it.first == name } ?: return@whenever null |