Loading services/core/java/com/android/server/compat/CompatConfig.java +9 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.internal.compat.IOverrideValidator; import com.android.internal.compat.OverrideAllowedState; import com.android.server.compat.config.Change; import com.android.server.compat.config.XmlParser; import com.android.server.pm.ApexManager; import org.xmlpull.v1.XmlPullParserException; Loading @@ -45,6 +46,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.xml.datatype.DatatypeConfigurationException; Loading Loading @@ -369,12 +371,18 @@ final class CompatConfig { Environment.getRootDirectory(), "etc", "compatconfig")); config.initConfigFromLib(Environment.buildPath( Environment.getRootDirectory(), "system_ext", "etc", "compatconfig")); List<ApexManager.ActiveApexInfo> apexes = ApexManager.getInstance().getActiveApexInfos(); for (ApexManager.ActiveApexInfo apex : apexes) { config.initConfigFromLib(Environment.buildPath( apex.apexDirectory, "etc", "compatconfig")); } return config; } void initConfigFromLib(File libraryDir) { if (!libraryDir.exists() || !libraryDir.isDirectory()) { Slog.e(TAG, "No directory " + libraryDir + ", skipping"); Slog.d(TAG, "No directory " + libraryDir + ", skipping"); return; } for (File f : libraryDir.listFiles()) { Loading services/core/java/com/android/server/pm/ApexManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public abstract class ApexManager { * Returns an instance of either {@link ApexManagerImpl} or {@link ApexManagerFlattenedApex} * depending on whether this device supports APEX, i.e. {@link ApexProperties#updatable()} * evaluates to {@code true}. * @hide */ public static ApexManager getInstance() { return sApexManagerSingleton.get(); Loading @@ -102,8 +103,9 @@ public abstract class ApexManager { /** * Minimal information about APEX mount points and the original APEX package they refer to. * @hide */ static class ActiveApexInfo { public static class ActiveApexInfo { @Nullable public final String apexModuleName; public final File apexDirectory; public final File preInstalledApexPath; Loading @@ -130,8 +132,10 @@ public abstract class ApexManager { /** * Returns {@link ActiveApexInfo} records relative to all active APEX packages. * * @hide */ abstract List<ActiveApexInfo> getActiveApexInfos(); public abstract List<ActiveApexInfo> getActiveApexInfos(); abstract void systemReady(Context context); Loading Loading @@ -362,7 +366,7 @@ public abstract class ApexManager { } @Override List<ActiveApexInfo> getActiveApexInfos() { public List<ActiveApexInfo> getActiveApexInfos() { synchronized (mLock) { if (mActiveApexInfosCache == null) { try { Loading Loading @@ -798,7 +802,7 @@ public abstract class ApexManager { */ private static final class ApexManagerFlattenedApex extends ApexManager { @Override List<ActiveApexInfo> getActiveApexInfos() { public List<ActiveApexInfo> getActiveApexInfos() { // There is no apexd running in case of flattened apex // We look up the /apex directory and identify the active APEX modules from there. // As "preinstalled" path, we just report /system since in the case of flattened APEX Loading Loading
services/core/java/com/android/server/compat/CompatConfig.java +9 −1 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ import com.android.internal.compat.IOverrideValidator; import com.android.internal.compat.OverrideAllowedState; import com.android.server.compat.config.Change; import com.android.server.compat.config.XmlParser; import com.android.server.pm.ApexManager; import org.xmlpull.v1.XmlPullParserException; Loading @@ -45,6 +46,7 @@ import java.io.IOException; import java.io.InputStream; import java.io.PrintWriter; import java.util.HashSet; import java.util.List; import java.util.Set; import javax.xml.datatype.DatatypeConfigurationException; Loading Loading @@ -369,12 +371,18 @@ final class CompatConfig { Environment.getRootDirectory(), "etc", "compatconfig")); config.initConfigFromLib(Environment.buildPath( Environment.getRootDirectory(), "system_ext", "etc", "compatconfig")); List<ApexManager.ActiveApexInfo> apexes = ApexManager.getInstance().getActiveApexInfos(); for (ApexManager.ActiveApexInfo apex : apexes) { config.initConfigFromLib(Environment.buildPath( apex.apexDirectory, "etc", "compatconfig")); } return config; } void initConfigFromLib(File libraryDir) { if (!libraryDir.exists() || !libraryDir.isDirectory()) { Slog.e(TAG, "No directory " + libraryDir + ", skipping"); Slog.d(TAG, "No directory " + libraryDir + ", skipping"); return; } for (File f : libraryDir.listFiles()) { Loading
services/core/java/com/android/server/pm/ApexManager.java +8 −4 Original line number Diff line number Diff line Loading @@ -95,6 +95,7 @@ public abstract class ApexManager { * Returns an instance of either {@link ApexManagerImpl} or {@link ApexManagerFlattenedApex} * depending on whether this device supports APEX, i.e. {@link ApexProperties#updatable()} * evaluates to {@code true}. * @hide */ public static ApexManager getInstance() { return sApexManagerSingleton.get(); Loading @@ -102,8 +103,9 @@ public abstract class ApexManager { /** * Minimal information about APEX mount points and the original APEX package they refer to. * @hide */ static class ActiveApexInfo { public static class ActiveApexInfo { @Nullable public final String apexModuleName; public final File apexDirectory; public final File preInstalledApexPath; Loading @@ -130,8 +132,10 @@ public abstract class ApexManager { /** * Returns {@link ActiveApexInfo} records relative to all active APEX packages. * * @hide */ abstract List<ActiveApexInfo> getActiveApexInfos(); public abstract List<ActiveApexInfo> getActiveApexInfos(); abstract void systemReady(Context context); Loading Loading @@ -362,7 +366,7 @@ public abstract class ApexManager { } @Override List<ActiveApexInfo> getActiveApexInfos() { public List<ActiveApexInfo> getActiveApexInfos() { synchronized (mLock) { if (mActiveApexInfosCache == null) { try { Loading Loading @@ -798,7 +802,7 @@ public abstract class ApexManager { */ private static final class ApexManagerFlattenedApex extends ApexManager { @Override List<ActiveApexInfo> getActiveApexInfos() { public List<ActiveApexInfo> getActiveApexInfos() { // There is no apexd running in case of flattened apex // We look up the /apex directory and identify the active APEX modules from there. // As "preinstalled" path, we just report /system since in the case of flattened APEX Loading