callstack / callstack/react-native-builder-bob
The C++ Turbo Module template uses a Kotlin implementation on Android
- Lenguaje dominante
- JavaScript
- Estrellas
- 3.2k
- Forks
- 228
- Merge medio
- 7 d 12 h
- PR fusionados (30 d)
- 3
Descripción
### Description
I'm not sure if I'm missing something obvious but when creating the library template for a Turbo Module using C++ for Android & iOS there is a default example implementing a `multiply` function. However, on Android the implementation for this function is in Kotlin and it doesn't use the shared C++ library.
When the JS code calls `multiply` it comes into the code [here](https://github.com/callstack/react-native-builder-bob/blob/main/packages/create-react-native-library/templates/kotlin-library-new/android/src/main/java/com/%7B%25-%20project.package_dir%20%25%7D/%7B%25-%20project.name%20%25%7DModule.kt#L17).
Is there any reason why the `OnLoad.cpp` file isn't used to register the turbo module in this case as described here: [pure-cxx-modules#android](https://reactnative.dev/docs/the-new-architecture/pure-cxx-modules#android)
### Packages
- [x] create-react-native-library
- [ ] react-native-builder-bob
### Selected options
1. `npx create-react-native-library cppLibraryTest`
2. ? What is the name of the npm package? › cpp-lib-test
3. ? What type of library do you want to develop? › Turbo Module
4. ? Which languages do you want to use? › C++ for Android & iOS
### Link to repro
N/A
### Environment
```
System:
OS: macOS 15.0.1
CPU: (11) arm64 Apple M3 Pro
Memory: 90.06 MB / 18.00 GB
Shell:
version: "5.9"
path: /bin/zsh
Binaries:
Node:
version: 23.7.0
path: /opt/homebrew/bin/node
Yarn:
version: 3.6.1
path: /opt/homebrew/bin/yarn
npm:
version: 11.2.0
path: /opt/homebrew/bin/npm
Watchman:
version: 2025.02.17.00
path: /opt/homebrew/bin/watchman
Managers:
CocoaPods:
version: 1.16.2
path: /opt/homebrew/opt/ruby/bin/pod
```
Guía de contribución
Línea de trabajo
Comienza comparando los archivos Android generados `OnLoad.cpp` y `android/src/main/java/...Module.kt` en la plantilla `kotlin-library-new`, y después lee la guía enlazada de React Native sobre pure-C++ para Android. Verifica cómo se registra la llamada generada a `multiply` e identifica el cambio necesario en la plantilla para que la implementación de Android use el módulo C++ compartido.
Escrito por el modelo de indexación a partir del texto del issue.
Evaluación
- Stack tecnológico
- cpp, kotlin, react-native
- Área
- mobile, tooling
- Tipo de issue
- Error
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Estado de actividad
- Estancado
- Claridad
- Bastante claro
- Aptitud para principiantes
- 35/100