Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 3.04 KB

File metadata and controls

51 lines (40 loc) · 3.04 KB

react-native-nitro-test

NitroTest is an example nitro module we use for testing various Nitro features.

Usage

NitroTest is installed in the example/ app. The main C++ testing hybrid object is exported;

import { HybridTestObjectCpp } from 'react-native-nitro-test'

const result = HybridTestObjectCpp.addNumbers(5, 7)

NitroTest also contains a platform specific hybrid test object (HybridTestObjectSwiftKotlin), and a platform specific hybrid view (HybridTestView).

Contributing

When any of the HybridObjects specs (*.nitro.ts) change, you must re-run nitrogen:

npx nitrogen

Structure

  • android/: All your android-specific implementations. (HybridTestObjectSwiftKotlin.kt)
    • build.gradle: The gradle build file. This contains four important pieces:
      1. Standard react-native library boilerplate code
      2. Configures Kotlin (apply plugin: 'org.jetbrains.kotlin.android')
      3. Adds all Nitrogen files (apply from: '.../NitroTest+autolinking.gradle')
      4. Triggers the native C++ build (via CMake/externalNativeBuild)
    • CMakeLists.txt: The CMake build file to build C++ code. This contains four important pieces:
      1. Creates a library called NitroTest (same as in nitro.json)
      2. Adds all Nitrogen files (include(.../NitroTest+autolinking.cmake))
      3. Adds all custom C++ files (only HybridTestObjectCpp.cpp)
      4. Adds a cpp-adapter.cpp file, which autolinks all C++ HybridObjects (only HybridTestObjectCpp)
    • src/main/java/com/margelo/nitro/test/: All Kotlin implementations.
      • NitroTestPackage.kt: The react-native package. You need this because the react-native CLI only adds libraries if they have a *Package.kt file. In here, you can autolink all Kotlin HybridObjects (TestObjectSwiftKotlin)
  • cpp/: All your cross-platform implementations. (only HybridTestObjectCpp.cpp)
  • ios/: All your iOS-specific implementations. (HybridTestObjectSwiftKotlin.swift and HybridTestView.swift)
  • nitrogen/: All files generated by nitrogen. You should commit this folder to git.
  • src/: The TypeScript codebase. This defines all HybridObjects and loads them at runtime.
    • specs/: All HybridObject types. Nitrogen will run on all *.nitro.ts files.
  • nitro.json: The configuration file for nitrogen. This will define all native namespaces, as well as the library name.
  • NitroTest.podspec: The iOS podspec build file to build the iOS code. This contains three important pieces:
    1. Specifies the Pod's name. This must be identical to the name specified in nitro.json.
    2. Adds all of your .swift or .cpp files (implementations).
    3. Adds all Nitrogen files (add_nitrogen_files(s))
  • package.json: The npm package.json file. react-native-nitro-modules should be a peerDependency.