大家好,
在玩cocos的过程中遇到很多问题,也解决很多问题,下面我先说cocos2d-2.x创建项目以及在android平台下跑起来时遇到的问题。
我所使用的cocos2d-x版本为 cocos2d-x-2.1.5 (2.14已经以后都是用cygwin创建项目),如果没有先下载(有就忽略),在根目录下会有 create_android_project.bat批处理脚本。这个脚本就是我们创建的cocos android项目所需要执行的脚本,其中里面需要配置一些路径:
1.set _CYGBIN=C:\cygwin64\bin (这个是cygwin目录.没有安装的根据系统位数先安装cygwin)
2.set _ANDROIDTOOLS=E:\adt-bundle-windows-x86_64-20130522\sdk\tools (Android SDK 目录)
3.set _NDKROOT=E:\android-ndk-r8e-windows-x86_64\android-ndk-r8e (NDK 目录)
这些修改完后,我们就能够打开 cmd cd到你 cocos2d-x-2.1.5 目录下 运行 create_android_project.bat 脚本了。
如果前面的配置有问题,请检查环境配置;没有问题则可以进行下一步。
先会让输入android package(android包名),如:org.cocos2dx.example
接着输入 project name (Android项目名) 如 TestPro
然后输入android target id: 如 android-17 (注意,这里输入需要与电脑环境配置的一致,android-17 对应 android 4.2.2 系统)
如果没有error ,表示创建成功。则会在根目录生成项目 文件夹为 你上面输入的 项目名
创建算是成功了。但是我们需要跑在android上面,还是缺点东西的
我们可以把项目导入到 eclipse 中,导入后,肯定会有很多的错误,那是正常的,因为还有哦一步没有做,我们需要在 cocos2d-x-2.1.5 目录
E:\cocos2d-x-2.1.5\cocos2dx\platform\android\java 把这个也导入到项目,作为lib库使用,让我们生产的项目依赖如它。第一次肯定是项目中会有感叹号,这时候需要先 clear 然后在build 项目。就OK了。
上面这些做完,我们还是不能够在android项目上跑。因为是 cocos2d-x项目,c++写的,在android使用需要编译 二进制(SO文件),那么我们就需要编译C++文件,这里用的是cygwin编译。
我们打开cygwin,cd 到 项目目录
E:\cocos2d-x-2.1.5\TestPro\proj.android 然后运行 ./build_native.sh 一运行。我们会发现很快的出现
please define NDK_ROOT
eclipse编译时不会使用cygwin,而你的变量是在cygwin里设置的,所以无效。
正确的理法是在win7的环境变量中设置,这样cygwin和eclipse就都能认了
解决办法为,我们找到 cygwin 安装目录 找到
C:\cygwin64\home\当前使用计算机用户\.bash_profile 文件。打开此文件 添加一下语句:
NDK_ROOT=/cygdrive/e/android-ndk-r8e-windows-x86_64/android-ndk-r8e
export NDK_ROOT
export NDK_ROOT
注意:/cygdrive/e/android-ndk-r8e-windows-x86_64/android-ndk-r8e 根据自己的配置
好了,现在开始满怀信心的在编译,这次好多了。多出了好几行,一看,ERROR 提示为
cc1plus.exe: fatal error: jni/hellocpp/main.cpp: Permission denied
虽然英语不咋好,但是能看出是权限有问题了。但是却又不知道解决,只好google,或者百度。还好网络很强的,各种大神的发帖,找到了。解决方案是:进入cmd
windows命令台
指定工程目录,
接着修改文件和目录的权限,输入:takeown /f * /a /r
然后授权授权everyone组
,输入:icacls * /t /grant:r everyone:f,
,输入:icacls * /t /grant:r everyone:f,
再切换到cygwin Terminal下,再次运行build_native.sh包,输入:./build_native.sh
这次成功了。我们可以在项目里面的 libs 目录下找到 armeabi 文件夹下找到 刚才生成的 libgame.so 文件。
共勉~