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 神奇豆

BSD-3-Clause

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 仓库

  1. Tari
  2. Wallet-Android
  3. Wallet-iOS

之后,在 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

需要对该文件进行以下更改

  1. NDK_PATH 需要更改为 Android NDK Bundle 目录。
  2. ANDROID_WALLET 需要更改为 Android-Wallet 仓库的路径
  3. IOS_WALLET_PATH 需要更改为 Wallet-iOS 仓库的路径
  4. CARGO_CLEAN 如果设置为 1,则在构建之前将运行 cargo clean 命令
  5. TARI_REPO_PATH 需要更改为 Tari 仓库的路径(可选 - 默认为当前仓库)
  6. BUILD_ANDROID 可以设置为 0 以禁用 Android 库构建
  7. BUILD_IOS 可以设置为 0 以禁用 iOS 库构建
  8. 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