prepareEnv method
Implementation
@override
Future<void> prepareEnv(
{String? minSdkVersion,
String? targetSdkVersion,
String? compileSdkVersion}) async {
var buildFile = File("${Directory.current.path}/android/app/build.gradle");
if (!buildFile.existsSync()) {
throw Exception(
"Error on Configure android, missing file: /android/app/build.gradle");
}
var lines = await buildFile.linesIndexed();
MapEntry minSdkVersionMap = const MapEntry(-1, "");
MapEntry targetSdkVersionMap = const MapEntry(-1, "");
MapEntry compileSdkVersionMap = const MapEntry(-1, "");
lines.forEach((key, value) {
if (value.contains("minSdkVersion")) {
minSdkVersionMap = MapEntry(key, value);
}
if (value.contains("targetSdkVersion")) {
targetSdkVersionMap = MapEntry(key, value);
}
if (value.contains("compileSdkVersion")) {
compileSdkVersionMap = MapEntry(key, value);
}
});
if (minSdkVersionMap.key == -1 ||
targetSdkVersionMap.key == -1 ||
compileSdkVersionMap.key == -1) {
throw Exception(
"Error on Configure android, invalid content of /android/app/build.gradle missing one of the following: [minSdkVersionMap, targetSdkVersionMap, compileSdkVersion]");
}
lines[minSdkVersionMap.key] =
" minSdkVersion ${minSdkVersion ?? 22}";
lines[targetSdkVersionMap.key] =
" targetSdkVersion ${targetSdkVersion ?? 30}";
lines[compileSdkVersionMap.key] =
" compileSdkVersion ${compileSdkVersion ?? 33}";
buildFile.writeAsStringSync(lines.values.join("\n"));
}