Skip to content

Commit f01948c

Browse files
committed
Work on Android package_name change
1 parent 4fbf0cb commit f01948c

File tree

3 files changed

+57
-3
lines changed

3 files changed

+57
-3
lines changed

lib/src/changes/files_to_modify_content.dart

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,5 +30,15 @@ List<RequiredChange> getFilesToModifyContent(
3030
replacement: config.newAppName,
3131
paths: ["ios/Runner/Info.plist"],
3232
),
33+
RequiredChange(
34+
regexp: RegExp(config.oldAndroidPackageName),
35+
replacement: config.newAndroidPackageName,
36+
paths: [
37+
"android/src/main/kotlin/${config.oldAndroidPackageName.replaceAll('.', '/')}",
38+
"android/src/debug",
39+
"android/src/profile",
40+
],
41+
isDirectory: true,
42+
),
3343
];
3444
}

lib/src/flutter_rename_app.dart

Lines changed: 45 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,9 @@ renameApp() async {
4545
Logger.info("Let's change all in tests !");
4646
await _changeAllImportsIn("test", config);
4747

48-
var shell = Shell();
48+
await _changeAndroidPackageName(config);
49+
50+
final shell = Shell();
4951

5052
await shell.run("flutter pub get");
5153
} catch (error) {
@@ -56,6 +58,39 @@ renameApp() async {
5658
}
5759
}
5860

61+
_changeAndroidPackageName(Config config) async {
62+
Logger.newLine();
63+
Logger.info("Changing android package name");
64+
final String newPackageName = config.newAndroidPackageName;
65+
final List<String> newPackageNameParts = newPackageName.split(".");
66+
67+
final Directory javaDirectory = Directory("android/app/src/main/java");
68+
int index = 0;
69+
javaDirectory.list(recursive: true).forEach((FileSystemEntity fileSystemEntity) {
70+
if (index < newPackageNameParts.length - 1 &&
71+
fileSystemEntity is Directory &&
72+
fileSystemEntity.path.endsWith(newPackageNameParts[index])) {
73+
fileSystemEntity.renameSync(newPackageNameParts[index]);
74+
print("CHANGED dir name from ${fileSystemEntity.path} to ${newPackageNameParts[index]} ");
75+
index++;
76+
}
77+
});
78+
79+
final Directory kotlinDirectory = Directory("android/app/src/main/kotlin");
80+
index = 0;
81+
kotlinDirectory.list(recursive: true).forEach((FileSystemEntity fileSystemEntity) {
82+
if (index < newPackageNameParts.length - 1 &&
83+
fileSystemEntity is Directory &&
84+
fileSystemEntity.path.endsWith(newPackageNameParts[index])) {
85+
fileSystemEntity.renameSync(newPackageNameParts[index]);
86+
print("CHANGED dir name from ${fileSystemEntity.path} to ${newPackageNameParts[index]} ");
87+
index++;
88+
}
89+
});
90+
91+
Logger.newLine();
92+
}
93+
5994
_changeAllImportsIn(String directoryPath, Config config) async {
6095
final Directory directory = Directory(directoryPath);
6196
if (directory.existsSync()) {
@@ -85,7 +120,14 @@ _applyNameChanges(List<RequiredChange> requiredChanges) async {
85120
_applyContentChanges(List<RequiredChange> requiredChanges) async {
86121
await Future.forEach(requiredChanges, (RequiredChange change) async {
87122
for (final path in change.paths) {
88-
await _changeContentInFile(path, change.regexp, change.replacement);
123+
if (change.isDirectory) {
124+
final Directory directory = Directory(path);
125+
Future.forEach(directory.listSync(recursive: true), (FileSystemEntity entity) async {
126+
await _changeContentInFile(entity.path, change.regexp, change.replacement);
127+
});
128+
} else {
129+
await _changeContentInFile(path, change.regexp, change.replacement);
130+
}
89131
}
90132
});
91133
}
@@ -94,7 +136,7 @@ _changeFileName(String filePath, RegExp regexp, String replacement) async {
94136
if (filePath.contains(regexp)) {
95137
try {
96138
final File file = File(filePath);
97-
file.rename(filePath.replaceAll(regexp, replacement));
139+
file.renameSync(filePath.replaceAll(regexp, replacement));
98140
} on FileSystemException {
99141
Logger.error("File $filePath does not exist on this project");
100142
}

lib/src/models/required_change.dart

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@ class RequiredChange {
22
final RegExp regexp;
33
final String replacement;
44
final List<String> paths;
5+
final bool isDirectory;
56

67
RequiredChange({
78
this.regexp,
89
this.replacement,
910
this.paths,
11+
this.isDirectory = false,
1012
});
1113
}

0 commit comments

Comments
 (0)