@@ -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+
450505String ? getExampleReactNativePatchBrickPath () {
451506 final exampleReactNativePatchBrickPath = flutterEmbeddingConfig? ['react_native' ]? ['example' ]? ['brick_patch' ];
452507 return exampleReactNativePatchBrickPath? .toString ();
0 commit comments