Android开发者做cocos2dx最大的绊脚石,不是c++,而是环境的搭建——摘自某博客
这几天在家装cocos2dx,2.2版本,(3.0 alpha版还没有试成功,改天吧),各种报错再加上下载速度不给力,断断续续的装了好几天,终于看到了它们的logo(据说是个奔跑的椰子)。把我个人的经验记下,能够以后提醒自己,帮助别人。
安装环境:
win7 64位
安装项:
cocos2d-x 2.2.1 http://www.cocos2d-x.org/download
android ADT bundle for Windows http://developer.android.com/sdk/index.html (包含Eclipse,ADT plugin和android SDK)
android NDK r9c http://developer.android.com/tools/sdk/ndk/index.html
cygwin 1.7.27 http://cygwin.com/setup-x86_64.exe
安装方法参照 cocos2d-x-2.2.1\samples\Cpp\HelloCpp\proj.android 目录下的README。
#### Setup Eclipse Environment (only once)**NOTE:** This step needs to be done only once to setup the Eclipse environment for cocos2d-x projects. Skip this section if you've done this before.
1. Download Eclipse ADT bundle from [Google ADT homepage](http://developer.android.com/sdk/index.html)
**OR**
Install Eclipse with Java. Add ADT and CDT plugins.
2. Only for Windows
1. Install [Cygwin](http://www.cygwin.com/) with make (select make package from the list during the install).
2. Add `Cygwin\bin` directory to system PATH variable.
3. Add this line `none /cygdrive cygdrive binary,noacl,posix=0,user 0 0` to `Cygwin\etc\fstab` file.
3. Set up Variables:
1. Path Variable `COCOS2DX`:
* Eclipse->Preferences->General->Workspace->**Linked Resources**
* Click **New** button to add a Path Variable `COCOS2DX` pointing to the root cocos2d-x directory.
![Example](https://lh5.googleusercontent.com/-oPpk9kg3e5w/UUOYlq8n7aI/AAAAAAAAsdQ/zLA4eghBH9U/s400/cocos2d-x-eclipse-vars.png)
2. C/C++ Environment Variable `NDK_ROOT`:
* Eclipse->Preferences->C/C++->Build->**Environment**.
* Click **Add** button and add a new variable `NDK_ROOT` pointing to the root NDK directory.
![Example](https://lh3.googleusercontent.com/-AVcY8IAT0_g/UUOYltoRobI/AAAAAAAAsdM/22D2J9u3sig/s400/cocos2d-x-eclipse-ndk.png)
* Only for Windows: Add new variables **CYGWIN** with value `nodosfilewarning` and **SHELLOPTS** with value `igncr`
注:如果在cygwin里用命令行build_native.sh编译,要在windows环境变量里加上这几项,否则还是会报如下错误
Please define NDK_ROOT in your environment or in local.properties
4. Import libcocos2dx library project:
1. File->New->Project->Android Project From Existing Code.
2. Click **Browse** button and open `cocos2d-x/cocos2dx/platform/android/java` directory.3. Click **Finish** to add project.
#### Adding and running from Eclipse
![Example](https://lh3.googleusercontent.com/-SLBOu6e3QbE/UUOcOXYaGqI/AAAAAAAAsdo/tYBY2SylOSM/s288/cocos2d-x-eclipse-project-from-code.png) ![Import](https://lh5.googleusercontent.com/-XzC9Pn65USc/UUOcOTAwizI/AAAAAAAAsdk/4b6YM-oim9Y/s400/cocos2d-x-eclipse-import-project.png)
1. File->New->Project->Android Project From Existing Code
2. **Browse** to your project directory. eg: `cocos2d-x/cocos2dx/samples/Cpp/TestCpp/proj.android/`
3. Add the project
4. Click **Run** or **Debug** to compile C++ followed by Java and to run on connected device or emulator.
常见错误:
1. java.lang.UnsatisfiedLinkError: Couldn't load xxx: findLibrary returned null
与模拟器的CPU选择有关,一般是因为选择了x86的架构,在AVD manager里把CPU改成ARM架构即可。NDK在r6之后支持x86架构了,但需要在项目里添加一个参数。
Support x86 and armxxx
Change the APP_ABI in HelloWorld/android/jni/Application.mk
据我观察,这样做会在项目得libs生成一个x86文件夹,并生成.so文件
2. 运行错误:java.lang.IllegalArgumentException: No configs match configSpec
我所找到的解决方法是将AVD的target调至4.0以上,不包括4.0
3. Errors running builder 'Integrated External Tool Builder' on project 'patrol'
解决方法是:
右键项目选择“Properties”,再选择“Builders”,删除丢失的builder。
4. Unable to find native library
起初我用java build path选择libcocos2dx当作reference project,后来发现还是不行。最终的解决方式就是把cocos2dx生成的libcocos2dx.jar拷贝入项目的libs目录下即可。