COCOS2D那点破事记录 cocos2d 打包安卓时我遇到过的坑

时间:2022-07-03 21:40:15

1 mk 文件的编写 ,cpp文件可以直接遍历classes下面的cpp和c文件自动包含编译 这个就不说了 网上很多代码,至于包含目录 比如classes下面有一个core文件夹

那么在包含路径时加入一个core文件夹即可,包含多个目录时记得换行 加\ 并且\的后面不要又空格 否则找不到头文件,另外还有需要注意的事情,如果你是使用

visual studio工具写代码 那么比如你core下面的某个cpp文件需要包含classes之下的某个文件 那么你就要在#include "../abc.h"这样 写上完整的相对路径,

请不要手贱在vs下面设置包含目录然后直接#include "abc.h" 到时候ndk编译的时候成吨的找不到头文件 改死你 ,  mk下定义预编译指令 是通过 -D来写的 

比如 -DUSE_WEBSOCKET  这样编译的时候就会给你加上一个宏 相当于 每个代码文件里面都加入了一句#define USE_WEBSOCKET 的宏了。

第三方库文件的添加 例如 libiconv  你把iconv的文件夹拷贝到cocos2d库文件的目录里面 在libiconv的mk文件里面写好库的名字 然后在你的项目的mk文件

下面和加入cocos库一样的指令包含你的库 这样ndk编译的时候就会编译你指定的库文件生成.a文件了。


2 java文件里面使用cocos2d的sdk库的时候 发现找不到org.cocos2d.lib.xxx  打开proj.android目录下的project.properties 写入以下内容

android.library.reference.1=../cocos2d/cocos/platform/android/java 此坑解之 最好请你不要像网上说的那样直接去cocos目录下边把整个lib文件夹拷贝到自己的工程,

我打包的时候拷贝过来编译通过了 然而我运行的时候似乎是找不到入口点了,我感觉是某些代码并编译过了但是没有链接到libcocos2dcpp.so下面 

导致了程序运行时加载so文件之后调用函数时没有找到这个函数 所以就出问题了,然而有人这么干也没问题 具体情况 我也不清楚,但是最好还是添加这行代码 省事也不会出事。


3 mutildex xxxx define 错误  这个问题  可能是你的某些jar包或者java文件里面有多重定义 比如你把cocos2d http那个jar包拷贝到libs目录下边 可能就出现这个多重定义的错误,

具体原因需要你根据你自己的项目来排查错误 最笨的 一个个删 然后打包 。


4 sdk的接入 sdk的接入 我用debug编译的程序测试时微信闪退 ,当时摸头不知恼以为又是什么代码bug 找不到函数什么的,后来我发现调用微信分享的时候,一直返回失败,

说明sdk起码是没问题的,然后才发现 调用sdk需要打release签名啊,这个问题坑了我一整天时间。


5 release打包的时候如何设置签名文件 , 打开ant.properties文件 加入以下代码

key.alias.password=123
key.store.password=123
key.store=c:\abc.keystore //这里是你自己的签名文件
key.alias=androiddebugkey  


6 如何设置apk的图标和名字  , 名字设置 打开proj.android/res/values/string.xml  里面有一个字段叫做app_name  将该字段对应的value设置为你想要的名字即可,

图标设置 将proj.android/res下所有文件夹的icon.png设置为你自己想要的图标即可。


遇到过的问题大致就这些吧 还有许多细节问题 一时想不起了就不写了,填完一个坑又是另外一个坑,目前我正在苦恼如何调试安卓的程序最好是cpp源码级别调试,

用visualgdb经常会出现错误什么的 我也不知道是什么错误 反正就是无法调试,有些机器又可以调试成功,eclipse臣妾不会用啊...... 洗洗睡了....