Merge "Add --no-compile-sdk-metadata switch to AAPT2" into udc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
0e27ed29b3
@@ -209,6 +209,11 @@ class LinkCommand : public Command {
|
|||||||
AddOptionalFlag("--compile-sdk-version-name",
|
AddOptionalFlag("--compile-sdk-version-name",
|
||||||
"Version name to inject into the AndroidManifest.xml if none is present.",
|
"Version name to inject into the AndroidManifest.xml if none is present.",
|
||||||
&options_.manifest_fixer_options.compile_sdk_version_codename);
|
&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.",
|
AddOptionalFlagList("--fingerprint-prefix", "Fingerprint prefix to add to install constraints.",
|
||||||
&options_.manifest_fixer_options.fingerprint_prefixes);
|
&options_.manifest_fixer_options.fingerprint_prefixes);
|
||||||
AddOptionalSwitch("--shared-lib", "Generates a shared Android runtime library.",
|
AddOptionalSwitch("--shared-lib", "Generates a shared Android runtime library.",
|
||||||
|
|||||||
@@ -719,7 +719,7 @@ bool ManifestFixer::Consume(IAaptContext* context, xml::XmlResource* doc) {
|
|||||||
root->InsertChild(0, std::move(uses_sdk));
|
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");
|
xml::Attribute* attr = root->FindOrCreateAttribute(xml::kSchemaAndroid, "compileSdkVersion");
|
||||||
|
|
||||||
// Make sure we un-compile the value if it was set to something else.
|
// 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.
|
// Make sure we un-compile the value if it was set to something else.
|
||||||
attr->compiled_value = {};
|
attr->compiled_value = {};
|
||||||
attr->value = options_.compile_sdk_version.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 =
|
xml::Attribute* attr =
|
||||||
root->FindOrCreateAttribute(xml::kSchemaAndroid, "compileSdkVersionCodename");
|
root->FindOrCreateAttribute(xml::kSchemaAndroid, "compileSdkVersionCodename");
|
||||||
|
|
||||||
|
|||||||
@@ -67,11 +67,12 @@ struct ManifestFixerOptions {
|
|||||||
std::optional<std::string> revision_code_default;
|
std::optional<std::string> revision_code_default;
|
||||||
|
|
||||||
// The version of the framework being compiled against to set for 'android:compileSdkVersion' in
|
// 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;
|
std::optional<std::string> compile_sdk_version;
|
||||||
|
|
||||||
// The version codename of the framework being compiled against to set for
|
// 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;
|
std::optional<std::string> compile_sdk_version_codename;
|
||||||
|
|
||||||
// The fingerprint prefixes to be added to the <install-constraints> tag.
|
// 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
|
// Whether to replace the manifest version with the the command line version
|
||||||
bool replace_version = false;
|
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
|
// Verifies that the manifest is correctly formed and inserts defaults where specified with
|
||||||
|
|||||||
@@ -892,6 +892,35 @@ TEST_F(ManifestFixerTest, InsertCompileSdkVersions) {
|
|||||||
EXPECT_THAT(attr->value, StrEq("P"));
|
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) {
|
TEST_F(ManifestFixerTest, OverrideCompileSdkVersions) {
|
||||||
std::string input = R"(
|
std::string input = R"(
|
||||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android"
|
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="android"
|
||||||
|
|||||||
Reference in New Issue
Block a user