如何使用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)

相关推荐

  • Sun的新Java脚本语言是什么

    技术Sun的新Java脚本语言是什么本篇文章给大家分享的是有关Sun的新Java脚本语言是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

    攻略 2021年12月2日
  • jquery sibling是什么

    技术jquery sibling是什么这篇文章主要讲解了“jquery sibling是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“jquery sibling是什

    攻略 2021年11月15日
  • Kubernetes gRPC负载均衡分析

    技术Kubernetes gRPC负载均衡分析本篇内容主要讲解“Kubernetes gRPC负载均衡分析”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Kubernetes

    攻略 2021年11月16日
  • 如何理解DIV中display和visibility属性差别

    技术如何理解DIV中display和visibility属性差别如何理解DIV中display和visibility属性差别,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到

    攻略 2021年11月17日
  • 使用SPM固定执行计划

    技术使用SPM固定执行计划 使用SPM固定执行计划使用SPM固定执行计划
    2 YEARS AGOORACLEVIEWED56TIMES.数据库在运行过程中,会由于各种原因的变化,存在执行计划不稳定的情况

    礼包 2021年11月19日
  • 怎么开启cisco sshservice(cisco vss 重启命令)

    技术Cisco Smart Install远程命令执行漏洞的示例分析这篇文章给大家介绍Cisco Smart Install远程命令执行漏洞的示例分析,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。0

    攻略 2021年12月20日