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

Commit 423c0f55 authored by Jeremy Meyer's avatar Jeremy Meyer
Browse files

Keep disabled resources out of final apk

Test: Automated
Bug: 329436914
Flag: EXEMPT Aconfig not supported on host tools
Change-Id: Id5fdb025f004788ea40bdbd0b0df0dbda181f2c7
parent 16c83afa
Loading
Loading
Loading
Loading
+0 −5
Original line number Diff line number Diff line
@@ -68,11 +68,6 @@ public class ResourceFlaggingTest {
        assertThat(getBoolean("res3")).isTrue();
    }

    @Test
    public void testFlagDisabledNoValue() {
        assertThat(getString("str1")).isEqualTo("");
    }

    private boolean getBoolean(String name) {
        int resId = mResources.getIdentifier(
                name,
+2 −0
Original line number Diff line number Diff line
@@ -113,6 +113,7 @@ cc_library_host_static {
        "io/ZipArchive.cpp",
        "link/AutoVersioner.cpp",
        "link/FeatureFlagsFilter.cpp",
        "link/FlagDisabledResourceRemover.cpp",
        "link/ManifestFixer.cpp",
        "link/NoDefaultResourceRemover.cpp",
        "link/PrivateAttributeMover.cpp",
@@ -190,6 +191,7 @@ cc_test_host {
        "integration-tests/ConvertTest/**/*",
        "integration-tests/DumpTest/**/*",
        ":resource-flagging-test-app-apk",
        ":resource-flagging-test-app-r-java",
    ],
}

+13 −6
Original line number Diff line number Diff line
@@ -57,6 +57,7 @@
#include "java/ManifestClassGenerator.h"
#include "java/ProguardRules.h"
#include "link/FeatureFlagsFilter.h"
#include "link/FlagDisabledResourceRemover.h"
#include "link/Linkers.h"
#include "link/ManifestFixer.h"
#include "link/NoDefaultResourceRemover.h"
@@ -1885,6 +1886,12 @@ class Linker {
      }
    }

    if (!FlagDisabledResourceRemover{}.Consume(context_, table)) {
      context_->GetDiagnostics()->Error(android::DiagMessage()
                                        << "failed removing resources behind disabled flags");
      return 1;
    }

    const bool keep_raw_values = (context_->GetPackageType() == PackageType::kStaticLib)
                                 || options_.keep_raw_values;
    bool result = FlattenXml(context_, *manifest, kAndroidManifestPath, keep_raw_values,
@@ -2371,19 +2378,19 @@ class Linker {
      return 1;
    };

    if (!WriteApk(archive_writer.get(), &proguard_keep_set, manifest_xml.get(), &final_table_)) {
    if (options_.generate_java_class_path || options_.generate_text_symbols_path) {
      if (!GenerateJavaClasses()) {
        return 1;
      }
    }

    if (!CopyAssetsDirsToApk(archive_writer.get())) {
    if (!WriteApk(archive_writer.get(), &proguard_keep_set, manifest_xml.get(), &final_table_)) {
      return 1;
    }

    if (options_.generate_java_class_path || options_.generate_text_symbols_path) {
      if (!GenerateJavaClasses()) {
    if (!CopyAssetsDirsToApk(archive_writer.get())) {
      return 1;
    }
    }

    if (!WriteProguardFile(options_.generate_proguard_rules_path, proguard_keep_set)) {
      return 1;
+17 −1
Original line number Diff line number Diff line
@@ -47,10 +47,26 @@ genrule {
        "AndroidManifest.xml",
        ":resource-flagging-test-app-compile",
    ],
    out: ["resapp.apk"],
    out: [
        "resapp.apk",
    ],
    cmd: "$(location aapt2) link -o $(out) --manifest $(in)",
}

genrule {
    name: "resource-flagging-test-app-r-java",
    tools: ["aapt2"],
    // The first input file in the list must be the manifest
    srcs: [
        "AndroidManifest.xml",
        ":resource-flagging-test-app-compile",
    ],
    out: [
        "resource-flagging-java/com/android/intenal/flaggedresources/R.java",
    ],
    cmd: "$(location aapt2) link -o $(genDir)/resapp.apk --java $(genDir)/resource-flagging-java --manifest $(in)",
}

java_genrule {
    name: "resource-flagging-test-app-apk-as-resource",
    srcs: [
+2 −0
Original line number Diff line number Diff line
@@ -7,4 +7,6 @@
    <bool name="res2" android:featureFlag="test.package.trueFlag">true</bool>

    <bool name="res3">false</bool>

    <bool name="res4" android:featureFlag="test.package.falseFlag">true</bool>
</resources>
 No newline at end of file
Loading