CocosCreator 打包安卓项目出现【dlopen failed: cannot locate symbol “rand” referenced by “libcocos2djs.so”】原因分析与解决方案!

首先,笔者使用的是最新的CocosCreator 1.5.1版本。开发环境是mac。

安装配置原生开发环境使用的是官网提供的教程

Cocos官网提供的安卓SDK包含三个版本的api,分别是10,20,22.

出现标题中的问题的原因是编译项目时选择了22的api。

解决方案很简单,编译项目时选择10的api就好了。

还有一个最简单的方法,CocosCreator 1.5.1版本已经提供了预编译库文件,选择模板的时候,选择binary就可以直接使用已经编译好的库文件了,这样速度会提高很多。

不过切换api的时候,别忘了把以前编译的东西删除掉。如果不知道删除啥,直接把当前项目下的build文件夹删除掉就可以了,这个是默认的发布路径。如果已经进行了安卓平台的开发的话,可以删除安卓项目目录下的obj文件夹。

PS:笔者特意测试了下,使用20版本的api也是可以编译成功的。不过这里的话,还是推荐使用10版本的api来进行编译。编译模板推荐使用binary,也就是使用预编译库文件,毕竟修改源码什么的,应该很少才对吧。如果想修改安卓api版本的话,可以先使用10版本的api编译出来,然后在安卓项目里面切换api版本,这样也不会有问题。

最后附上笔者打包发布的设置截图。

PS2:哈哈哈,笔者还是喜欢用22版本的api。模板选择binary的话,使用的就是预编译库文件了,这样选择什么安卓版本都不会影响到了。对了,笔者使用的是eclipse哈,别嫌弃,android stuidio的话,因为gradle和一些其他原因,最终还是没使用。

PS3:笔者发现使用binary模板还有一个好处,cocos的安卓lib库文件会自动复制到项目的src目录下面,不需要再打开一个新的lib库项目了,当然,这些都是基于eclipse的,android studio是什么情况,笔者就不知道了。

发表评论