Use react-native-get-random-values instead
import { randomBytes } from 'react-native-randombytes' // synchronous API // uses SJCL const rand = randomBytes(4) // asynchronous API // uses iOS-side SecRandomCopyBytes randomBytes(4, (err, bytes) => { // bytes is a Buffer object console.log(bytes.toString('hex')) })
Follow the steps in the next section
You have two options depending on your needs:
Buffer objects, you can do the following:import { NativeModules } from 'react-native' const { RNRandomBytes } = NativeModules RNRandomBytes.randomBytes(32, (err, bytes) => { // bytes is a base64string })
react-native link
If Automatic installation failed you, dry your tears and read on.
Drag RNRandomBytes.xcodeproj from node_modules/react-native-randombytes into your XCode project.
Click on the project in XCode, go to Build Phases, then Link Binary With Libraries and add libRNRandomBytes.a
Confused? See an example with screenshots here
// file: android/settings.gradle ... include ':randombytes', ':app' project(':randombytes').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-randombytes/android')
// file: android/app/build.gradle ... dependencies { ... compile project(':randombytes') }
... import com.bitgo.randombytes.RandomBytesPackage // import public class MainActivity extends Activity implements DefaultHardwareBackBtnHandler { private ReactInstanceManager mReactInstanceManager; private ReactRootView mReactRootView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mReactRootView = new ReactRootView(this); mReactInstanceManager = ReactInstanceManager.builder() .setApplication(getApplication()) .setBundleAssetName("index.android.bundle") .setJSMainModuleName("index.android") .addPackage(new MainReactPackage()) .addPackage(new RandomBytesPackage()) // register package here .setUseDeveloperSupport(BuildConfig.DEBUG) .setInitialLifecycleState(LifecycleState.RESUMED) .build(); mReactRootView.startReactApplication(mReactInstanceManager, "AwesomeProject", null); setContentView(mReactRootView); } ...
react-native link react-native-randombytes
Depending on your project versions and the state of RN-Windows this may not always work. If it does not, a manual installation guide can be found here:
https://github.com/Microsoft/react-native-windows/blob/master/docs/LinkingLibrariesWindows.md