Skip to content

Commit 1fafced

Browse files
committed
update
1 parent 6c1d7d3 commit 1fafced

2 files changed

Lines changed: 56 additions & 1 deletion

File tree

packages/flutter_embedding_cli/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -310,7 +310,7 @@ The patch brick will be applied after the base example app is generated, allowin
310310

311311
```bash
312312
dart pub global activate protoc_plugin 20.0.1
313-
brew install protoc-gen-js protoc-gen-doc swift-protobuf grpc-swift protoc-gen-grpc-web
313+
brew install protoc-gen-js protoc-gen-doc swift-protobuf grpc-swift protoc-gen-grpc-web protoc-gen-grpc-java
314314
npm install -g "@protobuf-ts/plugin"
315315
```
316316

packages/flutter_embedding_cli/bin/generate.dart

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,10 @@ void main(List<String> arguments) async {
9292
'webAngularPackageName': webAngularPackageName,
9393
'webReactPackageName': webReactPackageName,
9494
'reactNativePackageName': reactNativePackageName,
95+
'exampleReactNativePackageName': getExampleReactNativePackageName(),
96+
'exampleReactNativePackageNameFolder': getExampleReactNativePackageName()?.replaceAll('.', '/'),
97+
'exampleReactNativeAppName': getExampleReactNativeAppName(),
98+
'exampleReactNativeBundleIdentifier': getExampleReactNativeBundleIdentifier(),
9599
'flutterEmbeddingPackageName': _getFlutterEmbeddingPackageName(),
96100
'flutterEmbeddingPackageNameFolder': _getFlutterEmbeddingPackageName().replaceAll('.', '/'),
97101
};
@@ -258,6 +262,42 @@ void main(List<String> arguments) async {
258262
final exampleReactNativePatchTarget = DirectoryGeneratorTarget(Directory(flutterRnEmbeddingExamplePath));
259263
await exampleReactNativePatchGenerator.generate(exampleReactNativePatchTarget, vars: brickVars);
260264
}
265+
266+
final exampleRnPackageName = brickVars['exampleReactNativePackageName'];
267+
final exampleRnPackageNameFolder = brickVars['exampleReactNativePackageNameFolder'];
268+
final exampleRnAppName = brickVars['exampleReactNativeAppName'];
269+
final exampleRnBundleIdentifier = brickVars['exampleReactNativeBundleIdentifier'];
270+
271+
final androidAppPath = '$flutterRnEmbeddingExamplePath/android/app';
272+
final appBuildGradle = File('$androidAppPath/build.gradle');
273+
appBuildGradle.writeAsStringSync(appBuildGradle
274+
.readAsStringSync()
275+
.replaceAll('com.flutterrnembeddingexample', exampleRnPackageName));
276+
277+
final stringsXml = File('$androidAppPath/src/main/res/values/strings.xml');
278+
stringsXml.writeAsStringSync(stringsXml
279+
.readAsStringSync()
280+
.replaceAll('FlutterRNEmbeddingExample', exampleRnAppName));
281+
282+
final oldKotlinDir = Directory('$androidAppPath/src/main/java/com/flutterrnembeddingexample');
283+
if (oldKotlinDir.existsSync()) {
284+
final newKotlinDir = Directory('$androidAppPath/src/main/java/$exampleRnPackageNameFolder');
285+
newKotlinDir.createSync(recursive: true);
286+
for (final file in oldKotlinDir.listSync().whereType<File>()) {
287+
final content = file.readAsStringSync().replaceAll('com.flutterrnembeddingexample', exampleRnPackageName);
288+
File('${newKotlinDir.path}/${file.uri.pathSegments.last}').writeAsStringSync(content);
289+
}
290+
oldKotlinDir.deleteSync(recursive: true);
291+
}
292+
293+
final rnXcodeProject =
294+
File('$flutterRnEmbeddingExamplePath/ios/FlutterRNEmbeddingExample.xcodeproj/project.pbxproj');
295+
if (rnXcodeProject.existsSync()) {
296+
rnXcodeProject.writeAsStringSync(rnXcodeProject
297+
.readAsStringSync()
298+
.replaceAll('org.reactjs.native.example.\$(PRODUCT_NAME:rfc1034identifier)', exampleRnBundleIdentifier));
299+
}
300+
261301
// fix permissions for gradlew, permissions are lost after generating a brick
262302
await runCommand('chmod', ['u+x', '$flutterRnEmbeddingExamplePath/android/gradlew'], verbose);
263303
}
@@ -447,6 +487,21 @@ String? getExampleIosDisplayName() {
447487
return exampleIosDisplayName?.toString() ?? 'Flutter Embedding Example';
448488
}
449489

490+
String? getExampleReactNativePackageName() {
491+
final exampleReactNativePackageName = flutterEmbeddingConfig?['react_native']?['example']?['package_name'];
492+
return exampleReactNativePackageName?.toString() ?? '${_getFlutterEmbeddingPackageName()}.example';
493+
}
494+
495+
String? getExampleReactNativeAppName() {
496+
final exampleReactNativeAppName = flutterEmbeddingConfig?['react_native']?['example']?['app_name'];
497+
return exampleReactNativeAppName?.toString() ?? 'Flutter Embedding Example';
498+
}
499+
500+
String? getExampleReactNativeBundleIdentifier() {
501+
final exampleReactNativeBundleIdentifier = flutterEmbeddingConfig?['react_native']?['example']?['bundle_identifier'];
502+
return exampleReactNativeBundleIdentifier?.toString() ?? '${_getFlutterEmbeddingPackageName()}.example';
503+
}
504+
450505
String? getExampleReactNativePatchBrickPath() {
451506
final exampleReactNativePatchBrickPath = flutterEmbeddingConfig?['react_native']?['example']?['brick_patch'];
452507
return exampleReactNativePatchBrickPath?.toString();

0 commit comments

Comments
 (0)