Use updatable sysprop to for enabling APEX mgmt
This should prevent unnecessary communication with apexd on devices that
don't support APEX package management.
Bug: 130623080
Test: CTS tests on marlin (no APEX support) and cuttlefish
Change-Id: Ic5fdb088aa1530b3c5aecbd5abd3d794a364c775
diff --git a/Android.bp b/Android.bp
index 0fcc0d5..abf95a8 100644
--- a/Android.bp
+++ b/Android.bp
@@ -687,6 +687,7 @@
"core/java/com/android/server/DropboxLogTags.logtags",
"core/java/org/chromium/arc/EventLogTags.logtags",
+ ":apex-properties",
":platform-properties",
":framework-statslog-gen",
@@ -1834,4 +1835,4 @@
name: "framework-aidl-mappings",
srcs: [":framework-defaults"],
output: "framework-aidl-mappings.txt"
-}
\ No newline at end of file
+}
diff --git a/services/core/java/com/android/server/pm/ApexManager.java b/services/core/java/com/android/server/pm/ApexManager.java
index 21b6f12..5430f4c 100644
--- a/services/core/java/com/android/server/pm/ApexManager.java
+++ b/services/core/java/com/android/server/pm/ApexManager.java
@@ -33,6 +33,7 @@
import android.os.RemoteException;
import android.os.ServiceManager;
import android.os.ServiceManager.ServiceNotFoundException;
+import android.sysprop.ApexProperties;
import android.util.Slog;
import com.android.internal.annotations.GuardedBy;
@@ -237,11 +238,7 @@
* @return true if APEX packages can be managed on this device, false otherwise.
*/
boolean isApexSupported() {
- populateActivePackagesCacheIfNeeded();
- // There is no system-wide property available to check if APEX are flattened and hence can't
- // be updated. In absence of such property, we assume that if we didn't index APEX packages
- // since they were flattened, no APEX management should be possible.
- return !mActivePackagesCache.isEmpty();
+ return ApexProperties.updatable().orElse(false);
}
/**