1diff --git a/packages/expo-modules-core/android/CMakeLists.txt b/packages/expo-modules-core/android/CMakeLists.txt 2index d710ce4f8f..3562c513b3 100644 3--- a/packages/expo-modules-core/android/CMakeLists.txt 4+++ b/packages/expo-modules-core/android/CMakeLists.txt 5@@ -3,7 +3,7 @@ cmake_minimum_required(VERSION 3.4.1) 6 set(CMAKE_VERBOSE_MAKEFILE ON) 7 set(CMAKE_ANDROID_STL_TYPE c++_shared) 8 set(CMAKE_CXX_STANDARD 17) 9-set(PACKAGE_NAME "expo-modules-core") 10+set(PACKAGE_NAME "expo-modules-core_{VERSIONED_ABI_NAME}") 11 set(BUILD_DIR ${CMAKE_SOURCE_DIR}/build) 12 13 if (${NATIVE_DEBUG}) 14@@ -61,14 +61,14 @@ find_library(LOG_LIB log) 15 if(${REACT_NATIVE_TARGET_VERSION} LESS 69) 16 find_library( 17 FOLLY_LIB 18- folly_json 19+ folly_json_{VERSIONED_ABI_NAME} 20 PATHS ${LIBRN_DIR} 21 NO_CMAKE_FIND_ROOT_PATH 22 ) 23 else() 24 find_library( 25 FOLLY_LIB 26- folly_runtime 27+ folly_runtime_{VERSIONED_ABI_NAME} 28 PATHS ${LIBRN_DIR} 29 NO_CMAKE_FIND_ROOT_PATH 30 ) 31@@ -83,35 +83,35 @@ find_library( 32 33 find_library( 34 JSI_LIB 35- jsi 36+ jsi_{VERSIONED_ABI_NAME} 37 PATHS ${LIBRN_DIR} 38 NO_CMAKE_FIND_ROOT_PATH 39 ) 40 41 find_library( 42 REACT_NATIVE_JNI_LIB 43- reactnativejni 44+ reactnativejni_{VERSIONED_ABI_NAME} 45 PATHS ${LIBRN_DIR} 46 NO_CMAKE_FIND_ROOT_PATH 47 ) 48 49 find_library( 50 REACT_NATIVE_MODULES_CORE 51- react_nativemodule_core 52+ react_nativemodule_core_{VERSIONED_ABI_NAME} 53 PATHS ${LIBRN_DIR} 54 NO_CMAKE_FIND_ROOT_PATH 55 ) 56 57 find_library( 58 HERMES_LIB 59- hermes 60+ hermes_{VERSIONED_ABI_NAME} 61 PATHS ${HERMES_SO_DIR} 62 NO_CMAKE_FIND_ROOT_PATH 63 ) 64 65 find_library( 66 JSEXECUTOR_LIB 67- jscexecutor 68+ jscexecutor_{VERSIONED_ABI_NAME} 69 PATHS ${LIBRN_DIR} 70 NO_CMAKE_FIND_ROOT_PATH 71 ) 72diff --git a/packages/expo-modules-core/android/build.gradle b/packages/expo-modules-core/android/build.gradle 73index 37f9d48029..2ed8dc1e09 100644 74--- a/packages/expo-modules-core/android/build.gradle 75+++ b/packages/expo-modules-core/android/build.gradle 76@@ -55,6 +55,10 @@ def REACT_NATIVE_DIR = REACT_NATIVE_BUILD_FROM_SOURCE 77 def REACT_NATIVE_SO_DIR = REACT_NATIVE_BUILD_FROM_SOURCE 78 ? Paths.get(findProject(":ReactAndroid").getProjectDir().toString(), "build", "intermediates", "library_*", "*", "jni") 79 : "${buildDir}/react-native-0*/jni" 80+REACT_NATIVE_DIR = "${rootDir}/versioned-react-native" 81+REACT_NATIVE_BUILD_FROM_SOURCE = false 82+REACT_NATIVE_SO_DIR = "${buildDir}/reactandroid-{VERSIONED_ABI_NAME}-*/jni" 83+def REACT_NATIVE_AAR_DIR = "${rootDir}/versioned-abis/expoview-{VERSIONED_ABI_NAME}/maven" 84 85 def reactProperties = new Properties() 86 file("$REACT_NATIVE_DIR/ReactAndroid/gradle.properties").withInputStream { reactProperties.load(it) } 87@@ -270,7 +274,7 @@ task createNativeDepsDirectories() { 88 // JNI 89 def extractReactNativeAAR = { buildType -> 90 def suffix = buildType == 'Debug' ? '-debug' : '-release' 91- def rnAARs = fileTree(REACT_NATIVE_DIR).matching { include "**/react-native/**/*${suffix}.aar" } 92+ def rnAARs = fileTree(REACT_NATIVE_AAR_DIR).matching { include "**/*.aar" } 93 if (rnAARs.isEmpty()) { 94 rnAARs = fileTree(REACT_NATIVE_DIR).matching { include "**/react-native/**/*.aar" } 95 } 96diff --git a/packages/expo-modules-core/android/src/main/cpp/Exceptions.h b/packages/expo-modules-core/android/src/main/cpp/Exceptions.h 97index 3565306601..984166f10f 100644 98--- a/packages/expo-modules-core/android/src/main/cpp/Exceptions.h 99+++ b/packages/expo-modules-core/android/src/main/cpp/Exceptions.h 100@@ -17,7 +17,7 @@ namespace expo { 101 */ 102 class CodedException : public jni::JavaClass<CodedException, jni::JThrowable> { 103 public: 104- static auto constexpr kJavaDescriptor = "Lexpo/modules/kotlin/exception/CodedException;"; 105+ static auto constexpr kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/exception/CodedException;"; 106 107 static jni::local_ref<CodedException> create(const std::string &message); 108 }; 109@@ -28,7 +28,7 @@ public: 110 class JavaScriptEvaluateException 111 : public jni::JavaClass<JavaScriptEvaluateException, CodedException> { 112 public: 113- static auto constexpr kJavaDescriptor = "Lexpo/modules/kotlin/exception/JavaScriptEvaluateException;"; 114+ static auto constexpr kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/exception/JavaScriptEvaluateException;"; 115 116 static jni::local_ref<JavaScriptEvaluateException> create( 117 const std::string &message, 118diff --git a/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.cpp b/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.cpp 119index ae14c3396a..c2fe1fce5f 100644 120--- a/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.cpp 121+++ b/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.cpp 122@@ -13,7 +13,7 @@ JNIFunctionBody::invoke(jni::local_ref<jni::JArrayClass<jobject>> &&args) { 123 // Because of that, it can't be cached - we will try to invoke the nonexistent method 124 // if we receive an object of a different class than the one used to obtain the method id. 125 // The only cacheable method id can be obtain from the base class. 126- static const auto method = jni::findClassLocal("expo/modules/kotlin/jni/JNIFunctionBody") 127+ static const auto method = jni::findClassLocal("{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JNIFunctionBody") 128 ->getMethod< 129 react::ReadableNativeArray::javaobject(jni::local_ref<jni::JArrayClass<jobject>>) 130 >( 131@@ -32,7 +32,7 @@ void JNIAsyncFunctionBody::invoke( 132 // Because of that, it can't be cached - we will try to invoke the nonexistent method 133 // if we receive an object of a different class than the one used to obtain the method id. 134 // The only cacheable method id can be obtain from the base class. 135- static const auto method = jni::findClassLocal("expo/modules/kotlin/jni/JNIAsyncFunctionBody") 136+ static const auto method = jni::findClassLocal("{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JNIAsyncFunctionBody") 137 ->getMethod< 138 void(jni::local_ref<jni::JArrayClass<jobject>>, jobject) 139 >( 140diff --git a/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.h b/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.h 141index 4d86132af1..b96eeb3303 100644 142--- a/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.h 143+++ b/packages/expo-modules-core/android/src/main/cpp/JNIFunctionBody.h 144@@ -15,7 +15,7 @@ namespace expo { 145 */ 146 class JNIFunctionBody : public jni::JavaClass<JNIFunctionBody> { 147 public: 148- static auto constexpr kJavaDescriptor = "Lexpo/modules/kotlin/jni/JNIFunctionBody;"; 149+ static auto constexpr kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JNIFunctionBody;"; 150 151 /** 152 * Invokes a Kotlin's implementation of this function. 153@@ -34,7 +34,7 @@ public: 154 */ 155 class JNIAsyncFunctionBody : public jni::JavaClass<JNIAsyncFunctionBody> { 156 public: 157- static auto constexpr kJavaDescriptor = "Lexpo/modules/kotlin/jni/JNIAsyncFunctionBody;"; 158+ static auto constexpr kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JNIAsyncFunctionBody;"; 159 160 /** 161 * Invokes a Kotlin's implementation of this async function. 162diff --git a/packages/expo-modules-core/android/src/main/cpp/JSIInteropModuleRegistry.h b/packages/expo-modules-core/android/src/main/cpp/JSIInteropModuleRegistry.h 163index 32fbabd146..f94b37ee16 100644 164--- a/packages/expo-modules-core/android/src/main/cpp/JSIInteropModuleRegistry.h 165+++ b/packages/expo-modules-core/android/src/main/cpp/JSIInteropModuleRegistry.h 166@@ -25,7 +25,7 @@ namespace expo { 167 class JSIInteropModuleRegistry : public jni::HybridClass<JSIInteropModuleRegistry> { 168 public: 169 static auto constexpr 170- kJavaDescriptor = "Lexpo/modules/kotlin/jni/JSIInteropModuleRegistry;"; 171+ kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JSIInteropModuleRegistry;"; 172 static auto constexpr TAG = "JSIInteropModuleRegistry"; 173 174 static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis); 175diff --git a/packages/expo-modules-core/android/src/main/cpp/JavaScriptModuleObject.h b/packages/expo-modules-core/android/src/main/cpp/JavaScriptModuleObject.h 176index 994df84423..c22a1ec267 100644 177--- a/packages/expo-modules-core/android/src/main/cpp/JavaScriptModuleObject.h 178+++ b/packages/expo-modules-core/android/src/main/cpp/JavaScriptModuleObject.h 179@@ -28,7 +28,7 @@ class JSIInteropModuleRegistry; 180 class JavaScriptModuleObject : public jni::HybridClass<JavaScriptModuleObject> { 181 public: 182 static auto constexpr 183- kJavaDescriptor = "Lexpo/modules/kotlin/jni/JavaScriptModuleObject;"; 184+ kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JavaScriptModuleObject;"; 185 static auto constexpr TAG = "JavaScriptModuleObject"; 186 187 static jni::local_ref<jhybriddata> initHybrid(jni::alias_ref<jhybridobject> jThis); 188diff --git a/packages/expo-modules-core/android/src/main/cpp/JavaScriptObject.h b/packages/expo-modules-core/android/src/main/cpp/JavaScriptObject.h 189index 1a4bd3fdb2..6ccc28b07d 100644 190--- a/packages/expo-modules-core/android/src/main/cpp/JavaScriptObject.h 191+++ b/packages/expo-modules-core/android/src/main/cpp/JavaScriptObject.h 192@@ -25,7 +25,7 @@ class JavaScriptRuntime; 193 class JavaScriptObject : public jni::HybridClass<JavaScriptObject>, JSIObjectWrapper { 194 public: 195 static auto constexpr 196- kJavaDescriptor = "Lexpo/modules/kotlin/jni/JavaScriptObject;"; 197+ kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JavaScriptObject;"; 198 static auto constexpr TAG = "JavaScriptObject"; 199 200 static void registerNatives(); 201diff --git a/packages/expo-modules-core/android/src/main/cpp/JavaScriptValue.h b/packages/expo-modules-core/android/src/main/cpp/JavaScriptValue.h 202index 1f016714bc..3fe3c32737 100644 203--- a/packages/expo-modules-core/android/src/main/cpp/JavaScriptValue.h 204+++ b/packages/expo-modules-core/android/src/main/cpp/JavaScriptValue.h 205@@ -23,7 +23,7 @@ class JavaScriptObject; 206 class JavaScriptValue : public jni::HybridClass<JavaScriptValue>, JSIValueWrapper { 207 public: 208 static auto constexpr 209- kJavaDescriptor = "Lexpo/modules/kotlin/jni/JavaScriptValue;"; 210+ kJavaDescriptor = "L{VERSIONED_ABI_NAME}/expo/modules/kotlin/jni/JavaScriptValue;"; 211 static auto constexpr TAG = "JavaScriptValue"; 212 213 static void registerNatives(); 214