bitpay / bitcore-lib

A pure and powerful JavaScript Bitcoin library
https://bitcore.io/
Other
611 stars 1.03k forks source link

Release APK crash immediately on launch - React Native ( Version 0.58.4) #287

Closed ank26oct closed 5 years ago

ank26oct commented 5 years ago

The android version runs perfectly in debug mode using android studio emulator. However, the release version of the apk crashes immediately when launched.

To Reproduce Steps to reproduce the behavior.

Reproducible Demo

react-native init Demo cd AwesomeProject

After this Just install following:

npm i --save react-native-crypto npm i bitcore-lib --save npm i --save react-native-randombytes react-native link react-native-randombytes npm i --save-dev tradle/rn-nodeify ./node_modules/.bin/rn-nodeify --hack --install

rn-nodeify will create a shim.js in the project root directory import './shim.js' file in aap.js

react-native run-android

It runs perfectly in debug mode. I have created signed apk it gets created without any error also installed without error but when i open, it crashes

Expected Behavior The app should run without crashing. App crashes on launch, logcat throws this error:

02-09 11:18:38.980 13627-13645/com.productionbuild E/ReactNativeJS: undefined is not a function (evaluating 'n.fill(255)') 02-09 11:18:38.995 13627-13645/com.productionbuild E/ReactNativeJS: Module AppRegistry is not a registered callable module (calling runApplication) 02-09 11:18:39.007 13627-13646/com.productionbuild E/AndroidRuntime: FATAL EXCEPTION: mqt_nativemodules Process: com.productionbuild, PID: 13627 com.facebook.react.common.JavascriptException: undefined is not a function (evaluating 'n.fill(255)'), stack: exports@527:162 @526:54 @2:1514 d@2:967 o@2:435 @525:59 @2:1514 d@2:967 o@2:435 @503:548 @2:1514 d@2:967 o@2:435 @355:242 @2:1514 d@2:967 o@2:435 @11:58 @2:1514 d@2:897 o@2:435 global code@566:4

at com.facebook.react.modules.core.ExceptionsManagerModule.showOrThrowError(ExceptionsManagerModule.java:54)
at com.facebook.react.modules.core.ExceptionsManagerModule.reportFatalException(ExceptionsManagerModule.java:38)
at java.lang.reflect.Method.invoke(Native Method)
at com.facebook.react.bridge.JavaMethodWrapper.invoke(JavaMethodWrapper.java:372)
at com.facebook.react.bridge.JavaModuleWrapper.invoke(JavaModuleWrapper.java:158)
at com.facebook.react.bridge.queue.NativeRunnable.run(Native Method)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at com.facebook.react.bridge.queue.MessageQueueThreadHandler.dispatchMessage(MessageQueueThreadHandler.java:29)
at android.os.Looper.loop(Looper.java:148)
at com.facebook.react.bridge.queue.MessageQueueThreadImpl$3.run(MessageQueueThreadImpl.java:192)
at java.lang.Thread.run(Thread.java:818)

Code Example import React, { Component } from "react"; import { Platform, StyleSheet, Text, View } from "react-native"; import "./shim.js"; import bitcoin from "bitcore-lib"; // import { Buffer } from "safe-buffer"; // var Buffer; // if (typeof global !== "undefined") { // var Buffer = require("safe-buffer/").Buffer; // global.Buffer = Buffer; // TODO just use global Buffer // }

type Props = {}; export default class App extends Component { constructor(props) { super(props); this.generateBitcoinKeys = this.generateBitcoinKeys.bind(this); }

generateBitcoinKeys() { var privateKey = new bitcoin.PrivateKey(bitcoin.Networks.testnet); var publicKey = privateKey.toPublicKey(); var address = publicKey.toAddress(bitcoin.Networks.testnet); return { Address: address.toString(), privateKey: privateKey.toString(), publicKey: publicKey.toString() }; } render() { var aa = this.generateBitcoinKeys(); return (

Welcome to React Native! bitcoin address: {aa.Address}

); } }

const styles = StyleSheet.create({ container: { flex: 1, justifyContent: "center", alignItems: "center", backgroundColor: "#F5FCFF" }, welcome: { fontSize: 20, textAlign: "center", margin: 10 }, instructions: { textAlign: "center", color: "#333333", marginBottom: 5 } });

Environment Platform: Android React Native Environment Info: System: Windows 10 CPU: x64 Intel(R) Core(TM) i5- CPU M 520 @ 2.40GHz 2.39 GHz

Binaries: Node : 8.11.3 npm: 6.4.1

IDEs: Android Studio: 3.2 AI-181.5540.7.32.5014246 VS Code: 1.31.0 npmPackages: react: 16.6.3 => 16.6.3 react-native: 0.58.4 => 0.58.4 npmGlobalPackages: react-native-cli: 2.0.1 react-native-git-upgrade: 0.2.7

ank26oct commented 5 years ago

I have resolved this issue by using JSC build scripts for Android. Thanks to jsc-android.