adjustBuildGradleInAndroidFile function
void
adjustBuildGradleInAndroidFile()
Implementation
void adjustBuildGradleInAndroidFile() {
const gradlePath = 'android/build.gradle';
const gradleKtsPath = 'android/build.gradle.kts';
final gradleFile = File(gradlePath);
final gradleKtsFile = File(gradleKtsPath);
if (!gradleFile.existsSync() && !gradleKtsFile.existsSync()) {
print('Error: Neither build.gradle nor build.gradle.kts exists.');
return;
}
final isKts = gradleKtsFile.existsSync();
final fileToEdit = isKts ? gradleKtsFile : gradleFile;
final buildscriptBlock = isKts
? '''buildscript {
dependencies {
classpath("com.android.tools.build:gradle:8.6.0")
}
repositories {
google()
mavenCentral()
}
}'''
: '''buildscript {
dependencies {
classpath 'com.android.tools.build:gradle:8.6.0'
}
repositories {
google()
mavenCentral()
}
}''';
List<String> lines;
try {
lines = fileToEdit.readAsLinesSync();
} catch (e) {
print('Error reading file: $e');
return;
}
final containsVersion = lines.any((line) =>
line.contains(isKts
? 'classpath("com.android.tools.build:gradle:8.6.0")'
: 'classpath \'com.android.tools.build:gradle:8.6.0\''));
if (containsVersion) {
print('The buildscript block or version already exists in the file.');
return;
}
final buildscriptLines = buildscriptBlock.split('\n');
lines.insertAll(0, buildscriptLines);
try {
fileToEdit.writeAsStringSync(lines.join('\n'));
print('buildscript block added successfully.');
} catch (e) {
print('Error writing to file: $e');
}
}