Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 6c8a5ea3 authored by LuK1337's avatar LuK1337 Committed by Luca Stefani
Browse files

Allow lineage resources package to be overlayed by RRO packages

Change-Id: I152ef9a87b16338e14af508e0f1f42830688c5ea
parent 46c746d9
Loading
Loading
Loading
Loading
+22 −16
Original line number Diff line number Diff line
@@ -333,7 +333,9 @@ public class OverlayConfig {
        for (int i = 0, n = sortedConfigs.size(); i < n; i++) {
            final Configuration overlay = sortedConfigs.get(i);
            if (overlay.parsedConfig.mutable || !overlay.parsedConfig.enabled
                    || !"android".equals(overlay.parsedConfig.parsedInfo.targetPackageName)) {
                    || (!"android".equals(overlay.parsedConfig.parsedInfo.targetPackageName) &&
                            !"lineageos.platform".equals(
                                    overlay.parsedConfig.parsedInfo.targetPackageName))) {
                continue;
            }

@@ -372,11 +374,14 @@ public class OverlayConfig {
     */
    @NonNull
    public String[] createImmutableFrameworkIdmapsInZygote() {
        final String targetPath = "/system/framework/framework-res.apk";
        final ArrayList<String> idmapPaths = new ArrayList<>();
        final ArrayList<IdmapInvocation> idmapInvocations =
                getImmutableFrameworkOverlayIdmapInvocations();

        for (String targetPath : new String[] {
                "/system/framework/framework-res.apk",
                "/system/framework/org.lineageos.platform-res.apk",
        }) {
            for (int i = 0, n = idmapInvocations.size(); i < n; i++) {
                final IdmapInvocation invocation = idmapInvocations.get(i);
                final String[] idmaps = createIdmap(targetPath,
@@ -393,6 +398,7 @@ public class OverlayConfig {

                idmapPaths.addAll(Arrays.asList(idmaps));
            }
        }

        return idmapPaths.toArray(new String[0]);
    }
+2 −1
Original line number Diff line number Diff line
@@ -704,7 +704,8 @@ final class OverlayManagerServiceImpl {
        // layers.
        boolean modified = false;
        if (targetPackage != null && overlayPackage != null
                && !("android".equals(targetPackageName)
                && !(("android".equals(targetPackageName) ||
                        "lineageos.platform".equals(targetPackageName))
                    && !isPackageConfiguredMutable(overlayPackageName))) {
            modified |= mIdmapManager.createIdmap(targetPackage, overlayPackage, userId);
        }
+4 −2
Original line number Diff line number Diff line
@@ -165,7 +165,8 @@ final class OverlayManagerSettings {
        // Immutable RROs targeting "android" are loaded from AssetManager, and so they should be
        // ignored in OverlayManagerService.
        return selectWhereTarget(targetPackageName, userId)
                .filter((i) -> i.isMutable() || !"android".equals(i.getTargetPackageName()))
                .filter((i) -> i.isMutable() || (!"android".equals(i.getTargetPackageName()) &&
                        !"lineageos.platform".equals(i.getTargetPackageName())))
                .map(SettingsItem::getOverlayInfo)
                .collect(Collectors.toList());
    }
@@ -174,7 +175,8 @@ final class OverlayManagerSettings {
        // Immutable RROs targeting "android" are loaded from AssetManager, and so they should be
        // ignored in OverlayManagerService.
        return selectWhereUser(userId)
                .filter((i) -> i.isMutable() || !"android".equals(i.getTargetPackageName()))
                .filter((i) -> i.isMutable() || (!"android".equals(i.getTargetPackageName()) &&
                        !"lineageos.platform".equals(i.getTargetPackageName())))
                .map(SettingsItem::getOverlayInfo)
                .collect(Collectors.groupingBy(info -> info.targetPackageName, ArrayMap::new,
                        Collectors.toList()));