libvintf 2.0.

Bump libvintf's meta version to 2.0.

Older versions of libvintf can't parse meta
version 2.0. Now that VINTF checks are no longer executed
during OTA time but only during build times, we no longer
need forwards-compatibility of libvintf (that is, older
versions of libvintf doesn't need to parse new VINTF metadata
anymore).

Now, libvintf can read all manifests / matrices with version 1.x
and 2.0. Libvintf always writes manifests / matrices with version
2.0.

This is the first non-forwards-compatible change to libvintf.

Test: libvintf_test
Bug: 139300422

Change-Id: Ic66091a1e6a70248a38c5404c02c201f627413df
diff --git a/CompatibilityMatrix.cpp b/CompatibilityMatrix.cpp
index b9cf494..0ecb82c 100644
--- a/CompatibilityMatrix.cpp
+++ b/CompatibilityMatrix.cpp
@@ -96,12 +96,6 @@
     return mLevel;
 }
 
-Version CompatibilityMatrix::getMinimumMetaVersion() const {
-    // TODO(b/62801658): this needs to depend on whether there are 1.1 requirements
-    // (e.g. required <xmlfile> entry)
-    return {1, 0};
-}
-
 status_t CompatibilityMatrix::fetchAllInformation(const FileSystem* fileSystem,
                                                   const std::string& path, std::string* error) {
     return details::fetchAllInformation(fileSystem, path, gCompatibilityMatrixConverter, this,
diff --git a/HalManifest.cpp b/HalManifest.cpp
index 1af4eba..6b3cedc 100644
--- a/HalManifest.cpp
+++ b/HalManifest.cpp
@@ -26,10 +26,11 @@
 
 #include <android-base/strings.h>
 
+#include "CompatibilityMatrix.h"
+#include "constants.h"
 #include "parse_string.h"
 #include "parse_xml.h"
 #include "utils.h"
-#include "CompatibilityMatrix.h"
 
 namespace android {
 namespace vintf {
@@ -384,7 +385,7 @@
 }
 
 Version HalManifest::getMetaVersion() const {
-    return mMetaVersion;
+    return kMetaVersion;
 }
 
 const Version &HalManifest::sepolicyVersion() const {
@@ -482,15 +483,6 @@
 }
 
 bool HalManifest::addAll(HalManifest* other, std::string* error) {
-    if (other->mMetaVersion.majorVer != mMetaVersion.majorVer) {
-        if (error) {
-            *error = "Cannot merge manifest version " + to_string(mMetaVersion) + " and " +
-                     to_string(other->mMetaVersion);
-        }
-        return false;
-    }
-    mMetaVersion.minorVer = std::max(mMetaVersion.minorVer, other->mMetaVersion.minorVer);
-
     if (type() != other->type()) {
         if (error) {
             *error = "Cannot add a " + to_string(other->type()) + " manifest to a " +
diff --git a/include/vintf/CompatibilityMatrix.h b/include/vintf/CompatibilityMatrix.h
index f6c9c93..475ccbf 100644
--- a/include/vintf/CompatibilityMatrix.h
+++ b/include/vintf/CompatibilityMatrix.h
@@ -48,7 +48,6 @@
 
     SchemaType type() const;
     Level level() const;
-    Version getMinimumMetaVersion() const;
 
     // If the corresponding <xmlfile> with the given version exists, for the first match,
     // - Return the overridden <path> if it is present,
diff --git a/include/vintf/HalManifest.h b/include/vintf/HalManifest.h
index 6bcc8d6..a3f278b 100644
--- a/include/vintf/HalManifest.h
+++ b/include/vintf/HalManifest.h
@@ -175,8 +175,6 @@
 
     SchemaType mType;
     Level mLevel = Level::UNSPECIFIED;
-    // version attribute. Default is 1.0 for manifests created programatically.
-    Version mMetaVersion{1, 0};
 
     // entries for device hal manifest only
     struct {
diff --git a/include/vintf/constants.h b/include/vintf/constants.h
index efbb73c..da526fe 100644
--- a/include/vintf/constants.h
+++ b/include/vintf/constants.h
@@ -23,7 +23,7 @@
 namespace vintf {
 
 /* libvintf meta-version */
-constexpr Version kMetaVersion{1, 0};
+constexpr Version kMetaVersion{2, 0};
 
 }  // namespace vintf
 }  // namespace android
diff --git a/parse_xml.cpp b/parse_xml.cpp
index fee7ba6..b59bd6b 100644
--- a/parse_xml.cpp
+++ b/parse_xml.cpp
@@ -967,15 +967,17 @@
         }
     }
     bool buildObject(HalManifest* object, NodeType* root, std::string* error) const override {
-        std::vector<ManifestHal> hals;
-        if (!parseAttr(root, "version", &object->mMetaVersion, error) ||
-            !parseAttr(root, "type", &object->mType, error) ||
-            !parseChildren(root, manifestHalConverter, &hals, error)) {
+        Version metaVersion;
+        if (!parseAttr(root, "version", &metaVersion, error)) return false;
+        if (metaVersion > kMetaVersion) {
+            *error = "Unrecognized manifest.version " + to_string(metaVersion) + " (libvintf@" +
+                     to_string(kMetaVersion) + ")";
             return false;
         }
-        if (!kMetaVersion.minorAtLeast(object->mMetaVersion)) {
-            *error = "Unrecognized manifest.version " + to_string(object->mMetaVersion) +
-                     " (libvintf@" + to_string(kMetaVersion) + ")";
+
+        std::vector<ManifestHal> hals;
+        if (!parseAttr(root, "type", &object->mType, error) ||
+            !parseChildren(root, manifestHalConverter, &hals, error)) {
             return false;
         }
         if (object->mType == SchemaType::DEVICE) {
@@ -1099,7 +1101,7 @@
     void mutateNode(const CompatibilityMatrix& m, NodeType* root, DocType* d,
                     SerializeFlags::Type flags) const override {
         if (flags.isMetaVersionEnabled()) {
-            appendAttr(root, "version", m.getMinimumMetaVersion());
+            appendAttr(root, "version", kMetaVersion);
         }
         if (flags.isSchemaTypeEnabled()) {
             appendAttr(root, "type", m.mType);
@@ -1152,10 +1154,16 @@
     }
     bool buildObject(CompatibilityMatrix* object, NodeType* root,
                      std::string* error) const override {
-        Version version;
+        Version metaVersion;
+        if (!parseAttr(root, "version", &metaVersion, error)) return false;
+        if (metaVersion > kMetaVersion) {
+            *error = "Unrecognized compatibility-matrix.version " + to_string(metaVersion) +
+                     " (libvintf@" + to_string(kMetaVersion) + ")";
+            return false;
+        }
+
         std::vector<MatrixHal> hals;
-        if (!parseAttr(root, "version", &version, error) ||
-            !parseAttr(root, "type", &object->mType, error) ||
+        if (!parseAttr(root, "type", &object->mType, error) ||
             !parseChildren(root, matrixHalConverter, &hals, error)) {
             return false;
         }
@@ -1210,11 +1218,6 @@
             }
         }
 
-        if (!kMetaVersion.minorAtLeast(version)) {
-            *error = "Unrecognized compatibility-matrix.version " + to_string(version) +
-                     " (libvintf@" + to_string(kMetaVersion) + ")";
-            return false;
-        }
         for (auto &&hal : hals) {
             if (!object->add(std::move(hal))) {
                 *error = "Duplicated compatibility-matrix.hal entry";
diff --git a/test/AssembleVintfTest.cpp b/test/AssembleVintfTest.cpp
index 9b7bc29..136f1a2 100644
--- a/test/AssembleVintfTest.cpp
+++ b/test/AssembleVintfTest.cpp
@@ -18,8 +18,10 @@
 
 #include <android-base/logging.h>
 #include <gtest/gtest.h>
+
 #include <vintf/AssembleVintf.h>
 #include <vintf/parse_string.h>
+#include "test_constants.h"
 
 namespace android {
 namespace vintf {
@@ -66,8 +68,10 @@
     std::stringstream* mOutputStream;
 };
 
+// clang-format off
+
 TEST_F(AssembleVintfTest, FrameworkMatrixEmpty) {
-    std::string xmlEmpty = "<compatibility-matrix version=\"1.0\" type=\"framework\" />";
+    std::string xmlEmpty = "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" />";
     std::string kernel318 = "CONFIG_FOO=y\n";
     std::string kernel318_64 = "CONFIG_BAR=y\n";
     std::string kernel44 = "# CONFIG_FOO is not set\n";
@@ -90,7 +94,7 @@
     EXPECT_TRUE(getInstance()->assemble());
 
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.0\">\n"
         "        <config>\n"
         "            <key>CONFIG_FOO</key>\n"
@@ -155,10 +159,11 @@
         "    </avb>\n"
         "</compatibility-matrix>\n";
 
-    std::string xmlEmpty = "<compatibility-matrix version=\"1.0\" type=\"framework\">\n" + tail;
+    std::string xmlEmpty =
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n" + tail;
 
     std::string xml1 =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -170,7 +175,7 @@
         "</compatibility-matrix>\n";
 
     std::string xml2 =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-1</version>\n"
@@ -182,7 +187,7 @@
         "</compatibility-matrix>\n";
 
     std::string xml3 =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"3\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"3\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>2.0</version>\n"
@@ -194,8 +199,10 @@
         "</compatibility-matrix>\n";
 
     auto manifest = [](size_t level) {
-        return "<manifest version=\"1.0\" type=\"device\" target-level=\"" + std::to_string(level) +
-               "\">\n" +
+        return "<manifest " +
+                    kMetaVersionStr +
+                    " type=\"device\"" +
+                    " target-level=\"" + std::to_string(level) + "\">\n" +
                "    <hal format=\"hidl\">\n"
                "        <name>android.hardware.foo</name>\n"
                "        <version>1.1</version>\n"
@@ -230,7 +237,7 @@
     getInstance()->setCheckInputStream(makeStream(manifest(1)));
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-1</version>\n"
@@ -247,7 +254,7 @@
     getInstance()->setCheckInputStream(makeStream(manifest(2)));
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-1</version>\n"
@@ -264,7 +271,7 @@
     getInstance()->setCheckInputStream(makeStream(manifest(3)));
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"3\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"3\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>2.0</version>\n"
@@ -279,11 +286,11 @@
 
 TEST_F(AssembleVintfTest, MatrixVendorNdk) {
     addInput("compatibility_matrix.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"device\"/>\n");
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"device\"/>\n");
     getInstance()->setFakeEnv("REQUIRED_VNDK_VERSION", "P");
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>P</version>\n"
         "    </vendor-ndk>\n"
@@ -292,11 +299,11 @@
 }
 
 TEST_F(AssembleVintfTest, ManifestVendorNdk) {
-    addInput("manifest.xml", "<manifest version=\"1.0\" type=\"framework\"/>\n");
+    addInput("manifest.xml", "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n");
     getInstance()->setFakeEnv("PROVIDED_VNDK_VERSIONS", "P  26 27   ");
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <vendor-ndk>\n"
         "        <version>P</version>\n"
         "    </vendor-ndk>\n"
@@ -311,19 +318,19 @@
 }
 
 TEST_F(AssembleVintfTest, VendorNdkCheckEmpty) {
-    addInput("manifest.xml", "<manifest version=\"1.0\" type=\"framework\"/>\n");
+    addInput("manifest.xml", "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n");
     getInstance()->setFakeEnv("PROVIDED_VNDK_VERSIONS", "P 26 27 ");
 
-    std::string matrix = "<compatibility-matrix version=\"1.0\" type=\"device\"/>\n";
+    std::string matrix = "<compatibility-matrix " + kMetaVersionStr + " type=\"device\"/>\n";
     getInstance()->setCheckInputStream(makeStream(matrix));
     EXPECT_TRUE(getInstance()->assemble());
 }
 
 TEST_F(AssembleVintfTest, VendorNdkCheckIncompat) {
-    addInput("manifest.xml", "<manifest version=\"1.0\" type=\"framework\"/>\n");
+    addInput("manifest.xml", "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n");
     getInstance()->setFakeEnv("PROVIDED_VNDK_VERSIONS", "P 26 27 ");
     std::string matrix =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>O</version>\n"
         "    </vendor-ndk>\n"
@@ -333,10 +340,10 @@
 }
 
 TEST_F(AssembleVintfTest, VendorNdkCheckCompat) {
-    addInput("manifest.xml", "<manifest version=\"1.0\" type=\"framework\"/>\n");
+    addInput("manifest.xml", "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n");
     getInstance()->setFakeEnv("PROVIDED_VNDK_VERSIONS", "P 26 27 ");
     std::string matrix =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>27</version>\n"
         "    </vendor-ndk>\n"
@@ -347,11 +354,11 @@
 
 TEST_F(AssembleVintfTest, MatrixSystemSdk) {
     addInput("compatibility_matrix.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"device\"/>\n");
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"device\"/>\n");
     getInstance()->setFakeEnv("BOARD_SYSTEMSDK_VERSIONS", "P 1 2 ");
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <system-sdk>\n"
         "        <version>1</version>\n"
         "        <version>2</version>\n"
@@ -362,11 +369,11 @@
 }
 
 TEST_F(AssembleVintfTest, ManifestSystemSdk) {
-    addInput("manifest.xml", "<manifest version=\"1.0\" type=\"framework\"/>\n");
+    addInput("manifest.xml", "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n");
     getInstance()->setFakeEnv("PLATFORM_SYSTEMSDK_VERSIONS", "P 1 2 ");
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <system-sdk>\n"
         "        <version>1</version>\n"
         "        <version>2</version>\n"
@@ -377,14 +384,14 @@
 }
 
 const std::string gEmptyOutManifest =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <sepolicy>\n"
     "        <version>10000.0</version>\n"
     "    </sepolicy>\n"
     "</manifest>\n";
 
 TEST_F(AssembleVintfTest, EmptyManifest) {
-    const std::string emptyManifest = "<manifest version=\"1.0\" type=\"device\" />";
+    const std::string emptyManifest = "<manifest " + kMetaVersionStr + " type=\"device\" />";
     setFakeEnvs({{"BOARD_SEPOLICY_VERS", "10000.0"}, {"IGNORE_TARGET_FCM_VERSION", "true"}});
     addInput("manifest.empty.xml", emptyManifest);
     EXPECT_TRUE(getInstance()->assemble());
@@ -400,7 +407,7 @@
     getInstance()->setCheckInputStream(makeStream(gEmptyOutManifest));
 
     addInput("compatibility_matrix.empty.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
              "    <hal format=\"hidl\" optional=\"true\">\n"
              "        <name>vendor.foo.bar</name>\n"
              "        <version>1.0</version>\n"
@@ -413,7 +420,7 @@
 
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>vendor.foo.bar</name>\n"
         "        <version>1.0</version>\n"
@@ -444,7 +451,7 @@
     getInstance()->setCheckInputStream(makeStream(gEmptyOutManifest));
 
     addInput("compatibility_matrix.empty.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
              "    <hal format=\"hidl\" optional=\"false\">\n"
              "        <name>vendor.foo.bar</name>\n"
              "        <version>1.0</version>\n"
@@ -467,7 +474,7 @@
     getInstance()->setCheckInputStream(makeStream(gEmptyOutManifest));
 
     addInput("compatibility_matrix.foobar.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
              "    <hal format=\"hidl\" optional=\"true\">\n"
              "        <name>vendor.foo.bar</name>\n"
              "        <version>1.0</version>\n"
@@ -479,7 +486,7 @@
              "</compatibility-matrix>");
 
     addInput("compatibility_matrix.bazquux.xml",
-             "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+             "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
              "    <hal format=\"hidl\" optional=\"true\">\n"
              "        <name>vendor.baz.quux</name>\n"
              "        <version>1.0</version>\n"
@@ -492,7 +499,7 @@
 
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"true\">\n"
         "        <name>vendor.baz.quux</name>\n"
         "        <version>1.0</version>\n"
@@ -524,7 +531,8 @@
 
 TEST_F(AssembleVintfTest, OutputFileMatrixTest) {
     const std::string kFile = "file_name_1.xml";
-    const std::string kMatrix = "<compatibility-matrix version=\"1.0\" type=\"framework\"/>";
+    const std::string kMatrix =
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\"/>";
     addInput(kFile, kMatrix);
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(kFile, getOutput());
@@ -532,11 +540,13 @@
 
 TEST_F(AssembleVintfTest, OutputFileManifestTest) {
     const std::string kFile = "file_name_1.xml";
-    std::string kManifest = "<manifest version=\"1.0\" type=\"device\" target-level=\"1\"/>";
+    std::string kManifest = "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"1\"/>";
     addInput(kFile, kManifest);
     EXPECT_TRUE(getInstance()->assemble());
     EXPECT_IN(kFile, getOutput());
 }
 
+// clang-format on
+
 }  // namespace vintf
 }  // namespace android
diff --git a/test/LibVintfTest.cpp b/test/LibVintfTest.cpp
index b129d80..222a079 100644
--- a/test/LibVintfTest.cpp
+++ b/test/LibVintfTest.cpp
@@ -19,16 +19,17 @@
 #include <algorithm>
 #include <functional>
 
+#include <android-base/logging.h>
+#include <android-base/parseint.h>
+#include <android-base/strings.h>
+#include <gtest/gtest.h>
+
 #include <vintf/CompatibilityMatrix.h>
 #include <vintf/KernelConfigParser.h>
 #include <vintf/VintfObject.h>
 #include <vintf/parse_string.h>
 #include <vintf/parse_xml.h>
-
-#include <android-base/logging.h>
-#include <android-base/parseint.h>
-#include <android-base/strings.h>
-#include <gtest/gtest.h>
+#include "test_constants.h"
 
 namespace android {
 namespace vintf {
@@ -203,6 +204,8 @@
     }
 };
 
+// clang-format off
+
 TEST_F(LibVintfTest, ArchOperatorOr) {
     Arch a = Arch::ARCH_EMPTY;
     a |= Arch::ARCH_32;
@@ -247,7 +250,7 @@
                                          {"IFoo", {"IFoo", {"default"}}},
                                      }});
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"device\" might_add=\"true\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\" might_add=\"true\">\n"
         "    <hal format=\"hidl\" attribuet_might_be_added=\"value\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -269,7 +272,7 @@
     std::string xml =
         gHalManifestConverter(vm, SerializeFlags::NO_TAGS.enableHals().enableSepolicy());
     EXPECT_EQ(xml,
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.camera</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -306,7 +309,7 @@
     HalManifest vm = testFrameworkManfiest();
     std::string xml = gHalManifestConverter(vm, SerializeFlags::NO_TAGS.enableHals().enableVndk());
     EXPECT_EQ(xml,
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hidl.manager</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -336,9 +339,9 @@
 TEST_F(LibVintfTest, HalManifestOptional) {
     HalManifest vm;
     EXPECT_TRUE(gHalManifestConverter(&vm,
-            "<manifest version=\"1.0\" type=\"device\"></manifest>"));
+            "<manifest " + kMetaVersionStr + " type=\"device\"></manifest>"));
     EXPECT_TRUE(gHalManifestConverter(&vm,
-            "<manifest version=\"1.0\" type=\"device\">"
+            "<manifest " + kMetaVersionStr + " type=\"device\">"
             "    <hal>"
             "        <name>android.hidl.manager</name>"
             "        <transport>hwbinder</transport>"
@@ -346,7 +349,7 @@
             "    </hal>"
             "</manifest>"));
     EXPECT_FALSE(gHalManifestConverter(&vm,
-            "<manifest version=\"1.0\" type=\"device\">"
+            "<manifest " + kMetaVersionStr + " type=\"device\">"
             "    <hal>"
             "        <name>android.hidl.manager</name>"
             "        <version>1.0</version>"
@@ -357,7 +360,7 @@
 TEST_F(LibVintfTest, HalManifestNative) {
     HalManifest vm;
     EXPECT_TRUE(gHalManifestConverter(&vm,
-                                      "<manifest version=\"1.0\" type=\"device\">"
+                                      "<manifest " + kMetaVersionStr + " type=\"device\">"
                                       "    <hal format=\"native\">"
                                       "        <name>foo</name>"
                                       "        <version>1.0</version>"
@@ -365,7 +368,7 @@
                                       "</manifest>"))
         << gHalManifestConverter.lastError();
     EXPECT_FALSE(gHalManifestConverter(&vm,
-                                       "<manifest version=\"1.0\" type=\"device\">"
+                                       "<manifest " + kMetaVersionStr + " type=\"device\">"
                                        "    <hal format=\"native\">"
                                        "        <name>foo</name>"
                                        "        <version>1.0</version>"
@@ -379,7 +382,7 @@
 TEST_F(LibVintfTest, HalManifestDuplicate) {
     HalManifest vm;
     EXPECT_FALSE(gHalManifestConverter(&vm,
-                                       "<manifest version=\"1.0\" type=\"device\">"
+                                       "<manifest " + kMetaVersionStr + " type=\"device\">"
                                        "    <hal>"
                                        "        <name>android.hidl.manager</name>"
                                        "        <transport>hwbinder</transport>"
@@ -389,7 +392,7 @@
                                        "</manifest>"))
         << "Should not allow duplicated major version in <hal>";
     EXPECT_FALSE(gHalManifestConverter(&vm,
-                                       "<manifest version=\"1.0\" type=\"device\">"
+                                       "<manifest " + kMetaVersionStr + " type=\"device\">"
                                        "    <hal>"
                                        "        <name>android.hidl.manager</name>"
                                        "        <transport>hwbinder</transport>"
@@ -407,7 +410,7 @@
 TEST_F(LibVintfTest, HalManifestGetTransport) {
     HalManifest vm;
     EXPECT_TRUE(gHalManifestConverter(&vm,
-                                      "<manifest version=\"1.0\" type=\"device\">"
+                                      "<manifest " + kMetaVersionStr + " type=\"device\">"
                                       "    <hal>"
                                       "        <name>android.hidl.manager</name>"
                                       "        <transport>hwbinder</transport>"
@@ -601,7 +604,7 @@
     setAvb(cm, Version{2, 1});
     std::string xml = gCompatibilityMatrixConverter(cm);
     EXPECT_EQ(xml,
-            "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"native\" optional=\"false\">\n"
             "        <name>android.hardware.camera</name>\n"
             "        <version>1.2-3</version>\n"
@@ -663,7 +666,7 @@
     set(cm, VndkVersionRange{25,0,1,5}, {"libjpeg.so", "libbase.so"});
     std::string xml = gCompatibilityMatrixConverter(cm);
     EXPECT_EQ(xml,
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"native\" optional=\"false\">\n"
         "        <name>android.hidl.manager</name>\n"
         "        <version>1.0</version>\n"
@@ -909,7 +912,7 @@
 
 TEST_F(LibVintfTest, MissingAvb) {
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.31\"></kernel>"
         "    <sepolicy>\n"
         "        <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
@@ -923,7 +926,7 @@
 
 TEST_F(LibVintfTest, DisableAvb) {
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.31\"></kernel>"
         "    <sepolicy>\n"
         "        <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
@@ -948,7 +951,7 @@
     std::string error;
 
     std::string matrixXml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>1.0</version>\n"
@@ -977,7 +980,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1009,7 +1012,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1032,7 +1035,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1063,7 +1066,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1094,7 +1097,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1135,7 +1138,7 @@
 
     {
         std::string manifestXml =
-                "<manifest version=\"1.0\" type=\"device\">\n"
+                "<manifest " + kMetaVersionStr + " type=\"device\">\n"
                 "    <hal format=\"hidl\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <transport>hwbinder</transport>\n"
@@ -1168,7 +1171,7 @@
 
 TEST_F(LibVintfTest, Compat) {
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.camera</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -1208,7 +1211,7 @@
         "</manifest>\n";
 
     std::string matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.camera</name>\n"
         "        <version>2.0-5</version>\n"
@@ -1255,7 +1258,7 @@
 
     // some smaller test cases
     matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.camera</name>\n"
         "        <version>3.4</version>\n"
@@ -1294,7 +1297,7 @@
     std::string xml = gHalManifestConverter(
         vm, SerializeFlags::NO_TAGS.enableHals().enableSepolicy().enableXmlFiles());
     EXPECT_EQ(xml,
-              "<manifest version=\"1.0\" type=\"device\">\n"
+              "<manifest " + kMetaVersionStr + " type=\"device\">\n"
               "    <hal format=\"hidl\">\n"
               "        <name>android.hardware.camera</name>\n"
               "        <transport>hwbinder</transport>\n"
@@ -1336,7 +1339,7 @@
     addXmlFile(cm, "media_profile", {1, 0});
     std::string xml = gCompatibilityMatrixConverter(cm, SerializeFlags::XMLFILES_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
               "    <xmlfile format=\"dtd\" optional=\"true\">\n"
               "        <name>media_profile</name>\n"
               "        <version>1.0</version>\n"
@@ -1349,7 +1352,7 @@
 
 TEST_F(LibVintfTest, CompatibilityMatrixConverterXmlFile2) {
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <xmlfile format=\"dtd\" optional=\"false\">\n"
         "        <name>media_profile</name>\n"
         "        <version>1.0</version>\n"
@@ -1365,7 +1368,7 @@
 
 TEST_F(LibVintfTest, ManifestXmlFilePathDevice) {
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"device\">"
+        "<manifest " + kMetaVersionStr + " type=\"device\">"
         "    <xmlfile>"
         "        <name>media_profile</name>"
         "        <version>1.0</version>"
@@ -1379,7 +1382,7 @@
 
 TEST_F(LibVintfTest, ManifestXmlFilePathFramework) {
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"framework\">"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">"
         "    <xmlfile>"
         "        <name>media_profile</name>"
         "        <version>1.0</version>"
@@ -1393,7 +1396,7 @@
 
 TEST_F(LibVintfTest, ManifestXmlFilePathOverride) {
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"device\">"
+        "<manifest " + kMetaVersionStr + " type=\"device\">"
         "    <xmlfile>"
         "        <name>media_profile</name>"
         "        <version>1.0</version>"
@@ -1407,7 +1410,7 @@
 
 TEST_F(LibVintfTest, ManifestXmlFilePathMissing) {
     std::string manifestXml =
-        "<manifest version=\"1.0\" type=\"device\">"
+        "<manifest " + kMetaVersionStr + " type=\"device\">"
         "    <xmlfile>"
         "        <name>media_profile</name>"
         "        <version>1.1</version>"
@@ -1420,7 +1423,7 @@
 
 TEST_F(LibVintfTest, MatrixXmlFilePathFramework) {
     std::string matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">"
         "    <xmlfile format=\"dtd\" optional=\"true\">"
         "        <name>media_profile</name>"
         "        <version>2.0-1</version>"
@@ -1434,7 +1437,7 @@
 
 TEST_F(LibVintfTest, MatrixXmlFilePathDevice) {
     std::string matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">"
         "    <xmlfile format=\"xsd\" optional=\"true\">"
         "        <name>media_profile</name>"
         "        <version>2.0-1</version>"
@@ -1448,7 +1451,7 @@
 
 TEST_F(LibVintfTest, MatrixXmlFilePathOverride) {
     std::string matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">"
         "    <xmlfile format=\"xsd\" optional=\"true\">"
         "        <name>media_profile</name>"
         "        <version>2.0-1</version>"
@@ -1462,7 +1465,7 @@
 
 TEST_F(LibVintfTest, MatrixXmlFilePathMissing) {
     std::string matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">"
         "    <xmlfile format=\"dtd\" optional=\"true\">"
         "        <name>media_profile</name>"
         "        <version>2.1</version>"
@@ -1567,7 +1570,7 @@
     CompatibilityMatrix matrix;
 
     matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">"
         "    <hal format=\"native\" optional=\"false\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.0</version>"
@@ -1580,7 +1583,7 @@
 #ifndef LIBVINTF_TARGET
 
     matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">"
         "    <hal format=\"native\" optional=\"false\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.0-1</version>"
@@ -1593,7 +1596,7 @@
         "Perhaps you mean '1.0'?");
 
     matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">"
         "    <hal format=\"native\" optional=\"false\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.1</version>"
@@ -1606,7 +1609,7 @@
         "Perhaps you mean '1.0'?");
 
     matrixXml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">"
         "    <hal format=\"native\" optional=\"false\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.0</version>"
@@ -1627,7 +1630,7 @@
     HalManifest manifest;
 
     manifestXml =
-        "<manifest version=\"1.0\" type=\"framework\">"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">"
         "    <hal format=\"native\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.0</version>"
@@ -1640,7 +1643,7 @@
 #ifndef LIBVINTF_TARGET
 
     manifestXml =
-        "<manifest version=\"1.0\" type=\"framework\">"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">"
         "    <hal format=\"native\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.1</version>"
@@ -1653,7 +1656,7 @@
         "is specified.");
 
     manifestXml =
-        "<manifest version=\"1.0\" type=\"framework\">"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">"
         "    <hal format=\"native\">"
         "        <name>netutils-wrapper</name>"
         "        <version>1.0</version>"
@@ -1671,7 +1674,7 @@
 
 TEST_F(LibVintfTest, KernelConfigConditionTest) {
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1712,7 +1715,7 @@
 
 TEST_F(LibVintfTest, KernelConfigConditionEmptyTest) {
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"4.4.0\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1740,7 +1743,7 @@
     CompatibilityMatrix cm;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1765,7 +1768,7 @@
     EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1791,7 +1794,7 @@
         << "conditions met, so CONFIG_ARCH_MMAP_RND_BITS should not match";
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1815,7 +1818,7 @@
         << gCompatibilityMatrixConverter.lastError();
     EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1844,7 +1847,7 @@
     EXPECT_TRUE(runtime.checkCompatibility(cm, &error));
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1874,7 +1877,7 @@
         << "conditions have 'and' relationship, so CONFIG_ILLEGAL_POINTER_VALUE should not match";
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\"/>\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <conditions>\n"
@@ -1903,7 +1906,7 @@
     EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <config>\n"
         "            <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
@@ -1945,7 +1948,7 @@
     EXPECT_TRUE(runtime.checkCompatibility(cm, &error)) << error;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <config>\n"
         "            <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
@@ -1987,7 +1990,7 @@
     EXPECT_FALSE(runtime.checkCompatibility(cm, &error)) << "all fragments should be used.";
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <kernel version=\"3.18.22\">\n"
         "        <config>\n"
         "            <key>CONFIG_BUILD_ARM64_APPENDED_DTB_IMAGE_NAMES</key>\n"
@@ -2059,17 +2062,17 @@
     CompatibilityMatrix cm;
     std::string xml;
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"framework\"/>";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\"/>";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
         << gCompatibilityMatrixConverter.lastError();
     EXPECT_EQ(Level::UNSPECIFIED, cm.level());
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"legacy\"/>";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"legacy\"/>";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
         << gCompatibilityMatrixConverter.lastError();
     EXPECT_EQ(Level::LEGACY, cm.level());
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\"/>";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\"/>";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
         << gCompatibilityMatrixConverter.lastError();
     EXPECT_EQ(1u, cm.level());
@@ -2079,15 +2082,15 @@
     HalManifest manifest;
     std::string xml;
 
-    xml = "<manifest version=\"1.0\" type=\"device\"/>";
+    xml = "<manifest " + kMetaVersionStr + " type=\"device\"/>";
     EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
     EXPECT_EQ(Level::UNSPECIFIED, manifest.level());
 
-    xml = "<manifest version=\"1.0\" type=\"device\" target-level=\"legacy\"/>";
+    xml = "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"legacy\"/>";
     EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
     EXPECT_EQ(Level::LEGACY, manifest.level());
 
-    xml = "<manifest version=\"1.0\" type=\"device\" target-level=\"1\"/>";
+    xml = "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"1\"/>";
     EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
     EXPECT_EQ(1u, manifest.level());
 }
@@ -2098,12 +2101,12 @@
     std::string error;
     std::string xml;
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\"/>";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\"/>";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm1, xml))
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-1</version>\n"
@@ -2119,7 +2122,7 @@
     EXPECT_TRUE(addAllHalsAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
               "    <hal format=\"hidl\" optional=\"true\">\n"
               "        <name>android.hardware.foo</name>\n"
               "        <version>1.0-1</version>\n"
@@ -2138,7 +2141,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.2-3</version>\n"
@@ -2152,7 +2155,7 @@
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-4</version>\n"
@@ -2168,7 +2171,7 @@
     EXPECT_TRUE(addAllHalsAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
               "    <hal format=\"hidl\" optional=\"false\">\n"
               "        <name>android.hardware.foo</name>\n"
               "        <version>1.0-4</version>\n"
@@ -2187,7 +2190,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.2-3</version>\n"
@@ -2201,7 +2204,7 @@
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.2-3</version>\n"
@@ -2218,7 +2221,7 @@
     EXPECT_TRUE(addAllHalsAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
               "    <hal format=\"hidl\" optional=\"false\">\n"
               "        <name>android.hardware.foo</name>\n"
               "        <version>1.2-3</version>\n"
@@ -2238,7 +2241,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0-1</version>\n"
@@ -2252,7 +2255,7 @@
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.1-2</version>\n"
@@ -2268,7 +2271,7 @@
     EXPECT_TRUE(addAllHalsAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
               "    <hal format=\"hidl\" optional=\"false\">\n"
               "        <name>android.hardware.foo</name>\n"
               "        <version>1.0-1</version>\n"
@@ -2294,7 +2297,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -2313,7 +2316,7 @@
         // should be in a new <hal> tag
         CompatibilityMatrix cm2;
         xml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>2.0</version>\n"
@@ -2330,7 +2333,7 @@
 
         xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
         EXPECT_EQ(xml,
-                  "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+                  "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
                   "    <hal format=\"hidl\" optional=\"false\">\n"
                   "        <name>android.hardware.foo</name>\n"
                   "        <version>1.0</version>\n"
@@ -2355,7 +2358,7 @@
         // Test that 2.0::IFoo/strong should be added as an optional <hal> tag.
         CompatibilityMatrix cm2;
         xml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>2.0</version>\n"
@@ -2373,7 +2376,7 @@
 
         xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
         EXPECT_EQ(xml,
-                  "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+                  "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
                   "    <hal format=\"hidl\" optional=\"false\">\n"
                   "        <name>android.hardware.foo</name>\n"
                   "        <version>1.0</version>\n"
@@ -2410,7 +2413,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -2432,7 +2435,7 @@
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>2.0</version>\n"
@@ -2456,7 +2459,7 @@
     EXPECT_TRUE(addAllHalsAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::HALS_ONLY);
     EXPECT_EQ(
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -2492,7 +2495,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <xmlfile format=\"xsd\" optional=\"true\">\n"
         "        <name>foo</name>\n"
         "        <version>1.0-2</version>\n"
@@ -2503,7 +2506,7 @@
         << gCompatibilityMatrixConverter.lastError();
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
         "    <xmlfile format=\"xsd\" optional=\"true\">\n"
         "        <name>foo</name>\n"
         "        <version>1.1-3</version>\n"
@@ -2516,7 +2519,7 @@
     EXPECT_TRUE(addAllXmlFilesAsOptional(&cm1, &cm2, &error)) << error;
     xml = gCompatibilityMatrixConverter(cm1, SerializeFlags::XMLFILES_ONLY);
     EXPECT_EQ(xml,
-              "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+              "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
               "    <xmlfile format=\"xsd\" optional=\"true\">\n"
               "        <name>foo</name>\n"
               "        <version>1.0-2</version>\n"
@@ -2536,7 +2539,7 @@
     std::string xml;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>P</version>\n"
         "        <library>libbase.so</library>\n"
@@ -2552,7 +2555,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <vendor-ndk>\n"
             "        <version>27</version>\n"
             "        <library>libbase.so</library>\n"
@@ -2574,7 +2577,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <vendor-ndk>\n"
             "        <version>27</version>\n"
             "        <library>libbase.so</library>\n"
@@ -2591,7 +2594,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <vendor-ndk>\n"
             "        <version>P</version>\n"
             "        <library>libbase.so</library>\n"
@@ -2611,13 +2614,13 @@
     std::string xml;
     std::string error;
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"device\"/>\n";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"device\"/>\n";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
         << gCompatibilityMatrixConverter.lastError();
 
     {
         HalManifest manifest;
-        xml = "<manifest version=\"1.0\" type=\"framework\"/>\n";
+        xml = "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n";
         EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
 
         EXPECT_TRUE(manifest.checkCompatibility(cm, &error)) << error;
@@ -2626,7 +2629,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <vendor-ndk>\n"
             "        <version>P</version>\n"
             "        <library>libbase.so</library>\n"
@@ -2642,7 +2645,7 @@
     std::string error;
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <vendor-ndk>\n"
         "        <version>27</version>\n"
         "    </vendor-ndk>\n"
@@ -2658,7 +2661,7 @@
 TEST_F(LibVintfTest, ManifestHalOverride) {
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2682,12 +2685,12 @@
 // Test functionality of override="true" tag
 TEST_F(LibVintfTest, ManifestAddOverrideHalSimple) {
     HalManifest manifest;
-    std::string xml = "<manifest version=\"1.0\" type=\"device\"/>\n";
+    std::string xml = "<manifest " + kMetaVersionStr + " type=\"device\"/>\n";
     EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
 
     HalManifest newManifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2707,7 +2710,7 @@
 TEST_F(LibVintfTest, ManifestAddOverrideHalSimpleOverride) {
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2718,7 +2721,7 @@
 
     HalManifest newManifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2739,7 +2742,7 @@
 TEST_F(LibVintfTest, ManifestAddOverrideHalMultiVersion) {
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2760,7 +2763,7 @@
 
     HalManifest newManifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2776,7 +2779,7 @@
 
     manifest.addAllHals(&newManifest);
     EXPECT_EQ(
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.bar</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2808,7 +2811,7 @@
 TEST_F(LibVintfTest, ManifestAddOverrideHalMultiVersion2) {
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2824,7 +2827,7 @@
 
     HalManifest newManifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2846,7 +2849,7 @@
 TEST_F(LibVintfTest, ManifestAddOverrideHalRemoveAll) {
     HalManifest manifest;
     std::string xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2877,7 +2880,7 @@
 
     HalManifest newManifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2887,7 +2890,7 @@
 
     manifest.addAllHals(&newManifest);
     EXPECT_EQ(
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.bar</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -2908,11 +2911,11 @@
     std::string xml;
     std::string error;
 
-    xml = "<compatibility-matrix version=\"1.0\" type=\"device\"/>\n";
+    xml = "<compatibility-matrix " + kMetaVersionStr + " type=\"device\"/>\n";
     EXPECT_TRUE(gCompatibilityMatrixConverter(&cm, xml))
         << gCompatibilityMatrixConverter.lastError();
 
-    xml = "<manifest version=\"1.0\" type=\"framework\"/>\n";
+    xml = "<manifest " + kMetaVersionStr + " type=\"framework\"/>\n";
     EXPECT_TRUE(gHalManifestConverter(&manifest, xml)) << gHalManifestConverter.lastError();
 
     EXPECT_TRUE(manifest.checkCompatibility(cm, &error)) << error;
@@ -2924,7 +2927,7 @@
     std::string error;
 
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <system-sdk>\n"
         "        <version>1</version>\n"
         "        <version>P</version>\n"
@@ -2937,7 +2940,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <system-sdk>\n"
             "        <version>1</version>\n"
             "        <version>P</version>\n"
@@ -2952,7 +2955,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <system-sdk>\n"
             "        <version>1</version>\n"
             "        <version>3</version>\n"
@@ -2966,7 +2969,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <system-sdk>\n"
             "        <version>1</version>\n"
             "    </system-sdk>\n"
@@ -3010,7 +3013,7 @@
 
     HalManifest manifest;
     xml =
-        "<manifest version=\"1.0\" type=\"device\" target-level=\"103\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"103\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -3026,7 +3029,7 @@
     {
         CompatibilityMatrix cm;
         xml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"100\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"100\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>1.2-3</version>\n"
@@ -3058,7 +3061,7 @@
     {
         CompatibilityMatrix cm;
         xml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>1.2-3</version>\n"
@@ -3082,7 +3085,7 @@
     {
         CompatibilityMatrix cm;
         xml =
-            "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+            "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\" optional=\"false\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <version>1.2-3</version>\n"
@@ -3107,7 +3110,7 @@
     std::string xml;
     HalManifest manifest;
     xml =
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" override=\"true\">\n"
         "        <transport>hwbinder</transport>\n"
         "        <name>android.hardware.foo</name>\n"
@@ -3142,7 +3145,7 @@
 
     CompatibilityMatrix cm;
     xml =
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -3165,7 +3168,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3188,7 +3191,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3203,7 +3206,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3229,7 +3232,7 @@
     {
         HalManifest manifest;
         xml =
-            "<manifest version=\"1.0\" type=\"framework\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3307,7 +3310,7 @@
     std::string error;
 
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -3326,7 +3329,7 @@
     CompatibilityMatrix matrix;
     std::string error;
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -3352,7 +3355,7 @@
     std::string error;
 
     std::string xml =
-        "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\" optional=\"false\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <version>1.0</version>\n"
@@ -3373,7 +3376,7 @@
 
     {
         std::string xml =
-            "<manifest version=\"1.0\" type=\"device\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"device\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3398,7 +3401,7 @@
 
     {
         std::string xml =
-            "<manifest version=\"1.0\" type=\"device\">\n"
+            "<manifest " + kMetaVersionStr + " type=\"device\">\n"
             "    <hal format=\"hidl\">\n"
             "        <name>android.hardware.foo</name>\n"
             "        <transport>hwbinder</transport>\n"
@@ -3476,9 +3479,9 @@
 }
 
 TEST_F(LibVintfTest, ManifestAddAllDeviceManifest) {
-    std::string xml1 = "<manifest version=\"1.0\" type=\"device\" />\n";
+    std::string xml1 = "<manifest " + kMetaVersionStr + " type=\"device\" />\n";
     std::string xml2 =
-        "<manifest version=\"1.0\" type=\"device\" target-level=\"3\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"3\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -3511,9 +3514,9 @@
 }
 
 TEST_F(LibVintfTest, ManifestAddAllFrameworkManifest) {
-    std::string xml1 = "<manifest version=\"1.0\" type=\"framework\" />\n";
+    std::string xml1 = "<manifest " + kMetaVersionStr + " type=\"framework\" />\n";
     std::string xml2 =
-        "<manifest version=\"1.0\" type=\"framework\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
         "    <hal format=\"hidl\">\n"
         "        <name>android.hardware.foo</name>\n"
         "        <transport>hwbinder</transport>\n"
@@ -3544,8 +3547,8 @@
 }
 
 TEST_F(LibVintfTest, ManifestAddAllConflictLevel) {
-    std::string xml1 = "<manifest version=\"1.0\" type=\"device\" target-level=\"2\" />\n";
-    std::string xml2 = "<manifest version=\"1.0\" type=\"device\" target-level=\"3\" />\n";
+    std::string xml1 = "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"2\" />\n";
+    std::string xml2 = "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"3\" />\n";
 
     std::string error;
     HalManifest manifest1;
@@ -3559,13 +3562,13 @@
 
 TEST_F(LibVintfTest, ManifestAddAllConflictSepolicy) {
     std::string xml1 =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <sepolicy>\n"
         "        <version>25.5</version>\n"
         "    </sepolicy>\n"
         "</manifest>\n";
     std::string xml2 =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <sepolicy>\n"
         "        <version>30.0</version>\n"
         "    </sepolicy>\n"
@@ -3583,11 +3586,11 @@
 
 TEST_F(LibVintfTest, ManifestAddAllConflictKernel) {
     std::string xml1 =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <kernel version=\"3.18.0\" />\n"
         "</manifest>\n";
     std::string xml2 =
-        "<manifest version=\"1.0\" type=\"device\">\n"
+        "<manifest " + kMetaVersionStr + " type=\"device\">\n"
         "    <kernel version=\"3.18.1\" />\n"
         "</manifest>\n";
 
@@ -3601,6 +3604,52 @@
     EXPECT_IN("Conflicting kernel", error);
 }
 
+TEST_F(LibVintfTest, ManifestMetaVersionCompat) {
+    std::string xml = "<manifest version=\"2.0\" type=\"device\" />";
+    std::string error;
+    HalManifest manifest;
+    EXPECT_TRUE(gHalManifestConverter(&manifest, xml, &error)) << error;
+}
+
+TEST_F(LibVintfTest, ManifestMetaVersionIncompat) {
+    std::string xml = "<manifest version=\"10000.0\" type=\"device\" />";
+    std::string error;
+    HalManifest manifest;
+    EXPECT_FALSE(gHalManifestConverter(&manifest, xml, &error))
+        << "Should not parse metaversion 10000.0";
+}
+
+TEST_F(LibVintfTest, ManifestMetaVersionWriteLatest) {
+    std::string xml = "<manifest version=\"1.0\" type=\"device\" />";
+    std::string error;
+    HalManifest manifest;
+    EXPECT_TRUE(gHalManifestConverter(&manifest, xml, &error)) << error;
+    EXPECT_IN(kMetaVersionStr, gHalManifestConverter(manifest, SerializeFlags::NO_TAGS));
+}
+
+TEST_F(LibVintfTest, MatrixMetaVersionCompat) {
+    std::string xml = "<compatibility-matrix version=\"2.0\" type=\"framework\" />";
+    std::string error;
+    CompatibilityMatrix matrix;
+    EXPECT_TRUE(gCompatibilityMatrixConverter(&matrix, xml, &error)) << error;
+}
+
+TEST_F(LibVintfTest, MatrixMetaVersionIncompat) {
+    std::string xml = "<compatibility-matrix version=\"10000.0\" type=\"framework\" />";
+    std::string error;
+    CompatibilityMatrix matrix;
+    EXPECT_FALSE(gCompatibilityMatrixConverter(&matrix, xml, &error))
+        << "Should not parse metaversion 10000.0";
+}
+
+TEST_F(LibVintfTest, MatrixMetaVersionWriteLatest) {
+    std::string xml = "<compatibility-matrix version=\"1.0\" type=\"framework\" />";
+    std::string error;
+    CompatibilityMatrix matrix;
+    EXPECT_TRUE(gCompatibilityMatrixConverter(&matrix, xml, &error)) << error;
+    EXPECT_IN(kMetaVersionStr, gCompatibilityMatrixConverter(matrix, SerializeFlags::NO_TAGS));
+}
+
 struct FrameworkCompatibilityMatrixCombineTest : public LibVintfTest {
     virtual void SetUp() override {
         matrices = {
@@ -3623,14 +3672,14 @@
 TEST_F(FrameworkCompatibilityMatrixCombineTest, ConflictMinlts) {
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[0].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <kernel version=\"3.18.5\" />\n"
         "</compatibility-matrix>\n",
         &error))
         << error;
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[1].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <kernel version=\"3.18.6\" />\n"
         "</compatibility-matrix>\n",
         &error))
@@ -3666,14 +3715,14 @@
 
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[0].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <kernel version=\"3.18.5\" />\n" +
             conditionedKernel + "</compatibility-matrix>\n",
         &error))
         << error;
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[1].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n" + simpleKernel +
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n" + simpleKernel +
             "</compatibility-matrix>\n",
         &error))
         << error;
@@ -3681,7 +3730,7 @@
     auto combined = combine(Level{1}, &matrices, &error);
     ASSERT_NE(nullptr, combined);
     EXPECT_EQ("", error);
-    EXPECT_EQ("<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n" +
+    EXPECT_EQ("<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n" +
                   simpleKernel + conditionedKernel + "</compatibility-matrix>\n",
               gCompatibilityMatrixConverter(*combined));
 }
@@ -3690,7 +3739,7 @@
 TEST_F(FrameworkCompatibilityMatrixCombineTest, ConflictSepolicy) {
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[0].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <sepolicy>\n"
         "        <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
         "    </sepolicy>\n"
@@ -3699,7 +3748,7 @@
         << error;
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[1].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <sepolicy>\n"
         "        <kernel-sepolicy-version>29</kernel-sepolicy-version>\n"
         "    </sepolicy>\n"
@@ -3716,7 +3765,7 @@
 TEST_F(FrameworkCompatibilityMatrixCombineTest, ConflictAvb) {
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[0].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <avb>\n"
         "        <vbmeta-version>1.1</vbmeta-version>\n"
         "    </avb>\n"
@@ -3725,7 +3774,7 @@
         << error;
     ASSERT_TRUE(gCompatibilityMatrixConverter(
         &matrices[1].object,
-        "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
         "    <avb>\n"
         "        <vbmeta-version>1.0</vbmeta-version>\n"
         "    </avb>\n"
@@ -3756,7 +3805,7 @@
 };
 
 TEST_F(DeviceCompatibilityMatrixCombineTest, Success) {
-    std::string head{"<compatibility-matrix version=\"1.0\" type=\"device\">\n"};
+    std::string head{"<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"};
     std::string tail{"</compatibility-matrix>\n"};
     std::string halFoo{
         "    <hal format=\"hidl\" optional=\"false\">\n"
@@ -3791,13 +3840,13 @@
 
 TEST_F(DeviceCompatibilityMatrixCombineTest, ConflictVendorNdk) {
     std::string vendorNdkP{
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>P</version>\n"
         "    </vendor-ndk>\n"
         "</compatibility-matrix>\n"};
     std::string vendorNdkQ{
-        "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+        "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
         "    <vendor-ndk>\n"
         "        <version>Q</version>\n"
         "    </vendor-ndk>\n"
@@ -3810,6 +3859,8 @@
     EXPECT_IN("<vendor-ndk> is already defined", error);
 }
 
+// clang-format on
+
 } // namespace vintf
 } // namespace android
 
diff --git a/test/test_constants.h b/test/test_constants.h
new file mode 100644
index 0000000..6aa3115
--- /dev/null
+++ b/test/test_constants.h
@@ -0,0 +1,28 @@
+/*
+ * Copyright (C) 2019 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#pragma once
+
+#include <vintf/constants.h>
+#include <vintf/parse_string.h>
+
+namespace android {
+namespace vintf {
+
+const static std::string kMetaVersionStr{"version=\"" + to_string(kMetaVersion) + "\""};
+
+}  // namespace vintf
+}  // namespace android
diff --git a/test/vintf_object_tests.cpp b/test/vintf_object_tests.cpp
index d649afc..fab6614 100644
--- a/test/vintf_object_tests.cpp
+++ b/test/vintf_object_tests.cpp
@@ -22,12 +22,13 @@
 #include <unistd.h>
 
 #include <android-base/strings.h>
+#include <hidl-util/FQName.h>
+
 #include <vintf/VintfObject.h>
 #include <vintf/parse_string.h>
+#include "test_constants.h"
 #include "utils-fake.h"
 
-#include <hidl-util/FQName.h>
-
 using namespace ::testing;
 
 using android::FqInstance;
@@ -45,12 +46,14 @@
 
 using namespace ::android::vintf::details;
 
+// clang-format off
+
 //
 // Set of Xml1 metadata compatible with each other.
 //
 
 const std::string systemMatrixXml1 =
-    "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.camera</name>\n"
     "        <version>2.0-5</version>\n"
@@ -77,7 +80,7 @@
     "</compatibility-matrix>\n";
 
 const std::string vendorManifestXml1 =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.camera</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -117,7 +120,7 @@
     "</manifest>\n";
 
 const std::string systemManifestXml1 =
-    "<manifest version=\"1.0\" type=\"framework\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hidl.manager</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -135,7 +138,7 @@
     "</manifest>\n";
 
 const std::string vendorMatrixXml1 =
-    "<compatibility-matrix version=\"1.0\" type=\"device\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hidl.manager</name>\n"
     "        <version>1.0</version>\n"
@@ -152,7 +155,7 @@
 //
 
 const std::string systemMatrixXml2 =
-    "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <version>1.0</version>\n"
@@ -169,7 +172,7 @@
     "</compatibility-matrix>\n";
 
 const std::string vendorManifestXml2 =
-    "<manifest version=\"1.0\" type=\"device\">"
+    "<manifest " + kMetaVersionStr + " type=\"device\">"
     "    <hal>"
     "        <name>android.hardware.foo</name>"
     "        <transport>hwbinder</transport>"
@@ -185,7 +188,7 @@
 //
 
 const std::string systemMatrixLevel1 =
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
     "    <hal format=\"hidl\" optional=\"true\">\n"
     "        <name>android.hardware.major</name>\n"
     "        <version>1.0</version>\n"
@@ -214,7 +217,7 @@
     "</compatibility-matrix>\n";
 
 const std::string systemMatrixLevel2 =
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
     "    <hal format=\"hidl\" optional=\"true\">\n"
     "        <name>android.hardware.major</name>\n"
     "        <version>2.0</version>\n"
@@ -239,7 +242,7 @@
 
 const static std::vector<std::string> systemMatrixRegexXmls = {
     // 1.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.regex</name>\n"
     "        <version>1.0-1</version>\n"
@@ -253,7 +256,7 @@
     "    </hal>\n"
     "</compatibility-matrix>\n",
     // 2.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.regex</name>\n"
     "        <version>1.1-2</version>\n"
@@ -267,7 +270,7 @@
     "    </hal>\n"
     "</compatibility-matrix>\n",
     // 3.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"3\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"3\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.regex</name>\n"
     "        <version>2.0</version>\n"
@@ -287,7 +290,7 @@
 
 const std::vector<std::string> systemMatrixRequire = {
     // 1.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <version>1.0</version>\n"
@@ -298,7 +301,7 @@
     "    </hal>\n"
     "</compatibility-matrix>\n",
     // 2.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
     "    <hal format=\"hidl\" optional=\"false\">\n"
     "        <name>android.hardware.bar</name>\n"
     "        <version>1.0</version>\n"
@@ -310,7 +313,7 @@
     "</compatibility-matrix>\n"};
 
 const std::string vendorManifestRequire1 =
-    "<manifest version=\"1.0\" type=\"device\" target-level=\"1\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"1\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -319,7 +322,7 @@
     "</manifest>\n";
 
 const std::string vendorManifestRequire2 =
-    "<manifest version=\"1.0\" type=\"device\" target-level=\"2\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"2\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.bar</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -332,7 +335,7 @@
 //
 
 const std::string vendorManifestKernel318 =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <kernel version=\"3.18.999\" />\n"
     "    <sepolicy>\n"
     "        <version>25.5</version>\n"
@@ -340,7 +343,7 @@
     "</manifest>\n";
 
 const std::string systemMatrixKernel318 =
-    "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
     "    <kernel version=\"3.18.999\"></kernel>\n"
     "    <sepolicy>\n"
     "        <kernel-sepolicy-version>30</kernel-sepolicy-version>\n"
@@ -743,11 +746,11 @@
             return ::android::OK;
         }));
     expectFetch(kSystemVintfDir + "compatibility_matrix.1.xml",
-                "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\"/>");
+                "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\"/>");
     expectFetch(kSystemVintfDir + "compatibility_matrix.empty.xml",
-                "<compatibility-matrix version=\"1.0\" type=\"framework\"/>");
+                "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\"/>");
     expectFileNotExist(StrEq(kProductMatrix));
-    expectFetch(kVendorManifest, "<manifest version=\"1.0\" type=\"device\" />\n");
+    expectFetch(kVendorManifest, "<manifest " + kMetaVersionStr + " type=\"device\" />\n");
     expectNeverFetch(kSystemLegacyMatrix);
 
     EXPECT_NE(nullptr, vintfObject->getFrameworkCompatibilityMatrix(true /* skipCache */));
@@ -764,11 +767,11 @@
             return ::android::OK;
         }));
     expectFetch(kSystemVintfDir + "compatibility_matrix.1.xml",
-                "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\"/>");
+                "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\"/>");
     expectFetch(kSystemVintfDir + "compatibility_matrix.empty.xml",
-                "<compatibility-matrix version=\"1.0\" type=\"framework\"/>");
+                "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\"/>");
     expectFetch(kProductMatrix,
-                "<compatibility-matrix version=\"1.0\" type=\"framework\">\n"
+                "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\">\n"
                 "    <hal format=\"hidl\" optional=\"true\">\n"
                 "        <name>android.hardware.foo</name>\n"
                 "        <version>1.0</version>\n"
@@ -778,7 +781,7 @@
                 "        </interface>\n"
                 "    </hal>\n"
                 "</compatibility-matrix>\n");
-    expectFetch(kVendorManifest, "<manifest version=\"1.0\" type=\"device\" />\n");
+    expectFetch(kVendorManifest, "<manifest " + kMetaVersionStr + " type=\"device\" />\n");
     expectNeverFetch(kSystemLegacyMatrix);
 
     auto fcm = vintfObject->getFrameworkCompatibilityMatrix(true /* skipCache */);
@@ -796,7 +799,7 @@
 }
 
 const std::string vendorEtcManifest =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -810,7 +813,7 @@
     "</manifest>\n";
 
 const std::string vendorManifest =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -823,7 +826,7 @@
     "</manifest>\n";
 
 const std::string odmProductManifest =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\" override=\"true\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -836,7 +839,7 @@
     "</manifest>\n";
 
 const std::string odmManifest =
-    "<manifest version=\"1.0\" type=\"device\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"device\">\n"
     "    <hal format=\"hidl\" override=\"true\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -1037,7 +1040,7 @@
         expectNeverFetch(kSystemLegacyMatrix);
 
         expectFetch(kVendorManifest,
-                    "<manifest version=\"1.0\" type=\"device\" target-level=\"2\"/>");
+                    "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"2\"/>");
         expectFileNotExist(StartsWith("/odm/"));
 
         // Update the device manifest cache because CheckDeprecate does not fetch
@@ -1149,7 +1152,7 @@
         expectFileNotExist(StartsWith("/odm/"));
     }
     void expectTargetFcmVersion(size_t level) {
-        expectFetch(kVendorManifest, "<manifest version=\"1.0\" type=\"device\" target-level=\"" +
+        expectFetch(kVendorManifest, "<manifest " + kMetaVersionStr + " type=\"device\" target-level=\"" +
                                          to_string(static_cast<Level>(level)) + "\"/>");
         vintfObject->getDeviceHalManifest(true /* skipCache */);
     }
@@ -1341,18 +1344,18 @@
 
 const static std::vector<std::string> systemMatrixKernelXmls = {
     // 1.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"1\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"1\">\n"
     FAKE_KERNEL("1.0.0", "A1")
     FAKE_KERNEL("2.0.0", "B1")
     "</compatibility-matrix>\n",
     // 2.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"2\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"2\">\n"
     FAKE_KERNEL("2.0.0", "B2")
     FAKE_KERNEL("3.0.0", "C2")
     FAKE_KERNEL("4.0.0", "D2")
     "</compatibility-matrix>\n",
     // 3.xml
-    "<compatibility-matrix version=\"1.0\" type=\"framework\" level=\"3\">\n"
+    "<compatibility-matrix " + kMetaVersionStr + " type=\"framework\" level=\"3\">\n"
     FAKE_KERNEL("4.0.0", "D3")
     FAKE_KERNEL("5.0.0", "E3")
     "</compatibility-matrix>\n",
@@ -1433,7 +1436,7 @@
 }
 
 const std::string systemEtcManifest =
-    "<manifest version=\"1.0\" type=\"framework\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -1442,7 +1445,7 @@
     "</manifest>\n";
 
 const std::string systemEtcManifestFrag =
-    "<manifest version=\"1.0\" type=\"framework\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -1451,7 +1454,7 @@
     "</manifest>\n";
 
 const std::string productEtcManifest =
-    "<manifest version=\"1.0\" type=\"framework\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -1460,7 +1463,7 @@
     "</manifest>\n";
 
 const std::string productEtcManifestFrag =
-    "<manifest version=\"1.0\" type=\"framework\">\n"
+    "<manifest " + kMetaVersionStr + " type=\"framework\">\n"
     "    <hal format=\"hidl\">\n"
     "        <name>android.hardware.foo</name>\n"
     "        <transport>hwbinder</transport>\n"
@@ -1638,6 +1641,8 @@
     EXPECT_EQ(KernelVersion(5, 0, 0), kreq->minLts());
 }
 
+// clang-format on
+
 }  // namespace testing
 }  // namespace vintf
 }  // namespace android