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

Commit cdf11ab7 authored by Treehugger Robot's avatar Treehugger Robot Committed by Automerger Merge Worker
Browse files

Merge "Add --no-compile-sdk-metadata switch to AAPT2" into udc-dev am: 0e27ed29

parents ac430218 0e27ed29
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -209,6 +209,11 @@ class LinkCommand : public Command {
    AddOptionalFlag("--compile-sdk-version-name",
        "Version name to inject into the AndroidManifest.xml if none is present.",
        &options_.manifest_fixer_options.compile_sdk_version_codename);
    AddOptionalSwitch(
        "--no-compile-sdk-metadata",
        "Suppresses output of compile SDK-related attributes in AndroidManifest.xml,\n"
        "including android:compileSdkVersion and platformBuildVersion.",
        &options_.manifest_fixer_options.no_compile_sdk_metadata);
    AddOptionalFlagList("--fingerprint-prefix", "Fingerprint prefix to add to install constraints.",
                        &options_.manifest_fixer_options.fingerprint_prefixes);
    AddOptionalSwitch("--shared-lib", "Generates a shared Android runtime library.",
+2 −3
Original line number Diff line number Diff line
@@ -719,7 +719,7 @@ bool ManifestFixer::Consume(IAaptContext* context, xml::XmlResource* doc) {
    root->InsertChild(0, std::move(uses_sdk));
  }

  if (options_.compile_sdk_version) {
  if (!options_.no_compile_sdk_metadata && options_.compile_sdk_version) {
    xml::Attribute* attr = root->FindOrCreateAttribute(xml::kSchemaAndroid, "compileSdkVersion");

    // Make sure we un-compile the value if it was set to something else.
@@ -731,10 +731,9 @@ bool ManifestFixer::Consume(IAaptContext* context, xml::XmlResource* doc) {
    // Make sure we un-compile the value if it was set to something else.
    attr->compiled_value = {};
    attr->value = options_.compile_sdk_version.value();

  }

  if (options_.compile_sdk_version_codename) {
  if (!options_.no_compile_sdk_metadata && options_.compile_sdk_version_codename) {
    xml::Attribute* attr =
        root->FindOrCreateAttribute(xml::kSchemaAndroid, "compileSdkVersionCodename");

+6 −2
Original line number Diff line number Diff line
@@ -67,11 +67,12 @@ struct ManifestFixerOptions {
  std::optional<std::string> revision_code_default;

  // The version of the framework being compiled against to set for 'android:compileSdkVersion' in
  // the <manifest> tag.
  // the <manifest> tag. Not used if no_compile_sdk_metadata is set.
  std::optional<std::string> compile_sdk_version;

  // The version codename of the framework being compiled against to set for
  // 'android:compileSdkVersionCodename' in the <manifest> tag.
  // 'android:compileSdkVersionCodename' in the <manifest> tag. Not used if no_compile_sdk_metadata
  // is set.
  std::optional<std::string> compile_sdk_version_codename;

  // The fingerprint prefixes to be added to the <install-constraints> tag.
@@ -87,6 +88,9 @@ struct ManifestFixerOptions {

  // Whether to replace the manifest version with the the command line version
  bool replace_version = false;

  // Whether to suppress `android:compileSdkVersion*` and `platformBuildVersion*` attributes.
  bool no_compile_sdk_metadata = false;
};

// Verifies that the manifest is correctly formed and inserts defaults where specified with
+29 −0
Original line number Diff line number Diff line
@@ -892,6 +892,35 @@ TEST_F(ManifestFixerTest, InsertCompileSdkVersions) {
  EXPECT_THAT(attr->value, StrEq("P"));
}

TEST_F(ManifestFixerTest, DoNotInsertCompileSdkVersions) {
  std::string input = R"(<manifest package="com.pkg" />)";
  ManifestFixerOptions options;
  options.no_compile_sdk_metadata = true;
  options.compile_sdk_version = {"28"};
  options.compile_sdk_version_codename = {"P"};

  std::unique_ptr<xml::XmlResource> manifest = VerifyWithOptions(input, options);
  ASSERT_THAT(manifest, NotNull());

  // There should be a declaration of kSchemaAndroid, even when the input
  // didn't have one.
  EXPECT_EQ(manifest->root->namespace_decls.size(), 1);
  EXPECT_EQ(manifest->root->namespace_decls[0].prefix, "android");
  EXPECT_EQ(manifest->root->namespace_decls[0].uri, xml::kSchemaAndroid);

  xml::Attribute* attr = manifest->root->FindAttribute(xml::kSchemaAndroid, "compileSdkVersion");
  ASSERT_THAT(attr, IsNull());

  attr = manifest->root->FindAttribute(xml::kSchemaAndroid, "compileSdkVersionCodename");
  ASSERT_THAT(attr, IsNull());

  attr = manifest->root->FindAttribute("", "platformBuildVersionCode");
  ASSERT_THAT(attr, IsNull());

  attr = manifest->root->FindAttribute("", "platformBuildVersionName");
  ASSERT_THAT(attr, IsNull());
}

TEST_F(ManifestFixerTest, OverrideCompileSdkVersions) {
  std::string input = R"(
      <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android"