Android中使用web3j时出现内存溢出错误:OutOfMemoryError

在使用Android和web3j开发时出现了内存溢出错误的异常情况即OutOfMemoryError。

我正在试着在Android应用程序中集成web3j。但是,在加载以太坊钱包文件时,库提供了一个内存不足的异常:

Credentials credentials = WalletUtils.loadCredentials("password", walletFile)

异常exception是这么说的:

java.lang.OutOfMemoryError: Failed to allocate a 268435468 byte allocation with 8050708 free bytes and 244MB until OOM

问题可能在这里:

//com.lambdaworks.crypto.SCrypt#scryptJ
byte[] V  = new byte[128 * r * N]; // r: 8, N: 262144, V = byte[268435456]

我知道可以加载credentials,因为另一个项目在Ether Wallet使用web3j,并能够加载相同的以太坊钱包文件。如何解决这个问题?

问题的解决

一个快速解决的方法。在/src/main中创建jniLibs文件夹,并将此加密文件夹中的所有Android文件添加到jniLibs文件夹中,然后编译运行。

注意:需要gradle 0.7.2+将jniLibs自动添加到构建中。

原文《以太坊常见问题和错误》中的:
http://cw.hubwiz.com/card/c/ethereum-FAQ/1/2/6/

另外推荐几个很受欢迎全网稀缺的互动教程:

  • web3j,主要是针对java和android程序员围绕web3j库进行区块链以太坊开发的讲解。
  • python以太坊,主要是针对python围绕web3.py进行区块链以太坊应用开发的讲解。
  • php以太坊,主要是介绍使用php进行智能合约开发交互,进行账号创建、交易、转账、代币开发以及过滤器和事件等内容。
  • 以太坊开发,主要是介绍使用node.js、mongodb、区块链、ipfs实现去中心化电商DApp实战,适合进阶。
  • 以太坊教程,主要介绍智能合约与dapp应用开发,适合入门。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值