transformAndroidManifestWithNewLauncherIcon function
Updates only the line containing android:icon with the specified iconName
Implementation
List<String> transformAndroidManifestWithNewLauncherIcon(
List<String> oldManifestLines, String iconName) {
return oldManifestLines.map((String line) {
if (line.contains('android:icon')) {
// Using RegExp replace the value of android:icon to point to the new icon
// anything but a quote of any length: [^"]*
// an escaped quote: \\" (escape slash, because it exists regex)
// quote, no quote / quote with things behind : \"[^"]*
// repeat as often as wanted with no quote at start: [^"]*(\"[^"]*)*
// escaping the slash to place in string: [^"]*(\\"[^"]*)*"
// result: any string which does only include escaped quotes
return line.replaceAll(RegExp(r'android:icon="[^"]*(\\"[^"]*)*"'),
'android:icon="@mipmap/$iconName"');
} else {
return line;
}
}).toList();
}