Installation
This document is split into two main sections:
- Required installation steps for basic usage of
react-native-camera - Additional installation steps for usage of Face Detection/Text Recognition/BarCode with MLKit
Required installation steps
These steps assume installation for iOS/Android. To install it with Windows, see Windows below
Mostly automatic install with autolinking (RN > 0.60)
npm install react-native-camera --save- Run
cd ios && pod install && cd ..
Mostly automatic install with react-native link (RN < 0.60)
npm install react-native-camera --savereact-native link react-native-camera
Manual install - iOS (not recommended)
npm install react-native-camera --save- In XCode, in the project navigator, right click
Libraries➜Add Files to [your project's name] - Go to
node_modules➜react-native-cameraand addRNCamera.xcodeproj - Expand the
RNCamera.xcodeproj➜Productsfolder - In XCode, in the project navigator, select your project. Add
libRNCamera.ato your project'sBuild Phases➜Link Binary With Libraries - Click
RNCamera.xcodeprojin the project navigator and go theBuild Settingstab. Make sure 'All' is toggled on (instead of 'Basic'). In theSearch Pathssection, look forHeader Search Pathsand make sure it contains both$(SRCROOT)/../../react-native/Reactand$(SRCROOT)/../../../React- mark both asrecursive.
Manual install - Android (not recommended)
npm install react-native-camera --save- Open up
android/app/src/main/java/[...]/MainApplication.java
- Add
import org.reactnative.camera.RNCameraPackage;to the imports at the top of the file - Add
new RNCameraPackage()to the list returned by thegetPackages()method. Add a comma to the previous item if there's already something there.
- Append the following lines to
android/settings.gradle:
include ':react-native-camera'
project(':react-native-camera').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-camera/android')
- Insert the following lines in
android/app/build.gradleinside the dependencies block:
implementation project(':react-native-camera')
iOS - other required steps
Add permissions with usage descriptions to your app Info.plist:
<!-- Required with iOS 10 and higher -->
<key>NSCameraUsageDescription</key>
<string>Your message to user when the camera is accessed for the first time</string>
<!-- Required with iOS 11 and higher: include this only if you are planning to use the camera roll -->
<key>NSPhotoLibraryAddUsageDescription</key>
<string>Your message to user when the photo library is accessed for the first time</string>
<!-- Include this only if you are planning to use the camera roll -->
<key>NSPhotoLibraryUsageDescription</key>
<string>Your message to user when the photo library is accessed for the first time</string>
<!-- Include this only if you are planning to use the microphone for video recording -->
<key>NSMicrophoneUsageDescription</key>
<string>Your message to user when the microphone is accessed for the first time</string>
Additional information in case of problems
You might need to adjust your Podfile following the example below:
target 'yourTargetName' do
# See http://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
pod 'React', :path => '../node_modules/react-native', :subspecs => [
'Core',
'CxxBridge', # Include this for RN >= 0.47
'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText',
'RCTNetwork',
'RCTWebSocket', # Needed for debugging
'RCTAnimation', # Needed for FlatList and animations running on native UI thread
# Add any other subspecs you want to use in your project
]
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link
pod 'react-native-camera', path: '../node_modules/react-native-camera'
end
post_install do |installer|
installer.pods_project.targets.each do |target|
if target.name == "React"
target.remove_from_project
end
end
end
Android - other required steps
Add permissions to your app android/app/src/main/AndroidManifest.xml file:
<!-- Required -->
<uses-permission android:name="android.permission.CAMERA" />
<!-- Include this only if you are planning to use the camera roll -->
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Include this only if you are planning to use the microphone for video recording -->
<uses-permission android:name="android.permission.RECORD_AUDIO"/>
Insert the following lines in android/app/build.gradle:
android {
...
defaultConfig {
...
missingDimensionStrategy 'react-native-camera', 'general' // <--- insert this line
}
}
Additional information in case of problems
Make sure you use
JDK >= 1.7and yourbuildToolsVersion >= 25.0.2Make sure you have jitpack added in
android/build.gradle
allprojects {
repositories {
maven { url "https://www.jitpack.io" }
maven { url "https://maven.google.com" }
}
}
Additional installation steps
Follow these optional steps if you want to use Face Detection/Text Recognition/BarCode with MLKit.
iOS
If you want any of these optional features, you will need to use CocoaPods.
MLKit for iOS runs on arm64/x86_64 devices only; armv7/x86 is not supported
Modifying Podfile
Add dependency towards react-native-camera in your Podfile with subspecs using one of the following:
- For Face Detection:
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'FaceDetectorMLKit'
]
- For Text Recognition:
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'TextDetector'
]
- For BarCode Recognition:
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'BarcodeDetectorMLKit'
]
- For all possible detections:
pod 'react-native-camera', path: '../node_modules/react-native-camera', subspecs: [
'TextDetector',
'FaceDetectorMLKit',
'BarcodeDetectorMLKit'
]
Then run cd ios && pod install && cd ..
Additional information in case of problems
- If you see build errors like
ld: symbol(s) not found for architecture armv7you will need to exclude armv7 arch in your Xcode (Xcode -> Build Setting -> Excluded Architectures -> Add 'armv7' for 'Any iOS SDK' ).
Android
Modifying build.gradle
Modify the following lines in android/app/build.gradle:
android {
...
defaultConfig {
...
missingDimensionStrategy 'react-native-camera', 'mlkit' // <--- replace general with mlkit
}
}
Setting up MLKit
If you don't use any other Firebase component in your project
- Add the folowing to project level
build.gradle:
buildscript {
dependencies {
// Add this line
classpath 'com.google.android.gms:strict-version-matcher-plugin:1.2.1' // <--- you might want to use different version
}
}
- add to the bottom of
android/app/build.gradlefile
apply plugin: 'com.google.android.gms.strict-version-matcher-plugin'
If you have Firebase integrated already
- Add the folowing to project level
build.gradle:
buildscript {
dependencies {
// Add this line
classpath 'com.google.gms:google-services:4.3.3' // Google Services plugin(you might want to use different version)
}
}
- add to the bottom of
android/app/build.gradlefile
apply plugin: 'com.google.gms.google-services' // Google Services plugin
Additional information in case of problems
The current Android library defaults to the below values for the Google SDK and Libraries,
def DEFAULT_COMPILE_SDK_VERSION = 29
def DEFAULT_BUILD_TOOLS_VERSION = "29.0.2"
def DEFAULT_TARGET_SDK_VERSION = 29
def DEFAULT_SUPPORT_LIBRARY_VERSION = "27.1.0"
You can override this settings by adding a Project-wide gradle configuration properties for
use by all modules in your ReactNative project by adding the below to android/build.gradle
file,
buildscript {...}
allprojects {...}
/**
* Project-wide gradle configuration properties for use by all modules
*/
ext {
compileSdkVersion = 29
targetSdkVersion = 29
buildToolsVersion = "29.0.2"
supportLibVersion = "27.1.0"
}
The above settings in the ReactNative project over-rides the values present in the react-native-camera
module. For your reference please check android/build.gradle file of the module.
Windows
Mostly automatic install with autolinking (RNW >= 0.63)
npm install react-native-camera --save- See Additional steps - Windows below
Manual install - Windows (RNW 0.62)
npm install react-native-camera --save- Link the library as described below:
- Add the ReactNativeCameraCPP project to your solution (eg.
windows\yourapp.sln)- Open your solution in Visual Studio 2019
- Right-click Solution icon in Solution Explorer > Add > Existing Project...
- Select
node_modules\react-native-camera\windows\ReactNativeCameraCPP\ReactNativeCameraCPP.vcxproj
- Add a reference to ReactNativeCameraCPP to your main application project (eg.
windows\yourapp\yourapp.vcxproj)- Open your solution in Visual Studio 2019
- Right-click main application project > Add > Reference...
- Check ReactNativeCameraCPP from Solution Projects
- Add the ReactNativeCameraCPP project to your solution (eg.
- Modify files below to add the package providers to your main application project
pch.h- Add
#include "winrt/ReactNativeCameraCPP.h"
- Add
App.cpp- Add
PackageProviders().Append(winrt::ReactNativeCameraCPP::ReactPackageProvider());beforeInitializeComponent();
- Add
- See Additional steps - Windows below
Manual install - Windows (RNW 0.61)
Follow Manual install - Windows (RNW 0.62) above, but for step 2 substitute ReactNativeCameraCPP61 for ReactNativeCameraCPP.
Additional steps - Windows
You need to declare that your app wants to access the camera:
- Add the capabilities (permissions) for the webcam and microphone as described here: Add capability declarations to the app manifest
- If you plan on capturing images to the Pictures Library, or videos to the Videos Library, be sure to enable those capabilities too
Follow the Q & A section if you are having compilation issues.
