前言:
使用Cocos开发 Android、iOS项目,调用Native各种能力都需要去写平台代码这么麻烦
比如调用个读取剪切板、调用个系统分享、打开个外部URL…等等 都需要去写Native代码,然后使用JSB调用,Creator并没有直接提供好的JS库可以直接调用
听说AnySDK可以方便提供Native能力,然后看了下停止维护了,并且提供的是渠道SDK,并不是各种Native能力
之前写过5+SDK和UniApp那套,做H5套壳App调用各种原生能力着实方便,直接JS调用即可
并且Uni的插件那套也能很方便的集成各种Native SDK直接在JS里调用进行使用
如果Cocos也能有这么方便的调用Native的库就好了
如果能做成Cocos Creator编辑器插件,无需打开Android、iOS工程,直接集成就更棒了
大概设想:
为了方便扩展这个Native库,一切Native能力都以插件形式提供,后面都可以方便扩展
这个开源库
- JS端提供个类似cc的对象,creator代码直接调用即可
- Native端则Android为1个Jar文件,iOS为1个framewor文件
- 原生工程,Android在Appliction类的生命周期方法,Activity的生命周期方法里,分别调用 Native代理生命周期方法
- ios类似,在AppDelegate类的生命周期方法,UIViewController的生命周期方法里,分别调用 Natvie代理生命周期方法
- Natvie抽象出的2个类,如Android,一个ProxyAppliction,一个ProxyActivity(子类可以获取到activity实例)
- 插件开发是就继承这2个类,然后在ProxyActivity写对JS提供的接口
- Natvie代理生命周期方法,会调用所有插件的生命周期方法,也会代理JS端调用ProxyActivity写对JS提供的接口
- 然后再提供 1个arr文件,1个framewor文件,叫做BaseModule,为基础Native库,提供文中一开始提到的读取剪切板、调用个系统分享…等等普通基础Native能力
- 要扩展Native能力,直接写新增插件放到指定目录即可
- 插件还可使用配置文件,配置插件要引用的库、plist配置、meta配置等等
这样的话调用,只需要cocos creator扔个JS,原生工程集成下(jar、arr)、framewor 再各个生命周期里调用下,就可以任意使用原生能力
不过这些活应该是可以自动化的,应该再做个Cocos Creator编辑器插件,直接勾选上使用CCCNative,就全自动完成,连原生工程都不用打开,然后BaseModule插件外的插件再做个插件市场,编辑器里点击安装直接就扩展了新的原生能力,比如微信登录、人脸识别什么的。体验就是插件里点点点,然后项目里直接JS就能调用了
如果Native插件市场里有了很多优质插件,只是在Cocos Creator里用有点太可惜了。可以扩展Native端调用层,扩展到Laya、Egret、Untiy、UE4 甚至Webview
技术架构图设想长这样
个人精力有限,想问问有没有小伙伴想一起弄的?
