ensureAndroidBillingVersionMetadata function

void ensureAndroidBillingVersionMetadata(
  1. XmlElement application
)

Android の課金ライブラリのバージョンを Manifest に反映します。

Implementation

void ensureAndroidBillingVersionMetadata(XmlElement application) {
  XmlElement? billingVersionMetadata;
  for (final child in application.children.whereType<XmlElement>()) {
    if (child.name.toString() == "meta-data" &&
        child.getAttribute("android:name") ==
            "com.google.android.play.billingclient.version") {
      billingVersionMetadata = child;
      break;
    }
  }
  if (billingVersionMetadata == null) {
    application.children.add(
      XmlElement(
        XmlName("meta-data"),
        [
          XmlAttribute(
            XmlName("android:name"),
            "com.google.android.play.billingclient.version",
          ),
          XmlAttribute(
            XmlName("android:value"),
            Config.androidBillingVersion,
          ),
          XmlAttribute(
            XmlName("tools:replace"),
            "android:value",
          ),
        ],
        [],
      ),
    );
  } else {
    billingVersionMetadata.setAttribute(
      "android:value",
      Config.androidBillingVersion,
    );
    billingVersionMetadata.setAttribute("tools:replace", "android:value");
  }
}