/* * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ // This C++ file is part of the default configuration used by apps and is placed // inside react-native to encapsulate it from user space (so you won't need to // touch C++/Cmake code at all on Android). // // If you wish to customize it (because you want to manually link a C++ library // or pass a custom compilation flag) you can: // // 1. Copy this CMake file inside the `android/app/src/main/jni` folder of your // project // 2. Copy the OnLoad.cpp (in this same folder) file inside the same folder as // above. // 3. Extend your `android/app/build.gradle` as follows // // android { // // Other config here... // externalNativeBuild { // cmake { // path "src/main/jni/CMakeLists.txt" // } // } // } #include #include #include #include #include namespace facebook { namespace react { void registerComponents( std::shared_ptr registry) { // Custom Fabric Components go here. You can register custom // components coming from your App or from 3rd party libraries here. // // providerRegistry->add(concreteComponentDescriptorProvider< // AocViewerComponentDescriptor>()); // By default we just use the components autolinked by RN CLI rncli_registerProviders(registry); } std::shared_ptr cxxModuleProvider( const std::string &name, const std::shared_ptr &jsInvoker) { // Not implemented yet: provide pure-C++ NativeModules here. return nullptr; } std::shared_ptr javaModuleProvider( const std::string &name, const JavaTurboModule::InitParams ¶ms) { // Here you can provide your own module provider for TurboModules coming from // either your application or from external libraries. The approach to follow // is similar to the following (for a library called `samplelibrary`): // // auto module = samplelibrary_ModuleProvider(moduleName, params); // if (module != nullptr) { // return module; // } // return rncore_ModuleProvider(moduleName, params); // By default we just use the module providers autolinked by RN CLI return rncli_ModuleProvider(name, params); } } // namespace react } // namespace facebook JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *) { return facebook::jni::initialize(vm, [] { facebook::react::DefaultTurboModuleManagerDelegate::cxxModuleProvider = &facebook::react::cxxModuleProvider; facebook::react::DefaultTurboModuleManagerDelegate::javaModuleProvider = &facebook::react::javaModuleProvider; facebook::react::DefaultComponentsRegistry:: registerComponentDescriptorsFromEntryPoint = &facebook::react::registerComponents; }); }