cocos2dx基础篇(2)——Win32移植到Android-创新互联
【安装工具】
歙县网站制作公司哪家好,找成都创新互联!从网页设计、网站建设、微信开发、APP开发、成都响应式网站建设等网站项目制作,到程序开发,运营维护。成都创新互联从2013年开始到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联。JDK
Eclipse 或直接下一个 ADT集成开发工具
SDK
NDK9r
ADT
CDT
安装方法自行百度。
【正文】
1、由 Cocos2D-X 和 VS2010 环境配置——1 中提到的python方法,创建新项目。
然后将你开发好的win项目相应的文件Classes和Resources文件夹里的东西分别拷贝到刚创建的新项目中相应的 Classes和 assets文件夹中去。
2、使用Eclipse将新项目中的pro.android导入。
3、修改Android.mk
将你Classes里的cpp都包进来。
并且在 include $(BUILD_SHARED_LIBRARY) 下面添加如下两行:
$(call import-add-path, D:\Android\tools\cocos2d-x-2.2.3)
$(call import-add-path, D:\Android\tools\cocos2d-x-2.2.3\cocos2dx\platform\third_party\android\prebuilt)
4、修改项目的参数
5、下面是bash,如果你的ndk版本低于r8,那么就需要再下个cywin了。
MAC的是这个(没有 .cmd 后缀)。
6、导入一些资源文件
D:\Android\tools\cocos2d-x-2.2.3\CocosDenshion\include
D:\Android\tools\cocos2d-x-2.2.3\cocos2dx\include
7、在C/C++ Build 中的 Environment 里 Add 一个变量。
NDK_MODULE_PATH
D:\Android\tools\cocos2d-x-2.2.3;D:\Android\tools\cocos2d-x-2.2.3\cocos2dx\platform\third_party\android\prebuilt
8、然后就可以点击导航栏中的 , 开始编译了。。。
9、编译完之后,项目的bin中就多了一个apk文件。这样一直就成功了。。。
10、在手机上跑跑看。。。
【问题】
如下有几个配置过程中可能出现的错误。。。
Q1:Program "bash" not found in PATH
A1:D:\Android\tools\android-ndk-r9d\ndk-build.cmd
如果你的ndk版本低于r8,那么就需要下载cywin,具体过程自己百度。
Q2:The import org.cocos2dx.lib cannot be resolved
A2:没有引入相应的包。
Project Properties -> Java Build Path -> Source -> Link Source -> "D:/Android/tools/cocos2d-x-2.2.3/cocos2dx/platform/android/java/src"
Q3:Symbol 'CocosDenshion' could not be resolved
A3:没有引入源文件的原因。
Project Properties -> C/C++ General -> Path and Symbols -> Includes -> GNU C++ -> Add -> "D:\Android\tools\cocos2d-x-2.2.3\CocosDenshion\include"
然后加下面两句话即可。
#include "SimpleAudioEngine.h"
using namespace CocosDenshion;
Q4:Type 'std::string' could not be resolved
A4:android本身是不支持C++的STL的,所以你需要加入一些C++的STL的库函数
详情见 错误5。
然后加上两句,就可以用了。
#include
using namespace std;
Q5:Invalid arguments ' Candidates are: void * memcpy(void *, const void *, ?)
A5:为何会有“?”呢。。。
查看原形 extern void* memcpy(void *, const void *, size_t);
错误提示中:Invalid arguments,意味着参数无效,很明显是size_t这个参数不被正常识别造成的。
源于此分析,那么凡是使用size_t类型参数的方法均会出现这个问题,例如:memset,memccpy,memchr,memcmp等。
解决方案:
右击项目工程properties -> C/C++ General -> Paths and Symbols ->
选择 "Includes" 标签的 GNU C++。Add下面两个路径:
D:\Android\tools\android-ndk-r9d\platforms\android-19\arch-arm\usr\include
D:\Android\tools\android-ndk-r9d\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\lib\gcc\arm-linux-androideabi\4.8\include
如此,该问题可解。
备注说明:
还可在将以下两个头文件库添加到项目的include中:
里面有一些其他的C++头文件和STL的头文件。。。
D:\Android\tools\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\include;
D:\Android\tools\android-ndk-r9d\sources\cxx-stl\gnu-libstdc++\4.8\libs\armeabi-v7a\include;
Q6:*** Android NDK: Aborting. . Stop.
A6:修改项目的jni文件夹下的Android.mk。
在 include $(BUILD_SHARED_LIBRARY) 下面添加如下两个:
$(call import-add-path, D:\Android\tools\cocos2d-x-2.2.3)
$(call import-add-path, D:\Android\tools\cocos2d-x-2.2.3\cocos2dx\platform\third_party\android\prebuilt)
Q7:The connection to adb is down, and a severe error has occured.
A7:cmd跳到sdk tools文件路径下;adb kill-server;然后再adb start-server;重启Eclipse。
Q8:Type 'xxxx' could not be resolved
A8:修改工程的indexer属性就OK了
Q9:Unable to resolve target 'android-8'
A9:原因是没有android-8的SDK,打开Android项目中的project.properties,将target改成你电脑中拥有的SDK版本API。如我这里有API 10和API 19。那么将其改成android-10或android-19即可。
Q*、其实其他的错误都和上面的错误很类似,有什么错,基本都是没有加头文件引起的。。。
欢迎大家提供其他的错误。。。。
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
文章标题:cocos2dx基础篇(2)——Win32移植到Android-创新互联
本文地址:http://myzitong.com/article/desieh.html