initializeIosVersion static method

bool initializeIosVersion()

Initializes the info.plist file. with the necessary key and value for versionName and buildNumber. @returns {bool} True is the file was initialized, false otherwise.

Implementation

static bool initializeIosVersion() {
  final plistFilePath = p.join(
    Directory.current.path,
    'ios',
    'Runner',
    'Info.plist',
  );

  final plistFile = File(plistFilePath);

  if (!plistFile.existsSync()) {
    return false; // File not found
  }

  try {
    var content = plistFile.readAsStringSync();
    var originalContent = content;

    // Add CFBundleShortVersionString
    if (!content.contains('<key>CFBundleShortVersionString</key>')) {
      content = content.replaceFirst(
        '<dict>',
        '<dict>\n     <key>CFBundleShortVersionString</key>\n<string>\$(FLUTTER_BUILD_NAME)</string>',
      );
    }

    // Add CFBundleVersion
    if (!content.contains('<key>CFBundleVersion</key>')) {
      content = content.replaceFirst(
        '<dict>',
        '<dict>\n     <key>CFBundleVersion</key>\n<string>\$(FLUTTER_BUILD_NUMBER)</string>',
      );
    }

    if (content != originalContent) {
      plistFile.writeAsStringSync(content);
      return true;
    }
  } catch (e) {
    return false; // Error reading/writing file
  }
  return false; // No changes made
}