比原项目仓库:

Github地址:github.com/Bytom/bytom

Gitee地址:gitee.com/BytomBlockc…

Bytom-Mobile-Wallet-SDK 是从bytom源码中抽离出的钱包层代码,并且对钱包层代码进行了改造。使用gomobile可以将代码 编译成Android和iOS平台可用的SDK,使用编译后的Android和iOS钱包SDK可以在移动端实现创建bytom密钥、账户、地址和交易签名功能。

Bytom-Mobile-Wallet-SDK源码简介

SDK源码放在项目的sdk文件夹中,android和ios文件夹是使用SDK的demo项目,bind.go 中首字母大写可以外部调用的函数会作为提供给Android和iOS调用的API。bytom创建的密钥对会存储在磁盘单独的文件中,而且对私钥进行了加密,账户地址数据是存储在go实现的leveldb中,所以Android和iOS平台也需要提供数据存储的路径。

func InitWallet(storagePath string) {hsm := pseudohsm.New(storagePath)walletDB := db.NewDB("wallet", "leveldb", storagePath)accounts := account.NewManager(walletDB)assets := asset.NewRegistry(walletDB)wallet := aWallet.NewWallet(walletDB, accounts, assets, hsm)api = aApi.API{Wallet: wallet}
}
复制代码

Android和iOS平台调用其他钱包API的之前需要先调用InitWallet这个API,参数是磁盘上的绝对路径,InitWallet会对整个钱包进行一个初始化, 其中最重要是初始化leveldb的存储。其他的CreateKey、CreateAccount、CreateAccountReceiver是创建密钥、账户、地址等API,RestoreWallet API能够对钱包所有账户地址资产进行备份导出json格式的数据。

Bytom-Mobile-Wallet-SDK的编译

SDK代码的编译首先需要正确的安装golang和gomobile,golang需要1.7以上版本。
Android平台需要安装JDK、Android SDK、Android NDK,并且需要将Android SDK的platform-tools、ndk-bundle 添加到PATH系统环境变量中。iOS平台编译环境配置相对比较简单只需要安装Xcode就可以了。
Clone项目到本地$GOPATH/src下:

 git clone https://github.com/Bytom-Community/Bytom-Mobile-Wallet-SDK $GOPATH/src/github.com/bytom-community/mobile
复制代码

Android

gomobile init -ndk ~/path/to/your/ndk
cd $GOPATH/src/github.com/bytom-community/mobile
gomobile bind -target=android github.com/bytom-community/mobile/sdk/
复制代码

如果需要减小SDK的体积给gomobile bind指令加上-ldflags=-s参数:

gomobile bind -target=android -ldflags=-s github.com/bytom-community/mobile/sdk/
复制代码

执行指令后会在mobile文件夹生成wallet.aar和wallet-sources.jar文件。

iOS

