App Store: https://apps.apple.com/app/zingo/id1668209531
Google Play: https://play.google.com/store/apps/details?id=org.ZingoLabs.Zingo
If you believe you have discovered a security issue, please contact us at:
zingodisclosure@proton.me
rustup target add aarch64-apple-ios aarch64-apple-ios-sim
)cargo install cargo-lipo
)sudo gem install cocoapods
)cd zingo-mobile
.rust/ios
directory, run: ./build.sh
yarn
ios
directory, run: pod install
cd zingo-mobile
.rust/ios
directory, run: ./buildsimulator.sh
yarn
ios
directory, run: pod install
yarn start
yarn ios
ios
directory in XCode and run it there.Yarn
NodeJS (recommended version 17+)
Docker (Docker Engine)
OpenJDK 18 (https://jdk.java.net/archive/)
Android SDK Command-line Tools
Install via Android Studio SDK Manager:
https://developer.android.com/studio/install
or as standalone:
https://developer.android.com/tools
Cargo nextest (https://nexte.st/book/installing-from-source.html)
The React Native tools require some environment variables to be set up in order to build apps with
native code.
Add the following lines to your $HOME/.bash_profile
or $HOME/.profile
config file:
PATH="$PATH:$ANDROID_HOME/cmdline-tools/latest/bin"
PATH="$PATH:$ANDROID_HOME/platform-tools"
PATH="$PATH:$ANDROID_HOME/emulator"
Add the following lines to your $HOME/.bashrc
config file:
export ANDROID_SDK_ROOT="$HOME/Android/Sdk"
Also, make sure your JAVA_HOME is set, for example:
export JAVA_HOME="/usr/lib/jvm/jdk-18.0.2"
cd zingo-mobile
.rust
directory, run: ./build.sh
yarn
File > Settings
, navigate to Build, Execution and Deployment > Build Tools > Gradle
and
check the Gradle JDK
matches your JDK version.yarn start
android
directory in Android Studio as a project, select 'app' and the previously
created AVD in the upper toolbar and click the "Run 'app'" button.
Alternatively, launch an AVD and in a separate terminal, run: yarn android
You can also emulate android from the command line without using Android Studio.
$ANDROID_HOME/cmdline-tools/latest/bin
scripts/start_interactive.sh -a x86
android/app/build/outputs/emulator_output
Integration tests and end-to-end tests require a regtest server. On linux hosts, these may be run
locally by installing the lightwalletd, zcashd and zcash-cli binaries
(https://github.com/zingolabs/zingolib#regtest). From the rust/android/regtest/bin/
directory run:
ln -s path/to/lightwalletd/binary path/to/zcashd/binary path/to/zcash-cli/binary ./
From the rust/android/lightwalletd_bin
directory run:
ln -s path/to/lightwalletd/binary ./
Alternatively, integration tests and end-to-end tests can be run on non-linux hosts with Regchest
(https://github.com/zingolabs/zingo-regchest). Regchest manages the zcash/lightwalletd regtest
network in a docker container. Before running tests, pull the latest Regchest image from docker:
docker pull zingodevops/regchest:008
yarn test
./scripts/integration_tests.sh -a x86_64 -s
./scripts/integration_tests.sh -a x86 -s
rust
directory, run: cargo nextest run integration
cargo nextest run integration::x86_64
cargo nextest run integration::x86_32
cargo nextest run integration::arm64
cargo nextest run integration::arm32
cargo nextest run test_name
cargo nextest run integration::x86_64::test_name
To run tests with Regchest, add the --features regchest
flag, for example:
cargo nextest run integration --features regchest
For more information on running integration tests on non-default AVDs, run:
./scripts/integration_tests.sh -h
Without the cargo test runner these emulated android devices will not be able to connect to a
lightwalletd/zcashd regtest network. Therefore, only tests in the "Offline Testsuite" may be tested.
Device Manager
.
Alternatively, connect to a physical device. See previous section 'Launching the app' for more
details.yarn start
./scripts/e2e_tests.sh -a x86_64 -s
./scripts/e2e_tests.sh -a x86 -s
rust
directory, run all tests: cargo nextest run e2e
Specify to run specific ABI: cargo nextest run e2e::x86_64
cargo nextest run e2e::x86_32
cargo nextest run e2e::arm64
cargo nextest run e2e::arm32
cargo nextest run e2e::x86_64::test_name
Regchest is still under development and currently not able to run darkside end-to-end tests:
cargo nextest run e2e --features regchest -E 'not test(darkside)'
For notes on known issues and problems, see the trouble-shooting notes.