react-native-nitro-bip39
Version:
A template for Nitro Modules.
39 lines (31 loc) • 2.6 kB
Markdown
# react-native-nitro-template
This is a template for Nitro Modules.
## Usage
Clone this repo, and change all `<<*>>` names according to your `nitro.json` file.
## Contributing
Contribute a change to this template to update it for newer React Native versions.
## Structure
- [`android/`](android): All your `android`-specific implementations.
- [`build.gradle`](android/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: '.../Bip39+autolinking.gradle'`)
4. Triggers the native C++ build (via CMake/`externalNativeBuild`)
- [`CMakeLists.txt`](android/CMakeLists.txt): The CMake build file to build C++ code. This contains four important pieces:
1. Creates a library called `Bip39` (same as in `nitro.json`)
2. Adds all Nitrogen files (`include(.../Bip39+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/bip39/`](android/src/main/java/com/margelo/nitro/bip39/): All Kotlin implementations.
- [`Bip39Package.java`](android/src/main/java/com/margelo/nitro/bip39/Bip39Package.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.
- [`cpp/`](cpp): All your cross-platform implementations. (only `HybridTestObjectCpp.cpp`)
- [`ios/`](ios): All your iOS-specific implementations.
- [`nitrogen/`](nitrogen): All files generated by nitrogen. You should commit this folder to git.
- [`src/`](src): The TypeScript codebase. This defines all HybridObjects and loads them at runtime.
- [`specs/`](src/specs): All HybridObject types. Nitrogen will run on all `*.nitro.ts` files.
- [`nitro.json`](nitro.json): The configuration file for nitrogen. This will define all native namespaces, as well as the library name.
- [`Bip39.podspec`](Bip39.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`](package.json): The npm package.json file. `react-native-nitro-modules` should be a `peerDependency`.