Web3安卓打包

对Android没多少经验,先描述下问题:开发web3项目,版本使用的是2.4.8。
将web3.min.js设置为插件,然后使用declare var web3进行声明,因为之前一直是开发web版,并没有什么问题,现在打包Android版本,在构建完成后,使用Android studio运行时,手机一直在狂闪,错误如下。
请给位大佬指点。

  • Creator 版本:2.4.8

  • 目标平台: Android

  • 重现方式:

D/jswrapper: JS: [ERROR]: (see stack) Uncaught ReferenceError: Web3 is not defined [0]e.start@assets/main/index.4b62e.jsc:97
[1]eval@(no filename):3
[2]anonymous@src/cocos2d-jsb.4d561.js:15173
[3]invoke@src/cocos2d-jsb.4d561.js:15136
[4]startPhase@src/cocos2d-jsb.4d561.js:15265
[5]mainLoop@src/cocos2d-jsb.4d561.js:6405
[6]t@src/cocos2d-jsb.4d561.js:6642
[7]tick@jsb-adapter/jsb-builtin.js:2156
E/jswrapper: [ERROR] (E:/cocos-dashboard-editors/2.4.9/resources/cocos2d-x/cocos/scripting/js-bindings/jswrapper/v8/Object.cpp, 574): Invoking function (0x7c030987f0) failed!
E/jswrapper: ERROR: Uncaught ReferenceError: Web3 is not defined, location: src/cocos2d-jsb.4d561.js:0:0
STACK:
[0]e.start@assets/main/index.4b62e.jsc:97
[1]eval@(no filename):3
[2]anonymous@src/cocos2d-jsb.4d561.js:15173
[3]invoke@src/cocos2d-jsb.4d561.js:15136
[4]startPhase@src/cocos2d-jsb.4d561.js:15265
[5]mainLoop@src/cocos2d-jsb.4d561.js:6405
[6]t@src/cocos2d-jsb.4d561.js:6642
[7]tick@jsb-adapter/jsb-builtin.js:2156
D/debug info: Uncaught Exception:
- location : (see stack)
- msg : Uncaught ReferenceError: Web3 is not defined
- detail :
[0]e.start@assets/main/index.4b62e.jsc:97
[1]eval@(no filename):3
[2]anonymous@src/cocos2d-jsb.4d561.js:15173
[3]invoke@src/cocos2d-jsb.4d561.js:15136
[4]startPhase@src/cocos2d-jsb.4d561.js:15265
[5]mainLoop@src/cocos2d-jsb.4d561.js:6405
[6]t@src/cocos2d-jsb.4d561.js:6642
[7]tick@jsb-adapter/jsb-builtin.js:2156

不要沉啊!

web.min.js和ethers.js这些 都是基于html的库,native要使用web3相关的,要自行添加安卓的第三方库,比如tokenpocker的登陆

意思是web3.min.js等是适用于web端,在native是无法使用的,需要使用第三方库,才能适用native,感谢,我找下,看能否解决

查了些资料确实web3.js不适合在native上用,现在也在找一些可以用的库,兄弟你接过吗?

没有android的库,因为web3就是基于web的,
要不你就打个web-mobile然后用私钥调用,但这样别人会认识不安全
要不就是调用第三方库tokenpocker的,类似于接微信登陆和支付一样

web-mobile是已经解决了的,现在主要像打包Android和IOS来用。
我有查tokenpocker这个库基层用的是Walletconnect,但是cocos引入插件时,限制太多了,安装后无法使用,插件包含了Nodejs无法使用

现在在看metamask sdk不知道能否解决

是直接用的安卓的aar包,不是js库

是基于安卓开发,然后引入安卓的包,进行开发,不是在cocos上开发,安卓开发不咋会/裂开,研究下,感谢回答!

https://github.com/web3j/web3j;老哥试试这个,我也在研究

感谢,有看到这个,不过近期在看Walletconnect,想使用集成的看能够解决三端!

walletconnect是接SDK扫码登录;这个能解决需求吗?反正我们这边只打算做备选方案

pc版web端
移动版web端
安卓
IOS
我本来想使用walletconnect,解决,但是在pc版体验不好,而且兼容性差。
请教下你们如何解决多端问题?

没有解决;也在看文档;今天又跑去看MPC钱包方案了

我现在是这样的做法
pc端,将web3和walletconnect结合,可以接各种钱包
移动端可以用walletconnect解决,移动端还没开始,不过pc端可以用上述问题解决

https://cn.cointelegraph.com/news/multi-party-computation;
https://developer.safeheron.com/zh-CN/quickstart_tutorials/create-a-wallet;
可以看看這個,運營告訴我,現在市場偏向做MPC錢包,直接由游戲提供商生成錢包,然後保存一個KEY用於鏈上交互;用戶拿著我們生成的Key+自己的密碼可以去MetaMask等軟件還原出自己的錢包

嗯嗯,这个了解下,不过我们暂时不用这个

之前我接入的是这个,是针对单个钱包app的,不能像walletconnet那样统一协议
https://github.com/TP-Lab/Mobile-SDK/tree/master/Android%20SDK

1赞