From ed0fc79f8b81e32ca6b79df281a2ca4e97960cae Mon Sep 17 00:00:00 2001 From: Nicola Corti Date: Fri, 12 Aug 2022 06:23:22 -0700 Subject: [PATCH] Do not store .cpp/.h files inside src/main/java - jscexecutor Summary: Current we expose native code (.h, .cpp) inside the src/main/java folder. This is making impossible for users on New Architecture to open the project inside Android Studio. The problem is that the src/main/java is reserved to Java/Kotlin sources only. AGP 7.2 also removed support for mixed source roots: https://developer.android.com/studio/releases/gradle-plugin#duplicate-content-roots This is essentially forcing users to write Java code without any autocompletion as all the React Native Java classes are considered C++ files. I'm addressing this issue folder by folder by moving them from ReactAndroid/src/main/java/com/facebook/... to ReactAndroid/src/main/jni/react/... This is the diff for jscexecutor Changelog: [Internal] [Changed] - Do not store .cpp/.h files inside src/main/java - jscexecutor Reviewed By: sshic Differential Revision: D38615007 fbshipit-source-id: 3d617f4a23cb36887262ecc45d16f064d8d84b18 --- .../java/com/facebook/react/jscexecutor/BUCK | 25 ++----------------- ReactAndroid/src/main/jni/CMakeLists.txt | 2 +- .../src/main/jni/react/jscexecutor/BUCK | 22 ++++++++++++++++ .../react/jscexecutor/CMakeLists.txt | 0 .../react/jscexecutor/OnLoad.cpp | 0 5 files changed, 25 insertions(+), 24 deletions(-) create mode 100644 ReactAndroid/src/main/jni/react/jscexecutor/BUCK rename ReactAndroid/src/main/{java/com/facebook => jni}/react/jscexecutor/CMakeLists.txt (100%) rename ReactAndroid/src/main/{java/com/facebook => jni}/react/jscexecutor/OnLoad.cpp (100%) diff --git a/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK b/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK index a6ec7615d8f3..43fa1a28ee2d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/BUCK @@ -1,4 +1,4 @@ -load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "FBJNI_TARGET", "react_native_dep", "react_native_target", "react_native_xplat_target", "rn_android_library", "rn_xplat_cxx_library") +load("//tools/build_defs/oss:rn_defs.bzl", "react_native_dep", "react_native_target", "rn_android_library") rn_android_library( name = "jscexecutor", @@ -13,29 +13,8 @@ rn_android_library( "PUBLIC", ], deps = [ - ":jni", + react_native_target("jni/react/jscexecutor:jni"), react_native_dep("libraries/soloader/java/com/facebook/soloader:soloader"), react_native_target("java/com/facebook/react/bridge:bridge"), ], ) - -rn_xplat_cxx_library( - name = "jni", - srcs = glob(["*.cpp"]), - headers = glob(["*.h"]), - header_namespace = "", - compiler_flags_enable_exceptions = True, # TODO: is this necessary? - compiler_flags_enable_rtti = True, # TODO: is this necessary? - fbandroid_allow_jni_merging = True, - platforms = ANDROID, - soname = "libjscexecutor.$(ext)", - visibility = [ - react_native_target("java/com/facebook/react/jscexecutor:jscexecutor"), - ], - deps = [ - FBJNI_TARGET, - react_native_target("jni/react/jni:jni"), - react_native_xplat_target("jsi:JSCRuntime"), - react_native_xplat_target("jsiexecutor:jsiexecutor"), - ], -) diff --git a/ReactAndroid/src/main/jni/CMakeLists.txt b/ReactAndroid/src/main/jni/CMakeLists.txt index eaeded22a3be..f56766160ca8 100644 --- a/ReactAndroid/src/main/jni/CMakeLists.txt +++ b/ReactAndroid/src/main/jni/CMakeLists.txt @@ -96,7 +96,7 @@ add_react_android_subdir(src/main/jni/first-party/fbgloginit) add_react_android_subdir(src/main/jni/first-party/yogajni) add_react_android_subdir(src/main/jni/react/jni) add_react_android_subdir(src/main/jni/react/reactperflogger) -add_react_android_subdir(src/main/java/com/facebook/react/jscexecutor) +add_react_android_subdir(src/main/jni/react/jscexecutor) add_react_android_subdir(src/main/java/com/facebook/react/turbomodule/core/jni) add_react_android_subdir(src/main/java/com/facebook/react/uimanager/jni) add_react_android_subdir(src/main/java/com/facebook/react/common/mapbuffer/jni) diff --git a/ReactAndroid/src/main/jni/react/jscexecutor/BUCK b/ReactAndroid/src/main/jni/react/jscexecutor/BUCK new file mode 100644 index 000000000000..7719f27dbc96 --- /dev/null +++ b/ReactAndroid/src/main/jni/react/jscexecutor/BUCK @@ -0,0 +1,22 @@ +load("//tools/build_defs/oss:rn_defs.bzl", "ANDROID", "FBJNI_TARGET", "react_native_target", "react_native_xplat_target", "rn_xplat_cxx_library") + +rn_xplat_cxx_library( + name = "jni", + srcs = glob(["*.cpp"]), + headers = glob(["*.h"]), + header_namespace = "", + compiler_flags_enable_exceptions = True, # TODO: is this necessary? + compiler_flags_enable_rtti = True, # TODO: is this necessary? + fbandroid_allow_jni_merging = True, + platforms = ANDROID, + soname = "libjscexecutor.$(ext)", + visibility = [ + react_native_target("java/com/facebook/react/jscexecutor:jscexecutor"), + ], + deps = [ + FBJNI_TARGET, + react_native_target("jni/react/jni:jni"), + react_native_xplat_target("jsi:JSCRuntime"), + react_native_xplat_target("jsiexecutor:jsiexecutor"), + ], +) diff --git a/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/CMakeLists.txt b/ReactAndroid/src/main/jni/react/jscexecutor/CMakeLists.txt similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/jscexecutor/CMakeLists.txt rename to ReactAndroid/src/main/jni/react/jscexecutor/CMakeLists.txt diff --git a/ReactAndroid/src/main/java/com/facebook/react/jscexecutor/OnLoad.cpp b/ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/jscexecutor/OnLoad.cpp rename to ReactAndroid/src/main/jni/react/jscexecutor/OnLoad.cpp