summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/content/res/AssetManager.java19
-rw-r--r--services/core/java/com/android/server/om/IdmapManager.java50
-rw-r--r--services/core/java/com/android/server/om/OverlayManagerService.java6
-rw-r--r--services/java/com/android/server/SystemServer.java2
-rw-r--r--services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java2
5 files changed, 24 insertions, 55 deletions
diff --git a/core/java/android/content/res/AssetManager.java b/core/java/android/content/res/AssetManager.java
index 567e26b4c2f6..7d6dc97e82cb 100644
--- a/core/java/android/content/res/AssetManager.java
+++ b/core/java/android/content/res/AssetManager.java
@@ -60,7 +60,6 @@ import java.util.Map;
public final class AssetManager implements AutoCloseable {
private static final String TAG = "AssetManager";
private static final boolean DEBUG_REFS = false;
- private static final boolean FEATURE_FLAG_IDMAP2 = true;
private static final String FRAMEWORK_APK_PATH = "/system/framework/framework-res.apk";
@@ -202,20 +201,14 @@ public final class AssetManager implements AutoCloseable {
try {
final ArrayList<ApkAssets> apkAssets = new ArrayList<>();
apkAssets.add(ApkAssets.loadFromPath(FRAMEWORK_APK_PATH, true /*system*/));
- if (FEATURE_FLAG_IDMAP2) {
- final String[] systemIdmapPaths =
- nativeCreateIdmapsForStaticOverlaysTargetingAndroid();
- if (systemIdmapPaths != null) {
- for (String idmapPath : systemIdmapPaths) {
- apkAssets.add(ApkAssets.loadOverlayFromPath(idmapPath, true /*system*/));
- }
- } else {
- Log.w(TAG, "'idmap2 --scan' failed: no static=\"true\" overlays targeting "
- + "\"android\" will be loaded");
+ final String[] systemIdmapPaths = nativeCreateIdmapsForStaticOverlaysTargetingAndroid();
+ if (systemIdmapPaths != null) {
+ for (String idmapPath : systemIdmapPaths) {
+ apkAssets.add(ApkAssets.loadOverlayFromPath(idmapPath, true /*system*/));
}
} else {
- nativeVerifySystemIdmaps();
- loadStaticRuntimeOverlays(apkAssets);
+ Log.w(TAG, "'idmap2 --scan' failed: no static=\"true\" overlays targeting "
+ + "\"android\" will be loaded");
}
sSystemApkAssetsSet = new ArraySet<>(apkAssets);
diff --git a/services/core/java/com/android/server/om/IdmapManager.java b/services/core/java/com/android/server/om/IdmapManager.java
index 288ef0e618b6..f3c912817d05 100644
--- a/services/core/java/com/android/server/om/IdmapManager.java
+++ b/services/core/java/com/android/server/om/IdmapManager.java
@@ -30,20 +30,17 @@ import android.os.UserHandle;
import android.util.Slog;
import com.android.server.om.OverlayManagerServiceImpl.PackageManagerHelper;
-import com.android.server.pm.Installer;
import java.io.File;
/**
* Handle the creation and deletion of idmap files.
*
- * The actual work is performed by the idmap binary, launched through Installer
- * and installd (or idmap2).
+ * The actual work is performed by the idmap binary, launched through idmap2d.
*
* Note: this class is subclassed in the OMS unit tests, and hence not marked as final.
*/
class IdmapManager {
- private static final boolean FEATURE_FLAG_IDMAP2 = true;
private static final boolean VENDOR_IS_Q_OR_LATER;
static {
final String value = SystemProperties.get("ro.vndk.version", "29");
@@ -58,12 +55,10 @@ class IdmapManager {
VENDOR_IS_Q_OR_LATER = isQOrLater;
}
- private final Installer mInstaller;
private final PackageManagerHelper mPackageManager;
private final IdmapDaemon mIdmapDaemon;
- IdmapManager(final Installer installer, final PackageManagerHelper packageManager) {
- mInstaller = installer;
+ IdmapManager(final PackageManagerHelper packageManager) {
mPackageManager = packageManager;
mIdmapDaemon = IdmapDaemon.getInstance();
}
@@ -78,18 +73,13 @@ class IdmapManager {
final String targetPath = targetPackage.applicationInfo.getBaseCodePath();
final String overlayPath = overlayPackage.applicationInfo.getBaseCodePath();
try {
- if (FEATURE_FLAG_IDMAP2) {
- int policies = calculateFulfilledPolicies(targetPackage, overlayPackage, userId);
- boolean enforce = enforceOverlayable(overlayPackage);
- if (mIdmapDaemon.verifyIdmap(overlayPath, policies, enforce, userId)) {
- return true;
- }
- return mIdmapDaemon.createIdmap(targetPath, overlayPath, policies,
- enforce, userId) != null;
- } else {
- mInstaller.idmap(targetPath, overlayPath, sharedGid);
+ int policies = calculateFulfilledPolicies(targetPackage, overlayPackage, userId);
+ boolean enforce = enforceOverlayable(overlayPackage);
+ if (mIdmapDaemon.verifyIdmap(overlayPath, policies, enforce, userId)) {
return true;
}
+ return mIdmapDaemon.createIdmap(targetPath, overlayPath, policies,
+ enforce, userId) != null;
} catch (Exception e) {
Slog.w(TAG, "failed to generate idmap for " + targetPath + " and "
+ overlayPath + ": " + e.getMessage());
@@ -102,12 +92,7 @@ class IdmapManager {
Slog.d(TAG, "remove idmap for " + oi.baseCodePath);
}
try {
- if (FEATURE_FLAG_IDMAP2) {
- return mIdmapDaemon.removeIdmap(oi.baseCodePath, userId);
- } else {
- mInstaller.removeIdmap(oi.baseCodePath);
- return true;
- }
+ return mIdmapDaemon.removeIdmap(oi.baseCodePath, userId);
} catch (Exception e) {
Slog.w(TAG, "failed to remove idmap for " + oi.baseCodePath + ": " + e.getMessage());
return false;
@@ -125,19 +110,12 @@ class IdmapManager {
private @NonNull String getIdmapPath(@NonNull final String overlayPackagePath,
final int userId) {
- if (FEATURE_FLAG_IDMAP2) {
- try {
- return mIdmapDaemon.getIdmapPath(overlayPackagePath, userId);
- } catch (Exception e) {
- Slog.w(TAG, "failed to get idmap path for " + overlayPackagePath + ": "
- + e.getMessage());
- return "";
- }
- } else {
- final StringBuilder sb = new StringBuilder("/data/resource-cache/");
- sb.append(overlayPackagePath.substring(1).replace('/', '@'));
- sb.append("@idmap");
- return sb.toString();
+ try {
+ return mIdmapDaemon.getIdmapPath(overlayPackagePath, userId);
+ } catch (Exception e) {
+ Slog.w(TAG, "failed to get idmap path for " + overlayPackagePath + ": "
+ + e.getMessage());
+ return "";
}
}
diff --git a/services/core/java/com/android/server/om/OverlayManagerService.java b/services/core/java/com/android/server/om/OverlayManagerService.java
index f8b3fb259089..83bea9dd1efc 100644
--- a/services/core/java/com/android/server/om/OverlayManagerService.java
+++ b/services/core/java/com/android/server/om/OverlayManagerService.java
@@ -62,7 +62,6 @@ import com.android.server.FgThread;
import com.android.server.IoThread;
import com.android.server.LocalServices;
import com.android.server.SystemService;
-import com.android.server.pm.Installer;
import com.android.server.pm.UserManagerService;
import libcore.util.EmptyArray;
@@ -230,8 +229,7 @@ public final class OverlayManagerService extends SystemService {
private final AtomicBoolean mPersistSettingsScheduled = new AtomicBoolean(false);
- public OverlayManagerService(@NonNull final Context context,
- @NonNull final Installer installer) {
+ public OverlayManagerService(@NonNull final Context context) {
super(context);
try {
traceBegin(TRACE_TAG_RRO, "OMS#OverlayManagerService");
@@ -239,7 +237,7 @@ public final class OverlayManagerService extends SystemService {
new File(Environment.getDataSystemDirectory(), "overlays.xml"), "overlays");
mPackageManager = new PackageManagerHelper();
mUserManager = UserManagerService.getInstance();
- IdmapManager im = new IdmapManager(installer, mPackageManager);
+ IdmapManager im = new IdmapManager(mPackageManager);
mSettings = new OverlayManagerSettings();
mImpl = new OverlayManagerServiceImpl(mPackageManager, im, mSettings,
getDefaultOverlayPackages(), new OverlayChangeListener());
diff --git a/services/java/com/android/server/SystemServer.java b/services/java/com/android/server/SystemServer.java
index e93e17ae7a3c..de65002c2c31 100644
--- a/services/java/com/android/server/SystemServer.java
+++ b/services/java/com/android/server/SystemServer.java
@@ -804,7 +804,7 @@ public final class SystemServer {
// Manages Overlay packages
t.traceBegin("StartOverlayManagerService");
- mSystemServiceManager.startService(new OverlayManagerService(mSystemContext, installer));
+ mSystemServiceManager.startService(new OverlayManagerService(mSystemContext));
t.traceEnd();
t.traceBegin("StartSensorPrivacyService");
diff --git a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
index 3cdadd58486f..c566dfc4a23e 100644
--- a/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
+++ b/services/tests/servicestests/src/com/android/server/om/OverlayManagerServiceImplTests.java
@@ -444,7 +444,7 @@ public class OverlayManagerServiceImplTests {
private Set<String> mIdmapFiles = new ArraySet<>();
DummyIdmapManager(DummyDeviceState state, DummyPackageManagerHelper packageManagerHelper) {
- super(null, packageManagerHelper);
+ super(packageManagerHelper);
mState = state;
}