本文主要介绍“如何使用Bytom-Mobile-Wallet-SDK”。在日常操作中,相信很多人对于如何使用Bytom-Mobile-Wallet-SDK都有疑问。边肖查阅了各种资料,整理出简单易用的操作方法,希望能帮你解答“Bytom-Mobile-Wallet-SDK怎么用”的疑惑!接下来,请和边肖一起学习!
Bytom-Mobile-Wallet-SDK是从Bytom源代码中提取的钱包层代码,对钱包层代码进行了改造。Gomobile可用于将代码编译成安卓和iOS平台可用的SDK,编译后的安卓和iOS钱包SDK可用于在移动端创建bytom密钥、账户、地址和交易签名。
Bytom-Mobile-Wallet-SDK源码简介
sdk源代码放在项目的sdk文件夹中,android和ios文件夹是使用SDK的演示项目,在bind.go中可以用大写字母从外部调用的函数将作为Android和iOS调用的API。bytom创建的密钥对将存储在磁盘上的单独文件中,私钥将被加密。账号地址数据存储在go实现的leveldb中,所以安卓和iOS平台也需要提供数据存储的路径。
funcInitWallet(storagepath string){ 0
hsm:=伪hsm。新建(存储路径)
walletDB:=db。NewDB('wallet ',' leveldb ',storagePath)
accounts:=account。新经理(walletDB)
assets:=资产。新注册表(walletDB)
wallet:=aWallet。新钱包(walletDB、账户、资产、hsm)
api=aApi。API{Wallet:wallet}
}安卓和iOS平台在调用其他钱包API之前,需要先调用InitWallet API。该参数是磁盘上的绝对路径。InitWallet将初始化整个钱包,最重要的是初始化leveldb的存储。其他的CreateKey、CreateAccount、CreateAccountReceiver都是用于创建密钥、账户、地址等的API。RestoreWallet API可以备份钱包的所有账户地址资产,并导出json格式的数据。
Bytom-Mobile-Wallet-SDK的编译
SDK代码的编译首先需要正确安装golang和gomobile,golang需要1.7版或以上版本。
安卓平台需要安装JDK、安卓SDK和安卓NDK,安卓SDK的平台工具和ndk捆绑包需要添加到PATH系统环境变量中。iOS平台编译环境的配置比较简单,只需要安装Xcode即可。
将项目克隆到本地$GOPATH/src:
git clone https://github.com/Bytom-Community/Bytom-Mobile-Wallet-SDK $ GOPATH/src/github.com/Bytom-Community/Mobile
Android
gomobileinit-ndk ~/path/to/your/ndk
CD $ GOPATH/src/github.com/bytom-community/mobile
gomilebind-target=androidgithub.com/bytom-community/mobile/SDK/Add-ldflags=-s如果有必要减小SDK的大小,请将参数设置为gomobile bind指令:
gomilebind-target=Android-ldflags=-sgithub.com/bytom-community/mobile/SDK/执行指令后,将在mobile文件夹中生成wallet.aar和wallet-sources.jar文件。
iOS
CD $ GOPATH/src/github.com/bytom-community/mobile
gomobilebind-t
arget=ios github.com/bytom-community/mobile/sdk/
如果需要减小SDK的体积给gomobile bind指令加上-ldflags=-w参数:
$ gomobile bind -target=ios -ldflags=-w github.com/bytom-community/mobile/sdk/
执行指令后会在mobile文件夹生成wallet.framework文件。
由于gomobile现在没有支持bitcode,所以生成的iOS SDK也不支持bitcode。
Bytom-Mobile-Wallet-SDK的使用
Android
拷贝wallet.aar和wallet-sources.ja到Android项目的app的libs文件夹下,并在app module中的build.gradle文件中添加:
android { repositories { flatDir { dirs 'libs' } } } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation(name: 'wallet', ext: 'aar') }
sync project后可以在Android项目中对SDK的API进行调用:
package io.bytom.community; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.widget.TextView; import wallet.Wallet; public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); TextView keyTextView = (TextView) findViewById(R.id.key_textview); String storagePath = getFilesDir().toString(); Log.d("storagePath", storagePath); Wallet.initWallet(storagePath); String keyResult = Wallet.createKey("Marshall", "123456"); Log.d("keyResult", keyResult); keyTextView.setText(keyResult); } }
iOS
通过项目target的Linked frameworks and libraries把wallet.framework添加到项目,可以在iOS项目中对SDK的API进行调用:
#import "ViewController.h" #import "Wallet/Wallet.h" // Gomobile bind generated framework @interface ViewController () @end @implementation ViewController @synthesize textLabel; - (void)loadView { [super loadView]; NSString *docPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject]; WalletInitWallet(docPath); textLabel.text = WalletCreateKey(@"kevin",@"123456"); } @end
到此,关于“Bytom-Mobile-Wallet-SDK的使用方法是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/153661.html