diff --git a/examples/SampleApp/android/build.gradle b/examples/SampleApp/android/build.gradle index 2c015768a0..3fce23a8b8 100644 --- a/examples/SampleApp/android/build.gradle +++ b/examples/SampleApp/android/build.gradle @@ -30,17 +30,6 @@ ext.REACT_NATIVE_NODE_MODULES_DIR = file("$rootDir/../node_modules/react-native" ext.REACT_NATIVE_WORKLETS_NODE_MODULES_DIR = file("$rootDir/../node_modules/react-native-worklets").absolutePath -subprojects { subproject -> - if (subproject.path != ":app") { - evaluationDependsOn(":app") - project(":app").tasks.matching { task -> - task.name.startsWith("configureCMake") - }.configureEach { - dependsOn(subproject.tasks.matching { it.name == "preBuild" }) - } - } -} - allprojects { repositories { maven { @@ -53,10 +42,4 @@ allprojects { } } -project(':app') { - tasks.matching { it.name == "preBuild" || it.name.startsWith("configureCMake") }.configureEach { - dependsOn("generateCodegenArtifactsFromSchema") - } -} - apply plugin: "com.facebook.react.rootproject" diff --git a/package/expo-package/android/build.gradle b/package/expo-package/android/build.gradle index d64a081fba..0790bb703f 100644 --- a/package/expo-package/android/build.gradle +++ b/package/expo-package/android/build.gradle @@ -137,3 +137,33 @@ if (isNewArchitectureEnabled()) { codegenJavaPackageName = "com.streamchatexpo" } } + +if (isNewArchitectureEnabled()) { + gradle.projectsEvaluated { + if (rootProject.ext.has("streamChatReactNativeCodegenHookInstalled")) { + return + } + + def androidAppProject = rootProject.subprojects.find { it.plugins.hasPlugin("com.android.application") } + if (androidAppProject == null) { + return + } + + def dependencyCodegenTasks = rootProject.subprojects + .findAll { it != androidAppProject } + .collect { it.tasks.findByName("generateCodegenArtifactsFromSchema") } + .findAll { it != null } + + if (dependencyCodegenTasks.isEmpty()) { + return + } + + rootProject.ext.set("streamChatReactNativeCodegenHookInstalled", true) + + androidAppProject.tasks.matching { task -> + task.name.startsWith("configureCMake") + }.configureEach { + dependsOn(dependencyCodegenTasks) + } + } +} diff --git a/package/expo-package/package.json b/package/expo-package/package.json index 301c6baa66..766e09ec37 100644 --- a/package/expo-package/package.json +++ b/package/expo-package/package.json @@ -93,6 +93,9 @@ "name": "StreamChatExpoSpec", "type": "all", "jsSrcsDir": "src/native", + "android": { + "javaPackageName": "com.streamchatexpo" + }, "ios": { "modulesProvider": { "StreamVideoThumbnail": "StreamVideoThumbnail" diff --git a/package/native-package/android/build.gradle b/package/native-package/android/build.gradle index 6113b5c74a..ef113dedfe 100644 --- a/package/native-package/android/build.gradle +++ b/package/native-package/android/build.gradle @@ -155,3 +155,33 @@ if (isNewArchitectureEnabled()) { codegenJavaPackageName = "com.streamchatreactnative" } } + +if (isNewArchitectureEnabled()) { + gradle.projectsEvaluated { + if (rootProject.ext.has("streamChatReactNativeCodegenHookInstalled")) { + return + } + + def androidAppProject = rootProject.subprojects.find { it.plugins.hasPlugin("com.android.application") } + if (androidAppProject == null) { + return + } + + def dependencyCodegenTasks = rootProject.subprojects + .findAll { it != androidAppProject } + .collect { it.tasks.findByName("generateCodegenArtifactsFromSchema") } + .findAll { it != null } + + if (dependencyCodegenTasks.isEmpty()) { + return + } + + rootProject.ext.set("streamChatReactNativeCodegenHookInstalled", true) + + androidAppProject.tasks.matching { task -> + task.name.startsWith("configureCMake") + }.configureEach { + dependsOn(dependencyCodegenTasks) + } + } +} diff --git a/package/native-package/package.json b/package/native-package/package.json index 96d5f3ae9f..c4a182187d 100644 --- a/package/native-package/package.json +++ b/package/native-package/package.json @@ -21,6 +21,7 @@ "android/gradle", "ios", "*.podspec", + "react-native.config.js", "package.json" ], "license": "SEE LICENSE IN LICENSE", @@ -92,6 +93,9 @@ "name": "StreamChatReactNativeSpec", "type": "all", "jsSrcsDir": "src/native", + "android": { + "javaPackageName": "com.streamchatreactnative" + }, "ios": { "modulesProvider": { "StreamChatReactNative": "StreamChatReactNative", diff --git a/package/native-package/react-native.config.js b/package/native-package/react-native.config.js new file mode 100644 index 0000000000..aa31a707ed --- /dev/null +++ b/package/native-package/react-native.config.js @@ -0,0 +1,13 @@ +module.exports = { + dependency: { + platforms: { + android: { + packageImportPath: 'import com.streamchatreactnative.StreamChatReactNativePackage;', + packageInstance: 'new StreamChatReactNativePackage()', + }, + ios: { + podspecPath: 'stream-chat-react-native.podspec', + }, + }, + }, +};