cd $GOPATH/src/github.com/bytom-community/mobile
gomobile bind -target=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 {@Overrideprotected 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移动端钱包SDK开发基础相关推荐

  1. 基于Unity3D 的Vuforia SDK开发基础教程

    前言 增强现实技术是当前信息技术领域的一项重要的综合性技术,融合了模式识别.计算机图形学等多个学科的知识.今天我们就和大家一起来看一下,这个技术到底可以带给我们什么吧.   左边是通过手机观看图片,可 ...

  2. 18-ESP8266 SDK开发基础入门篇--TCP 服务器 RTOS版,串口透传,TCP客户端控制LED

    https://www.cnblogs.com/yangfengwu/p/11112015.html 先规定一下协议 aa 55 02 01 F1 4C 控制LED点亮  F1 4C为CRC高位和低位 ...

  3. 20-ESP8266 SDK开发基础入门篇--C# TCP客户端编写 , 加入数据通信

    https://www.cnblogs.com/yangfengwu/p/11192594.html 自行调整页面 连接上以后主动发个数据 namespace TCPClient {public pa ...

  4. 3-ESP8266 SDK开发基础入门篇--点亮一个灯

    https://www.cnblogs.com/yangfengwu/p/11072834.html 所有的源码 https://gitee.com/yang456/Learn8266SDKDevel ...

  5. iPhone SDK开发基础之iPhone程序框架

    总的来说iPhone程序有两类框架,一类是游戏框架,另一类是非游戏框架,这里介绍的是非游戏框架,即基于iPhone 用户界面标准控件的程序框架. 典型的iPhone程序包含一个Window和几个UIV ...

  6. 10-ESP8266 SDK开发基础入门篇--上位机通过串口控制ESP8266灯亮灭

    https://www.cnblogs.com/yangfengwu/p/11087618.html 其实这一节就是对上三节的综合测试 https://www.cnblogs.com/yangfeng ...

  7. IM开发基础知识补课(三):快速理解服务端数据库读写分离原理及实践建议

    1.前言 IM应用从服务端数据的角度来看,它是一种很特殊的应用场景,抛开基础数据.增值业务和附属功能不谈,单从IM聊天工具的立身之本--聊天数据来说,理论上是不需要在服务端存储的(或者说只需要短暂存储 ...

  8. [译]Kinect for Windows SDK开发入门(二):基础知识 上

    上篇文章介绍了Kinect开发的环境配置,这篇文章和下一篇文章将介绍Kinect开发的基本知识,为深入研究Kinect for Windows SDK做好基础. 每一个Kinect应用都有一些基本元素 ...

  9. 一、服务端开发基础(搭建Web服务器、网络基础概念、请求响应流程、配置Apache、静态网站与动态网站)

    一.建立你的第一个网站(目标) 前端开发 最终还是属于 Web 开发 中的一个分支,想要成为一名合格的前端开发人员,就必须要 充分理解Web 的概念. 构建一个专业的网站是一项巨大的工作!对于新手我们 ...

最新文章

  1. python3安装常见问题_Python3下安装spyder及常见问题解决
  2. linux truss strace ltrace 对比 诊断调试程序
  3. Python语言编程基础
  4. 常用的上网 发帖技巧
  5. softmax函数为什么叫softmax?
  6. grep 显示搜索的关键字相关的行信息
  7. matlab读取txt数据绘图(python命令行传参)
  8. 用位操作代替求余操作
  9. php5.5 getter setter,实现了一个PHP5的getter/setter基类的代码
  10. 【HTML+CSS网页设计与布局 从入门到精通】第6章-标题h1,h1字体格式的设置方式
  11. 如何在centos7上安装FreeIPA的客户端
  12. 从语音识别到人脸识别:谁才是打开智能电视的正确姿势?
  13. [设计] - 判断LOGO好坏的12条参考标准
  14. web调用IC卡读卡器开发第七章--NFC标签NDEF数据
  15. 密码学、信息安全、信息隐藏(论文)
  16. 中国工程院院士倪光南:拥抱开源 与世界协同创新
  17. JMM中的happen-before原则你知道么?
  18. 为什么快手不能左右滑了_快手现在为什么不能滑动播放了
  19. 《炼数成金-Linux内核探秘》笔记4
  20. Python提取信息测试

热门文章

  1. 数据告诉你,胡歌的微世界
  2. 明明是全闪存阵列,为何存储性能仍然不够快
  3. python -m json.tool 中文乱码 Format JSON with python
  4. C#进阶系列——DDD领域驱动设计初探(五):AutoMapper使用
  5. 搭建Eclipse+MyEclipse开发环境
  6. sublime 设置自动更新_不止是自动更新!简单几步让Windows 10变听话的孩子
  7. SQLite中的SELECT子句
  8. 学习NGUI前的准备NGUI的相关信息
  9. windows java ekho_Vekou
  10. JAVA同时输入用户名和密码_用java模拟设计一个简单的“用户注册”程序。当用户输入用户名和密码时,单击“注...