如何使用Bytom-Mobile-Wallet-SDK?

技术Bytom-Mobile-Wallet-SDK的使用方法是什么这篇文章主要介绍“Bytom-Mobile-Wallet-SDK的使用方法是什么”,在日常操作中,相信很多人在Bytom-Mobile-Wallet-SD

本文主要介绍“如何使用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

(0)

相关推荐

  • Python如何处理图像特效

    技术Python如何处理图像特效这篇文章主要为大家展示了“Python如何处理图像特效”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Python如何处理图像特效”这篇文章吧。

    攻略 2021年11月24日
  • cucumber本质以及实例是怎么样的

    技术cucumber本质以及实例是怎么样的本篇文章为大家展示了cucumber本质以及实例是怎么样的,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。名词解释FeatureFeatu

    攻略 2021年10月19日
  • jquery如何获取tr里面有几个td

    技术jquery如何获取tr里面有几个td这篇文章主要介绍jquery如何获取tr里面有几个td,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! jquery获取tr里面

    攻略 2021年11月17日
  • java Socket多线程服务器源代码是怎样的

    技术java Socket多线程服务器源代码是怎样的今天就跟大家聊聊有关java Socket多线程服务器源代码是怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收

    攻略 2021年11月21日
  • 城市轨道专业是干什么,城市轨道高铁乘务专业怎么样

    技术城市轨道专业是干什么,城市轨道高铁乘务专业怎么样现在这个专业非常的热门城市轨道专业是干什么,很多学校开设这个专业的,学校招生要求不是很高,初中生就可以参加体检面试,在校读五年毕业是大专学历,学校推荐工作非常不错的选择

    生活 2021年10月25日
  • oracle数据库安装前需要如何配置环境

    技术oracle数据库安装前需要如何配置环境小编给大家分享一下oracle数据库安装前需要如何配置环境,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!系统版本redhat5.6一 安装前环境配置查看内存g

    攻略 2021年11月18日