From b1a779392d483c649d428debfe4a6405247b8c0e Mon Sep 17 00:00:00 2001 From: Andrei Shikov Date: Tue, 22 Feb 2022 09:50:29 -0800 Subject: [PATCH] Enable Kotlin build in OSS (#33160) Summary: Pull Request resolved: https://github.com/facebook/react-native/pull/33160 Enables Kotlin build in RNAndroid, while adjusting the package structure to help with path/package inconsistency. Moves `react/uimanager/interfaces` files into `react/uimanager` to make sure package name matches with file location and updates Buck configuration to still include it as a separate target. Changelog: [Android][Changed] - Moved `com/react/facebook/uimanager/interfaces` files into `com/react/facebook/uimanager` to enable Kotlin build Reviewed By: cortinico Differential Revision: D34381179 fbshipit-source-id: 252588d9c7f62b8019bdfcce66197628d63e63a1 --- ReactAndroid/build.gradle | 1 + .../java/com/facebook/react/uimanager/BUCK | 33 +++++++++++++++++-- .../BaseViewManagerDelegate.java | 0 .../BaseViewManagerInterface.java | 0 .../uimanager/{interfaces => }/FloatUtil.java | 0 .../uimanager/{interfaces => }/Spacing.java | 0 .../{interfaces => }/ViewManagerDelegate.java | 0 .../uimanager/{interfaces => }/ViewProps.java | 0 .../facebook/react/uimanager/interfaces/BUCK | 21 ------------ packages/react-native-codegen/DEFS.bzl | 2 +- 10 files changed, 33 insertions(+), 24 deletions(-) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/BaseViewManagerDelegate.java (100%) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/BaseViewManagerInterface.java (100%) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/FloatUtil.java (100%) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/Spacing.java (100%) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/ViewManagerDelegate.java (100%) rename ReactAndroid/src/main/java/com/facebook/react/uimanager/{interfaces => }/ViewProps.java (100%) delete mode 100644 ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK diff --git a/ReactAndroid/build.gradle b/ReactAndroid/build.gradle index 291c8fc6bb7..33a09c0a47a 100644 --- a/ReactAndroid/build.gradle +++ b/ReactAndroid/build.gradle @@ -8,6 +8,7 @@ plugins { id("com.android.library") id("com.facebook.react") + id("org.jetbrains.kotlin.android") id("maven-publish") id("de.undercouch.download") } diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK index 1d3b290ca3a..16cd65135db 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK @@ -1,5 +1,34 @@ load("//tools/build_defs/oss:rn_defs.bzl", "YOGA_TARGET", "react_native_dep", "react_native_target", "rn_android_library") +INTERFACES_FILES = [ + "BaseViewManagerDelegate.java", + "BaseViewManagerInterface.java", + "ViewManagerDelegate.java", + "ViewProps.java", + "Spacing.java", + "FloatUtil.java", +] + +rn_android_library( + name = "interfaces", + srcs = glob(INTERFACES_FILES), + autoglob = False, + is_androidx = True, + labels = ["supermodule:xplat/default/public.react_native.infra"], + provided_deps = [ + react_native_dep("third-party/android/androidx:annotation"), + ], + required_for_source_only_abi = True, + visibility = [ + "PUBLIC", + ], + deps = [ + YOGA_TARGET, + react_native_dep("third-party/java/jsr-305:jsr-305"), + react_native_target("java/com/facebook/react/bridge:bridge"), + ], +) + rn_android_library( name = "uimanager", srcs = glob( @@ -11,7 +40,7 @@ rn_android_library( ], exclude = [ "DisplayMetricsHolder.java", - ], + ] + INTERFACES_FILES, ), autoglob = False, exported_provided_deps = [ @@ -53,9 +82,9 @@ rn_android_library( ], exported_deps = [ ":DisplayMetrics", + ":interfaces", react_native_dep("third-party/java/jsr-305:jsr-305"), react_native_target("java/com/facebook/react/uimanager/common:common"), - react_native_target("java/com/facebook/react/uimanager/interfaces:interfaces"), ], ) diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BaseViewManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BaseViewManagerDelegate.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerDelegate.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BaseViewManagerInterface.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BaseViewManagerInterface.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/BaseViewManagerInterface.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/FloatUtil.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/FloatUtil.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/FloatUtil.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/FloatUtil.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/Spacing.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/Spacing.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/Spacing.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/Spacing.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewManagerDelegate.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewManagerDelegate.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewManagerDelegate.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewProps.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java similarity index 100% rename from ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/ViewProps.java rename to ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK b/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK deleted file mode 100644 index 8922b82d73d..00000000000 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/interfaces/BUCK +++ /dev/null @@ -1,21 +0,0 @@ -load("//tools/build_defs/oss:rn_defs.bzl", "YOGA_TARGET", "react_native_dep", "react_native_target", "rn_android_library") - -rn_android_library( - name = "interfaces", - srcs = glob(["*.java"]), - autoglob = False, - is_androidx = True, - labels = ["supermodule:xplat/default/public.react_native.infra"], - provided_deps = [ - react_native_dep("third-party/android/androidx:annotation"), - ], - required_for_source_only_abi = True, - visibility = [ - "PUBLIC", - ], - deps = [ - YOGA_TARGET, - react_native_dep("third-party/java/jsr-305:jsr-305"), - react_native_target("java/com/facebook/react/bridge:bridge"), - ], -) diff --git a/packages/react-native-codegen/DEFS.bzl b/packages/react-native-codegen/DEFS.bzl index 19d07e9d3ef..c1bf8668d6e 100644 --- a/packages/react-native-codegen/DEFS.bzl +++ b/packages/react-native-codegen/DEFS.bzl @@ -485,7 +485,7 @@ def rn_codegen_components( deps = [ react_native_dep("third-party/android/androidx:annotation"), react_native_target("java/com/facebook/react/bridge:bridge"), - react_native_target("java/com/facebook/react/uimanager/interfaces:interfaces"), + react_native_target("java/com/facebook/react/uimanager:interfaces"), ], )