Repository navigation
[MOO-2490] : Updated vision camera to v5 & used react-native-vision-camera-barcode-scanner for barcode scanning-Main - #681
Conversation
|
|
||
| const [cameraViewDimensions, setCameraViewDimensions] = useState<{ width: number; height: number } | null>(null); | ||
| // Timer that releases the lock, kept so it can be cleared when the widget unmounts | ||
| const lockTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null); |
There was a problem hiding this comment.
lockTimeoutRef is never assigned. The setTimeout(...) in onBarcodeScanned doesn't store its handle, so the unmount cleanup below never clears anything. Either assign it there (lockTimeoutRef.current = setTimeout(...)) or remove the ref and the effect.
There was a problem hiding this comment.
Done . Assigned lockTimeoutRef to SetTimeout.
|
Please check the failing GitHub Actions checks on this PR. |
…er-vision-camera-v5-library-migration-main
…er-vision-camera-v5-library-migration-main
…er-vision-camera-v5-library-migration-main
…er-vision-camera-v5-library-migration-main NATIVE_DEPENDENCY_APPROVED
|
Blocker: iOS simulator builds fail on Apple Silicon Macs
There is no arm64 iOS-simulator slice. Linking the arm64 slice for the arm64 simulator fails with:
Since most developers are on Apple Silicon, we can't proceed with the ML Kit-based barcode scanner on iOS in its current form. |
|
@YogendraShelke , I checked the concern, and it was indeed a blocker for anyone trying to build the app for an iOS simulator. While looking for a quick workaround, I found that we can patch ML Kit for iOS simulators as the barcode functionality will be tested on physical device only and maybe in the future vision camera versions they can have the slice for arm64 simulators as well . the patch removes arm64 from ML Kit's simulator exclusion list and it also creates simulator-only copies of the ML Kit frameworks, re-tagged for the arm64 simulator while device builds keep using the original binaries, so the app can be built for iOS simulators. Please have a look: https://github.com/mendix/native-template/pull/1344/changes I tested it locally, and the arm64 iOS simulator build succeeds. It also doesn't affect Android, Rosetta (x86_64) iOS simulator builds, or builds for physical iOS devices. Please let me know your thoughts. |
Checklist
[XX-000]: description)? ✅Feature specific
This PR contains
What is the purpose of this PR?
This PR updates the react native vision camera from v4 to v5. Also uses its aligned react-native-vision-camera-barcode-scanner library which is more advance and fixes the issue of scanning dense and patterned background QR codes.
Relevant Changes -
The barcode scanner now uses react-native-vision-camera-barcode-scanner, which brings in Google MLKit as prebuilt frameworks. MLKit's arm64 code is labelled for physical iPhones only, so the iOS e2e build fails at link time on our Apple Silicon CI runners, which build for an arm64 simulator: "building for 'iOS-simulator', but linking in object file ... built for 'iOS'". To fix this, the pipeline now runs scripts/test/patch-mlkit-arm64-simulator.js after pod install. The script changes the platform label on MLKit's arm64 object files from iOS to iOS simulator, which is safe because device and simulator arm64 code use the same instructions and only that label differs. xcodebuild also gets EXCLUDED_ARCHS="i386 x86_64" so Xcode builds the simulator app for arm64 only and never tries to link the unpatched x86_64 code. Without these changes the iOS app can't be built, so the iOS e2e tests can't run on this branch. The patch only touches the CI simulator build.