9个不稳定版本 (3个破坏性更新)
0.16.15 | 2021年2月3日 |
---|---|
0.16.2 | 2020年8月20日 |
0.2.3 | 2020年8月18日 |
0.2.0 | 2020年7月15日 |
0.0.10 | 2020年3月30日 |
#2758 in 神奇豆
330KB
6K SLoC
Tari Wallet FFI
为Tari Android和Tari iOS钱包的外部函数接口。
此crate是Tari加密货币项目的一部分。
构建设置(Mac)
Homebrew
安装Brew
/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
运行以下命令安装所需的瓶子
brew install pkgconfig
brew install git
brew install make
brew install cmake
brew install autoconf
brew install automake
brew install libtool
brew install [email protected]
iOS依赖项
安装XCode,然后使用以下命令安装XCode命令行工具
xcode-select --install
对于macOS Mojave,需要安装额外的头文件,运行
open /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg
并按照提示操作。
对于Catalina,如果您遇到如下编译错误
xcrun: error: SDK "iphoneos" cannot be located
xcrun: error: unable to lookup item 'Path' in SDK 'iphoneos'
使用以下命令切换XCode应用程序默认值
sudo xcode-select --switch /Applications/Xcode.app
注意:如果此命令失败,则XCode未找到,需要安装/重新安装。
对于Big Sur,目前似乎只有thin libraries的openssl通过brew分发(而不是fat ones),如果在日志中遇到链接器错误
git clone https://github.com/StriderDM/OpenSSL-for-iPhone.git
cd OpenSSL-for-iPhone
git checkout shared_lib_and_mobile_optimizations
./build-libssl.sh --version=1.1.1h
在脚本完成构建库后,复制以下内容
./bin/iPhoneOS14.3-arm64.sdk/lib/libcrypto.1.1.dylib
./bin/iPhoneOS14.3-arm64.sdk/lib/libcrypto.dylib
./bin/iPhoneOS14.3-arm64.sdk/lib/libssl.1.1.dylib
./bin/iPhoneOS14.3-arm64.sdk/lib/libssl.dylib
到
~/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/aarch64-apple-ios/lib
以及以下内容
./bin/iPhoneSimulator14.3-x86_64.sdk/lib/libcrypto.1.1.dylib
./bin/iPhoneSimulator14.3-x86_64.sdk/lib/libcrypto.dylib
./bin/iPhoneSimulator14.3-x86_64.sdk/lib/libssl.1.1.dylib
./bin/iPhoneSimulator14.3-x86_64.sdk/lib/libssl.dylib
到
~/.rustup/toolchains/nightly-x86_64-apple-darwin/lib/rustlib/x86_64-apple-ios/lib
注意:这只是为了在库构建过程中(在尝试将其包含在iOS钱包之前)解决链接器问题。此依赖项已经包含在iOS钱包构建的依赖项中。
Android依赖项
安装Android Studio,然后使用SDK Manager安装Android NDK以及您选择的SDK(推荐使用Android Q)。并非所有这些工具都是必需的,但在Rust/Android开发中会很有用
- LLDB
- NDK(并列)
- Android SDK 命令行工具(最新版)
- Android SDK 平台工具
- Android SDK 工具
- CMake
在设置 AVD(Android 虚拟设备)时请注意,需要使用 64 位镜像(x86_64),而不是 32 位镜像(x86)。这是为了在模拟器上运行带有这些库的应用程序。
或者,直接下载 Android NDK Bundle。
启用隐藏文件
运行以下命令以显示隐藏文件和文件夹
defaults write com.apple.finder AppleShowAllFiles -bool YES
killall Finder
代码
克隆以下 git 仓库
之后,在 Tari 仓库中执行以下操作
git submodule init
git config submodule.recurse true
git submodule update --recursive --remote
Rust
安装 Rust
安装以下工具和系统镜像
rustup toolchain add nightly-2020-01-08
rustup default nightly-2020-01-08
rustup component add rustfmt --toolchain nightly
rustup component add clippy
rustup target add x86_64-apple-ios aarch64-apple-ios # iPhone and emulator cross compiling
rustup target add x86_64-linux-android aarch64-linux-android armv7-linux-androideabi # Android device cross compiling
构建配置
要配置构建,请先 cd
到 Tari 仓库,然后
cd base_layer/wallet_ffi
open build.sample.config
这将显示以下文件内容
BUILD_ANDROID=1
BUILD_IOS=1
CARGO_CLEAN=1
SQLITE_SOURCE=https://www.sqlite.org/snapshot/sqlite-snapshot-201911192122.tar.gz
NDK_PATH=$HOME/android-ndk-r20
PKG_PATH=/usr/local/opt/[email protected]/lib/pkgconfig
ANDROID_WALLET_PATH=$HOME/wallet-android
IOS_WALLET_PATH=$HOME/wallet-ios
TARI_REPO_PATH=$HOME/tari-main
需要对该文件进行以下更改
NDK_PATH
需要更改为 Android NDK Bundle 目录。ANDROID_WALLET
需要更改为 Android-Wallet 仓库的路径IOS_WALLET_PATH
需要更改为 Wallet-iOS 仓库的路径CARGO_CLEAN
如果设置为 1,则在构建之前将运行 cargo clean 命令TARI_REPO_PATH
需要更改为 Tari 仓库的路径(可选 - 默认为当前仓库)BUILD_ANDROID
可以设置为0
以禁用 Android 库构建BUILD_IOS
可以设置为0
以禁用 iOS 库构建PKG_PATH
需要更改为 OpenSSL 1.1 pkgconfig 路径(仅适用于 iOS 构建)
保存文件并重命名为 build.config
构建库
要构建库,请先 cd
到 Tari 仓库,然后
cd base_layer/wallet_ffi
sh mobile_build.sh
相关库将被构建并放置在 Wallet-iOS 和 Wallet-Android 仓库的相应目录中。
依赖项
~73MB
~1.5M SLoC