refactorAndroidPackage function
Implementation
void refactorAndroidPackage(RenameConfig config) {
final kotlinRoot = Directory(
p.join('android', 'app', 'src', 'main', 'kotlin'),
);
if (!kotlinRoot.existsSync()) {
Logger.warn('No Kotlin source directory found');
return;
}
final newPackage = config.androidId;
final newPath = p.joinAll(newPackage.split('.'));
final ktFiles = kotlinRoot
.listSync(recursive: true)
.whereType<File>()
.where((f) => f.path.endsWith('.kt'))
.toList();
for (final file in ktFiles) {
final content = file.readAsStringSync();
final updated = content.replaceFirst(
RegExp(r'^package\s+[\w.]+', multiLine: true),
'package $newPackage',
);
final newFile = File(
p.join(kotlinRoot.path, newPath, p.basename(file.path)),
);
newFile.parent.createSync(recursive: true);
newFile.writeAsStringSync(updated);
if (file.path != newFile.path) {
file.deleteSync();
}
}
_cleanupEmptyDirs(kotlinRoot);
Logger.success('Android Kotlin package path refactored');
}