A multicurrency mobile wallet for Bitcoin, Bitcoin Cash, Ethereum, Dash, Litecoin, Ripple/XRP and Monero
Edge Wallet is:
- simple
- secure
- private
- decentralized
- multi-currency
- cross-platform
- mobile first
- open source
Edge is known to build with this exact tool set. Updated versions of these toolsets may break the build or app. If you have issues, try mirroring these exact versions.
- MacOS High Sierra 10.13.3
- Xcode 10.1
- Android Studio 3.1.3
- CocoaPods 1.5.3
- Android NDK r15c This is a must have. Version r17 is known to break native code builds
- NodeJS 10.15.1
- NPM 6.4.1
- Yarn 1.10.1
- Java 1.8.0_152
https://nodejs.org/en/download/
https://yarnpkg.com
npm install -g react-native-cli
sudo gem install cocoapods
cd edge-react-gui
yarn
Open edge-react-gui/ios/edge.xcworkspace in Xcode
File -> Workspace Settings
Set `Build System` to `Legacy Build System`
*IMPORTANT* You must use version r15c to build. r17 and above break NDK build that this app requires. Download
the r15c NDK version here: https://developer.android.com/ndk/downloads/older_releases
(MacOS) If the NDK is already installed from Android Studio, it should be in `/Users/[user]/Library/Android/sdk/ndk-bundle`.
If you are using a version other than r15c, replace your version with version r15c downloaded from above
export ANDROID_NDK_HOME=/Users/[username]/Library/Android/sdk/ndk-bundle
export NDK_HOME=/Users/[username]/Library/Android/sdk/ndk-bundle
export SDK_HOME=/Users/[username]/Library/Android/sdk
export JAVA_HOME="/Applications/Android Studio.app/Contents/jre/jdk/Contents/Home"
For best results, please consider using the following versions (up-to-date as of 2018-05-11)
- Java & Jave JDK version 8u171
A public API key is built into the edge-core-js which can be used to build and test the Edge app. This key is severely rate limited and should not be used for production. For production use, get an API key by emailing [email protected].
Copy the env.example.json
to env.json
and change the AIRBITZ_API_KEY
to the API key you received from Edge. To use the public API key, leave AIRBITZ_API_KEY
blank.
- Open
edge-react-gui/ios/edge.xcworkspace
in Xcode - Choose a target device or simulator and tap the Play button on the top nav bar
cd android
./gradlew assembleDebug
- The resulting APK will be in
./app/build/outputs/apk/debug/app-debug.apk
- Copy the APK to a simulator like Genymotion or a real device via Email or messaging app
- Open
edge-react-gui/ios/edge.xcworkspace
in Xcode - Hold [ option/alt ] and click on the Edge button on the top bar to the right of the Play and Stop icons.
- Change 'Build Configuration' to Release
- Uncheck 'Debug Executable'
- Close window
- Choose a device and hit Play
cd android
./gradlew assembleRelease
- The resulting APK will be in
./app/build/outputs/apk/release/app-release.apk
- Copy the APK to a simulator like Genymotion or a real device via Email or messaging app
The included deploy.js
is a script to automate building, signing, and deploying release builds of Edge. It provides
the following:
- Auto set app version number based on
package.json
version - Auto increment and set the buildnum to the value of YYMMDDNN where NN is an auto-incrementing build number within a day
- Auto sign Android APK with Android keystore files
- Auto sign iOS IPA with provisioning profiles
- Set the env var KEYCHAIN_PASSWORD to the keychain password of the current user
- Copy the
deploy-config.sample.json
todeploy-config.json
and edit the parameters accordingly. You'll need a HockeyApp account to get ids and keys - Put any Android keystore files into
edge-react-gui/keystores/
- If using Firebase, put your account's
google-services.json
andGoogleService-Info.plist
intoedge-react-gui/
- Install xcpretty
sudo gem install xcpretty
Run deploy
./deploy.js edge ios master
./deploy.js edge android master
For debugging, we recommend using React Native Debugger
brew update && brew cask install react-native-debugger
⌘ + d (command + d)
Select "Debug JS Remotely"
https://github.com/jhen0409/react-native-debugger/releases
⌘ + m (command + m)
Select "Debug JS Remotely"
Please follow the coding conventions defined in Edge Conventions