Skip to content

Latest commit

 

History

History
51 lines (40 loc) · 3.02 KB

File metadata and controls

51 lines (40 loc) · 3.02 KB

react-native-nitro-image

NitroImage is an example nitro module.

Usage

Nitro Image is installed in the example/ app. To load an Image, use the exported ImageConstructors:

import { ImageConstructors } from 'react-native-nitro-image'

const image = ImageConstructors.loadImageFromSystemName('heart.fill')

Nitro Image also contains a HybridTestObject, which can be used for playing around with HybridObjects and testing various features.

Contributing

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

npm run nitrogen

Structure

  • android/: All your android-specific implementations. (HybridImage.kt and HybridImageFactory.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: '.../NitroImage+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 NitroImage (same as in nitro.json)
      2. Adds all Nitrogen files (include(.../NitroImage+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/image/: All Kotlin implementations.
      • NitroImagePackage.java: The react-native package. You need this because the react-native CLI only adds libraries if they have a *Package.java file. In here, you can autolink all Kotlin HybridObjects (ImageFactory)
  • cpp/: All your cross-platform implementations. (only HybridTestObjectCpp.cpp)
  • ios/: All your iOS-specific implementations. (HybridImage.swift and HybridImageFactory.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.
  • NitroImage.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.