1 // Copyright © 2021-present 650 Industries, Inc. (aka Expo)
2 
3 #include "JSIInteropModuleRegistry.h"
4 #include "JavaScriptModuleObject.h"
5 #include "JavaScriptValue.h"
6 #include "JavaScriptObject.h"
7 #include "JavaScriptFunction.h"
8 #include "JavaScriptTypedArray.h"
9 #include "JavaReferencesCache.h"
10 #include "JavaCallback.h"
11 #include "types/FrontendConverterProvider.h"
12 
13 #if RN_FABRIC_ENABLED
14 #include "FabricComponentsRegistry.h"
15 #endif
16 
17 #include <jni.h>
18 #include <fbjni/fbjni.h>
19 
20 // Install all jni bindings
JNI_OnLoad(JavaVM * vm,void *)21 JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) {
22   return facebook::jni::initialize(vm, [] {
23     // Loads references to often use Java classes
24     expo::JavaReferencesCache::instance()->loadJClasses(jni::Environment::current());
25     expo::FrontendConverterProvider::instance()->createConverters();
26 
27     expo::JSIInteropModuleRegistry::registerNatives();
28     expo::JavaScriptModuleObject::registerNatives();
29     expo::JavaScriptValue::registerNatives();
30     expo::JavaScriptObject::registerNatives();
31     expo::JavaScriptFunction::registerNatives();
32     expo::JavaScriptTypedArray::registerNatives();
33     expo::JavaCallback::registerNatives();
34 #if RN_FABRIC_ENABLED
35     expo::FabricComponentsRegistry::registerNatives();
36 #endif
37   });
38 }
39