Merge "AAPT2: Version code major flag"
This commit is contained in:
committed by
Android (Google) Code Review
commit
792dbbb2ab
@@ -159,8 +159,10 @@ class LinkCommand : public Command {
|
||||
&options_.manifest_fixer_options.target_sdk_version_default);
|
||||
AddOptionalFlag("--version-code",
|
||||
"Version code (integer) to inject into the AndroidManifest.xml if none is\n"
|
||||
"present.",
|
||||
&options_.manifest_fixer_options.version_code_default);
|
||||
"present.", &options_.manifest_fixer_options.version_code_default);
|
||||
AddOptionalFlag("--version-code-major",
|
||||
"Version code major (integer) to inject into the AndroidManifest.xml if none is\n"
|
||||
"present.", &options_.manifest_fixer_options.version_code_major_default);
|
||||
AddOptionalFlag("--version-name",
|
||||
"Version name to inject into the AndroidManifest.xml if none is present.",
|
||||
&options_.manifest_fixer_options.version_name_default);
|
||||
|
||||
@@ -282,6 +282,17 @@ bool ManifestFixer::BuildRules(xml::XmlActionExecutor* executor,
|
||||
}
|
||||
}
|
||||
|
||||
if (options_.version_code_major_default) {
|
||||
if (options_.replace_version) {
|
||||
el->RemoveAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
}
|
||||
if (el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor") == nullptr) {
|
||||
el->attributes.push_back(
|
||||
xml::Attribute{xml::kSchemaAndroid, "versionCodeMajor",
|
||||
options_.version_code_major_default.value()});
|
||||
}
|
||||
}
|
||||
|
||||
if (el->FindAttribute("", "platformBuildVersionCode") == nullptr) {
|
||||
auto versionCode = el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
if (versionCode != nullptr) {
|
||||
|
||||
@@ -52,6 +52,10 @@ struct ManifestFixerOptions {
|
||||
// replace_version is set.
|
||||
Maybe<std::string> version_code_default;
|
||||
|
||||
// The version code to set if 'android:versionCodeMajor' is not defined in <manifest> or if
|
||||
// replace_version is set.
|
||||
Maybe<std::string> version_code_major_default;
|
||||
|
||||
// The version of the framework being compiled against to set for 'android:compileSdkVersion' in
|
||||
// the <manifest> tag.
|
||||
Maybe<std::string> compile_sdk_version;
|
||||
|
||||
@@ -329,6 +329,7 @@ TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) {
|
||||
ManifestFixerOptions options;
|
||||
options.version_name_default = std::string("Beta");
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
options.version_code_major_default = std::string("0x20000000");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
@@ -347,136 +348,199 @@ TEST_F(ManifestFixerTest, UseDefaultVersionNameAndCode) {
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x10000000"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, DontUseDefaultVersionNameAndCode) {
|
||||
ManifestFixerOptions options;
|
||||
options.version_name_default = std::string("Beta");
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
ManifestFixerOptions options;
|
||||
options.version_name_default = std::string("Beta");
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
options.version_code_major_default = std::string("0x20000000");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x20000000"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000001"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000002"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, ReplaceVersionNameAndCode) {
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_name_default = std::string("Beta");
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_name_default = std::string("Beta");
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
options.version_code_major_default = std::string("0x20000000");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x20000000"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Beta"));
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Beta"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x10000000"));
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x10000000"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, ReplaceVersionName) {
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_name_default = std::string("Beta");
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_name_default = std::string("Beta");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x20000000"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Beta"));
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Beta"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000001"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000002"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, ReplaceVersionCode) {
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_code_default = std::string("0x10000000");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x10000000"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000002"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, ReplaceVersionCodeMajor) {
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
options.version_code_major_default = std::string("0x20000000");
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x20000000"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x10000000"));
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000001"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, DontReplaceVersionNameOrCode) {
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
ManifestFixerOptions options;
|
||||
options.replace_version = true;
|
||||
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x20000000"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
std::unique_ptr<xml::XmlResource> doc = VerifyWithOptions(R"EOF(
|
||||
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
package="android"
|
||||
android:versionCode="0x00000001"
|
||||
android:versionCodeMajor="0x00000002"
|
||||
android:versionName="Alpha" />)EOF",
|
||||
options);
|
||||
ASSERT_THAT(doc, NotNull());
|
||||
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
xml::Element* manifest_el = doc->root.get();
|
||||
ASSERT_THAT(manifest_el, NotNull());
|
||||
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
xml::Attribute* attr =
|
||||
manifest_el->FindAttribute(xml::kSchemaAndroid, "versionName");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("Alpha"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x20000000"));
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCode");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000001"));
|
||||
|
||||
attr = manifest_el->FindAttribute(xml::kSchemaAndroid, "versionCodeMajor");
|
||||
ASSERT_THAT(attr, NotNull());
|
||||
EXPECT_THAT(attr->value, StrEq("0x00000002"));
|
||||
}
|
||||
|
||||
TEST_F(ManifestFixerTest, EnsureManifestAttributesAreTyped) {
|
||||
|
||||
Reference in New Issue
Block a user