cocos引擎v2.1版本android 编译问题解决办法 (cocos2d-x-3.4rc1)
下载了最新版的cocos v2.1.2beta,使用cocos.exe来创建项目,而且在最下方的附件功能里还勾选了“支持x86架构cpu”这个选项,导致使用build_native.py编译不通过,以及cocos.py也compile不通过;提示android.mk的19行prebuilt-mk报错:***ANDROID NDK aborting,
之后尝试做了几处改动——添加了NDK_MODULE_PATH环境变量、使用了的从cocos下载的ndk版本\看网上别人的解释,prebult-mk报错是因为这个路径下更本链接不到我装在c盘的cocosframework, 于是按照别人说的拷贝了C:\Cocos\frameworks\cocos2d-x-3.4rc1这个目录到我自己项目的根目录,并且更名为cocos2d,android.mk里添加
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos),依然有问题,可能是这些改动使得cocos.py的compile可以通过了,看到的build success之类的提示,但仍然无法在eclipse编译出apk或者使用cocos.py 可以run出来apk但也运行不起来;
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos),依然有问题,可能是这些改动使得cocos.py的compile可以通过了,看到的build success之类的提示,但仍然无法在eclipse编译出apk或者使用cocos.py 可以run出来apk但也运行不起来;
再一次的尝试,想到了以前2.x时代创建项目的办法,于是使用cocos.py的new命令来创建项目, 居然成功了,而且不仅使用cocos.py compile成功,直接eclipse在clean时就会自动使用build_native.py编译出libcocos2dcpp.so这个动态库文件,貌似是因为使用的最新的ndk导致可以这样(不管怎样,cygwin是可以彻底卸载了);
我不甘心,再次使用cocos.exe创建项目(不勾选支持x86架构cpu),也成功运行起来了,但我感觉脑子乱掉了,之前应该有这样操作过怎么就是不行现在又行了;
难道问题的关键在于使用了cocos.py的new命令之后做了某种cocos.exe创建项目时做不到的事情,以至于接下来使用cocos.exe创建的项目也ok? 同时也说明无需拷贝cocos2d的framework到自己项目,也无需添加$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)这三行,默认创建好的项目是可以读取到framework路径的;
好吧懒得去理清之前错误的原因了,能跑起来就可以,把过程记录下来,总算可以开开心心的做项目了。
win7下cocos v2.1 android项目总结:
1,cocosv2.1下载安装;
2,java sdk下载安装,
新建环境变量JAVA_HOME:C:\Program Files\Java\jdk1.8.0_31,
新建环境变量CLASSPATH:.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
找到Path变量,新增:%JAVA_HOME%;
在cmd终端里输入java -version 回车看到类似1.8.0_31说明java环境ok了
3,android sdk,
在百度网盘里下载到了包含了所有的到最新的android版本的adt-bundle-windows-x86_64-20140702.zip,有8.59G,你也可以下载个空的adt bundle然后打开sdk manager来选择下载你需要的android sdk,不过记得要更改下载服务器路径选择国内的,google无法链接的你懂的
新增环境变量ANDROID_SDK:E:\adt-bundle-windows-x86_64-20140702\sdk\platforms;E:\adt-bundle-windows-x86_64-20140702\sdk\platform-tools;E:\adt-bundle-windows-x86_64-20140702\sdk\tools;
新增环境变量ANDROID_SDK_ROOT:E:\adt-bundle-windows-x86_64-20140702\sdk
找到Path变量,新增:%ANDROID_SDK%;
在cmd终端里输入adb -h看到Android Debug Bridge version 1.0.32类似的语句说明android sdk环境ok了。
4,android ndk,
直接在cocos商店下载当前版本时android-ndk-r10d,
新增环境变量NDK_ROOT:E:\android-ndk-r10d;
新增环境变量NDK_MODULE_PATH:C:\Cocos\frameworks\cocos2d-x-3.4rc1;C:\Cocos\frameworks\cocos2d-x-3.4rc1\external;C:\Cocos\frameworks\cocos2d-x-3.4rc1\cocos;
在eclipse 里右键项目属性-->C/C++ Build-->Environment 里新增 NDK_MODULE_PATH:
内容:D:\android-ndk-r10d;D:/cocos2d-x-2.2.6;D:/cocos2d-x-2.2.6/cocos2dx/platform/third_party/android/prebuilt (注意路径,这里是随便写的2.2.6)
最后,使用cocos.exe创建项目,如果你的android手机cpu不是x86架构的那么不要勾选下面的“支持x86架构cpu”,如果有问题,可以尝试使用cocos.py来new一个项目,vs2013跑起来没问题之后,就可打开eclipse来调试android了。
推荐使用cocos.py的compile命令,放弃使用build_native.py(eclipse clean和运行时也会自动调用build_native.py),直接删掉当前项目的build_native.py好了,或者你有精力的话可以去改一下这个build_native.py不要一运行就编译,因为目前版本我发现只要一clean或者运行时都会自动删掉libs/armeabi里的所有文件,当你的项目需要用到第三方sdk的.so文件的话,这里就会总被删掉而出问题了,所以推荐使用cocos.py的compile,细心的话你会在运行build_native.py时发现cocos官方也说了这么一句话:“We will remove this script next version,you should use cocos console to build android project.”。
其实cocos.py的run可以直接compile出apk文件并且在连接的手机上跑起来。