87e6bb710e
* Create android gradle build setup * Fix `prefab` config * Add `pickFirst **/*.so` to example build.gradle * fix REA path * cache gradle builds * Update validate-android.yml * Create Native Proxy * Copy REA header * implement ctor * Rename CameraViewModule -> FrameProcessorRuntimeManager * init FrameProcessorRuntimeManager * fix name * Update FrameProcessorRuntimeManager.h * format * Create AndroidErrorHandler.h * Initialize runtime and install JSI funcs * Update FrameProcessorRuntimeManager.cpp * Update CameraViewModule.kt * Make CameraView hybrid C++ class to find view & set frame processor * Update FrameProcessorRuntimeManager.cpp * pass function by rvalue * pass by const && * extract hermes and JSC REA * pass `FOR_HERMES` * correctly prepare JSC and Hermes * Update CMakeLists.txt * add missing hermes include * clean up imports * Create JImageProxy.h * pass ImageProxy to JNI as `jobject` * try use `JImageProxy` C++ wrapper type * Use `local_ref<JImageProxy>` * Create `JImageProxyHostObject` for JSI interop * debug call to frame processor * Unset frame processor * Fix CameraView native part not being registered * close image * use `jobject` instead of `JImageProxy` for now :( * fix hermes build error * Set enable FP callback * fix JNI call * Update CameraView.cpp * Get Format * Create plugin abstract * Make `FrameProcessorPlugin` a hybrid object * Register plugin CXX * Call `registerPlugin` * Catch * remove JSI * Create sample QR code plugin * register plugins * Fix missing JNI binding * Add `mHybridData` * prefix name with two underscores (`__`) * Update CameraPage.tsx * wrap `ImageProxy` in host object * Use `jobject` for HO box * Update JImageProxy.h * reinterpret jobject * Try using `JImageProxy` instead of `jobject` * Update JImageProxy.h * get bytes per row and plane count * Update CameraView.cpp * Return base * add some docs and JNI JSI conversion * indent * Convert JSI value to JNI jobject * using namespace facebook * Try using class * Use plain old Object[] * Try convert JNI -> JSI * fix decl * fix bool init * Correctly link folly * Update CMakeLists.txt * Convert Map to Object * Use folly for Map and Array * Return `alias_ref<jobject>` instead of raw `jobject` * fix JNI <-> JSI conversion * Update JSIJNIConversion.cpp * Log parameters * fix params index offset * add more test cases * Update FRAME_PROCESSORS_CREATE_OVERVIEW.mdx * fix types * Rename to example plugin * remove support for hashmap * Try use HashMap iterable fbjni binding * try using JReadableArray/JReadableMap * Fix list return values * Update JSIJNIConversion.cpp * Update JSIJNIConversion.cpp * (iOS) Rename ObjC QR Code Plugin to Example Plugin * Rename Swift plugin QR -> Example * Update ExamplePluginSwift.swift * Fix Map/Dictionary logging format * Update ExampleFrameProcessorPlugin.m * Reconfigure session if frame processor changed * Handle use-cases via `maxUseCasesCount` * Don't crash app on `configureSession` error * Document "use-cases" * Update DEVICES.mdx * fix merge * Make `const &` * iOS: Automatically enable `video` if a `frameProcessor` is set * Update CameraView.cpp * fix docs * Automatically fallback to snapshot capture if `supportsParallelVideoProcessing` is false. * Fix lookup * Update CameraView.kt * Implement `frameProcessorFps` * Finalize Frame Processor Plugin Hybrid * Update CameraViewModule.kt * Support `flash` on `takeSnapshot()` * Update docs * Add docs * Update CameraPage.tsx * Attribute NonNull * remove unused imports * Add Android docs for Frame Processors * Make JNI HashMap <-> JSI Object conversion faster directly access `toHashMap` instead of going through java * add todo * Always run `prepareJSC` and `prepareHermes` * switch jsc and hermes * Specify ndkVersion `21.4.7075529` * Update gradle.properties * Update gradle.properties * Create .aar * Correctly prepare android package * Update package.json * Update package.json * remove `prefab` build feature * split * Add docs for registering the FP plugin * Add step for dep * Update CaptureButton.tsx * Move to `reanimated-headers/` * Exclude reanimated-headers from cpplint * disable `build/include_order` rule * cpplint fixes * perf: Make `JSIJNIConversion` a `namespace` instead of `class` * Ignore runtime/references for `convert` funcs * Build Android .aar in CI * Run android build script only on `prepack` * Update package.json * Update package.json * Update build-android-npm-package.sh * Move to `yarn build` * Also install node_modules in example step * Update validate-android.yml * sort imports * fix torch * Run ImageAnalysis on `FrameProcessorThread` * Update Errors.kt * Add clean android script * Upgrade reanimated to 2.3.0-alpha.1 * Revert "Upgrade reanimated to 2.3.0-alpha.1" This reverts commit c1d3bed5e03728d0b5e335a359524ff4f56f5035. * ⚠️ TEMP FIX: hotfix reanimated build.gradle * Update CameraView+TakeSnapshot.kt * ⚠️ TEMP FIX: Disable ktlint action for now * Update clean.sh * Set max heap size to 4g * rebuild lockfiles * Update Podfile.lock * rename * Build lib .aar before example/
92 lines
2.4 KiB
Markdown
92 lines
2.4 KiB
Markdown
# Contributing
|
||
|
||
## Guidelines
|
||
|
||
1. Don't be rude.
|
||
|
||
## Get started
|
||
|
||
1. Fork & clone the repository
|
||
2. Install dependencies
|
||
```
|
||
cd react-native-vision-camera
|
||
yarn bootstrap
|
||
```
|
||
|
||
Read the READMEs in [`android/`](android/README.md), [`ios/`](ios/README.md), and [`cpp/`](cpp/README.md) for a quick overview of the development workflow.
|
||
|
||
> You can also open VisionCamera in [a quick online editor (github1s)](https://github1s.com/mrousavy/react-native-vision-camera)
|
||
|
||
### iOS
|
||
|
||
1. Open the `example/ios/VisionCameraExample.xcworkspace` file with Xcode
|
||
2. Change signing configuration to your developer account
|
||
3. Select your device in the devices drop-down
|
||
4. Hit run
|
||
|
||
> Run `yarn check-ios` to validate codestyle
|
||
|
||
### Android
|
||
|
||
1. Open the `example/android/` folder with Android Studio
|
||
2. Select your device in the devices drop-down
|
||
3. Hit run
|
||
|
||
> Run `yarn check-android` to validate codestyle
|
||
|
||
### C++
|
||
|
||
The C++ codebase is shared between Android and iOS. This means you can make changes to those files in either the Android example or the iOS example, but make sure to test changes on both platforms.
|
||
|
||
> Run `yarn check-cpp` to validate codestyle
|
||
|
||
## Committing
|
||
|
||
We love to keep our codebases clean. To achieve that, we use linters and formatters which output errors when something isn't formatted the way we like it to be.
|
||
|
||
Before pushing your changes, you can verify that everything is still correctly formatted by running all linters:
|
||
|
||
```
|
||
yarn check-all
|
||
```
|
||
|
||
This validates Swift, Kotlin, C++ and JS/TS code:
|
||
|
||
```bash
|
||
$ yarn check-all
|
||
yarn run v1.22.10
|
||
Formatting Swift code..
|
||
Linting Swift code..
|
||
Linting Kotlin code..
|
||
Linting JS/TS code..
|
||
All done!
|
||
✨ Done in 8.05s.
|
||
```
|
||
|
||
To actually build the library, run the `build` script:
|
||
|
||
```
|
||
yarn build
|
||
```
|
||
|
||
This builds the JS Module, TypeScript definitions, as well as the Hermes and JSC .aar libraries:
|
||
|
||
```
|
||
$ yarn build
|
||
yarn run v1.22.10
|
||
ℹ Building target commonjs
|
||
ℹ Cleaning up previous build at lib/commonjs
|
||
ℹ Compiling 18 files in src with babel
|
||
✔ Wrote files to lib/commonjs
|
||
ℹ Building target module
|
||
ℹ Cleaning up previous build at lib/module
|
||
ℹ Compiling 18 files in src with babel
|
||
✔ Wrote files to lib/module
|
||
ℹ Building target typescript
|
||
ℹ Cleaning up previous build at lib/typescript
|
||
ℹ Generating type definitions with tsc
|
||
✔ Wrote definition files to lib/typescript
|
||
Building VisionCamera for JS Engine hermes...
|
||
...
|
||
```
|