下面详细介绍一下用NDK r9版本编译cocos2d x 2.0.4可能会遇到的各个坑吧。
错误提示1:
Android NDK: WARNING:E:\cocos2d-x\cocos2d-2.0-x-2.0.4/cocos2dx/Android.mk:cocos2dx_static: LOCAL_LDLIBS is always ignored for static libraries
Gdbserver : [arm-linux-androideabi-4.6] libs/armeabi/gdbserver
Gdbsetup : libs/armeabi/gdb.setup
"Compile++ thumb : cocosdenshion_static <= SimpleAudioEngine.cpp
E:\cocos2d-x\cocos2d-2.0-x-2.0.4/CocosDenshion/android/SimpleAudioEngine.cpp: In constructor 'CocosDenshion::SimpleAudioEngine::SimpleAudioEngine()':
E:\cocos2d-x\cocos2d-2.0-x-2.0.4/CocosDenshion/android/SimpleAudioEngine.cpp:159:2: error: format not a string literal and no format arguments [-Werror=format-security]
cc1plus.exe: some warnings being treated as errors
make: *** [obj/local/armeabi/objs-debug/cocosdenshion_static/SimpleAudioEngine.o] Error 1
解决方法:把SimpleAudioEngine.cpp第159行注释掉
在文件夹CocosDenshion/android中找到SimpleAudioEngine.cpp文件,定位到第159行,将其注释掉如下:
//LOGD(deviceModel);
再次用Cygwin Terminal软件运行build_native.sh,又出现新的提示错误。
错误提示2:
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp:292:45: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp:292:45: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp: In member function 'void OpenSLEngine::create Engine(void*)':
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp:324:3: error: format not a string literal and no format arguments [-Werror=format-security]
cc1plus.exe: some warnings being treated as errors
/cygdrive/e/android-ndk-r9c/build/core/build-binary.mk:388: recipe for target 'obj/local/armeabi/objs-debug/cocosdenshion_static/opensl/OpenSLEngine.o' failed
make: *** [obj/local/armeabi/objs-debug/cocosdenshion_static/opensl/OpenSLEngine.o] Error 1
make: Leaving directory '/cygdrive/e/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android'
错误提示解读:warning我们就不管了,先只看error,OpenSLEngine.cpp文件324行error。
解决方法:把cocos2d-2.0-x-2.0.4\CocosDenshion\android\opensl文件夹下的OpenSLEngine.cpp文件
324行注释掉 /*LOGD(errorInfo);*/
再次运行build_native.sh,又提示错误。
错误提示3:
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp:292:45: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/OpenSLEngine.cpp:292:45: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
[armeabi] Compile++ thumb: cocosdenshion_static <= SimpleAudioEngineOpenSL.cpp
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/SimpleAudioEngineOpenSL.cpp: In member function 'bool SimpleAudioEngineOpenSL::initEngine()':
E:/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android/../../CocosDenshion/android/opensl/SimpleAudioEngineOpenSL.cpp:41:5: error: format not a string literal and no format arguments [-Werror=format-security]
cc1plus.exe: some warnings being treated as errors
/cygdrive/e/android-ndk-r9c/build/core/build-binary.mk:388: recipe for target 'obj/local/armeabi/objs-debug/cocosdens hion_static/opensl/SimpleAudioEngineOpenSL.o' failed
make: *** [obj/local/armeabi/objs-debug/cocosdenshion_static/opensl/SimpleAudioEngineOpenSL.o] Error 1
make: Leaving directory '/cygdrive/e/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android'
这次轮到SimpleAudioEngineOpenSL.cpp文件第41行。
解决方法:把cocos2d-2.0-x-2.0.4\CocosDenshion\android\opensl文件夹下的SimpleAudioEngineOpenSL.cpp文件第41行注释掉:
/* LOGD(errorInfo);*/
再次运行build_native.sh。又提示错误,warning我们就不管了,先只看error。
错误提示4:
/cygdrive/e/android-ndk-r9c/build/core/build-binary.mk:388: recipe for target 'obj/local/armeabi/objs-debug/cocos2d x_static/platform/android/CCCommon.o' failed
make: *** [obj/local/armeabi/objs-debug/cocos2dx_static/platform/android/CCCommon.o] Error 1
make: Leaving directory '/cygdrive/e/cocos2d-2.0-x-2.0.4/cocos2d-2.0-x-2.0.4/testa/proj.android'
解决方法:这次我们在Application.mk文件后面添加下面代码:
APP_CPPFLAGS += -Wno-error=format-security
再次运行build_native.sh,然后一切就顺利了!我把so文件(libgame.so)在eclipse里面导入android项目,并编译成apk文件,测试成功。
至此,NDK r9版本就可以用build_native.sh编译成so文件(libgame.so),
已经在真机上测试cocos2d x的hello World成功。
如果再有其他报错应该不是NDK r9本身的原因,建议考虑NDK_ROOT是否设置,或者权限的问题,
或者是项目的代码问题(有一些VC++允许通过的,这里会有细微的差异)。
如果第一次尝试做交叉编译的同学,建议不要用自己写的Classes代码编译,
可以考虑用官方的HelloWorld,这样可以减少困扰。
相关推荐
cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...
* 调试.so 库文件:ndk-stack 可以调试.so 库文件,这在 cocos2d-x 中尤其重要,因为 cocos2d-x 使用了大量的.so 库文件。 * 跨平台支持:ndk-stack 支持多种平台,包括 Windows、Linux 和 Mac OS X。 ndk-stack 在...
Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,Cocos2d-x对Spine动画引擎的集成进行了更新,这...
在Android平台上进行游戏开发时,Cocos2d-x是一个广泛使用的开源2D游戏引擎,它支持多平台,包括iOS、Android、Windows等。本篇将详细介绍如何在Windows XP SP3环境下配置Android Cocos2d-x的开发环境。 首先,我们...
通过《cocos2d-x使用NDK进行跨平台开发.pdf》这份文档,开发者可以深入学习cocos2d-x与NDK的集成细节,包括设置环境、编写C++代码、构建流程以及调试技巧等。它将帮助开发者充分利用这两个工具,提升游戏开发的效率...
本文档主要介绍了如何在Windows 7操作系统上,使用Eclipse集成开发环境配置Cocos2d-x开发环境,使得开发者可以在同一环境中进行Java和C++代码的编写,无需借助其他编辑器如Visual Studio。以下是配置过程的详细步骤...
4. **Android NDK**:Cocos2d-x需要Android Native Development Kit(NDK)来编译C/C++代码。你可以从Google官方站点下载NDK,并将其解压到一个方便访问的位置。 5. **Cocos2d-x**:从Cocos2d-x官网下载最新稳定版...
这个过程可能会遇到版本兼容性问题,因此在选择和配置各个组件时,应确保它们与Cocos2D-x3.10相匹配。一旦环境搭建成功,开发者就可以开始使用Cocos2D-x的命令行工具创建项目,编写游戏逻辑,并在各个平台上进行编译...
配置完成后,你可以使用Visual Studio打开cocos2d-x提供的示例或自己的项目,编译并生成Win32可执行文件。 **2.3 常见问题总汇** 手册还提供了遇到问题时的解决方案,帮助开发者解决可能出现的编译错误或配置问题。...
### Ubuntu系统下配置Eclipse自动编译Cocos2d-x的Android项目 #### 知识点概述 本文将详细介绍如何在Ubuntu系统环境下配置Eclipse自动编译Cocos2d-x的Android项目。此过程涉及软件的下载安装、环境变量配置、项目...
本文将深入探讨这一技术,以VS2010下的cocos2d-x v2.2.0版本为例,覆盖Windows和Android平台,解析其背后的实现原理及操作步骤。 一、cocos2d-x与Webview的融合 cocos2d-x自身是基于C++的,而Webview是原生平台...
Ant是Apache的一个构建工具,Cocos2d-x使用它来编译项目。确保Eclipse的Android SDK和NDK路径设置正确。 最后,进行项目初始化。在命令行中,进入你的Cocos2d-x项目目录,使用`cocos new`命令创建一个新的项目。...
2. 编译Cocos2d-x Android版本 3. 将Cocos2d-x Android版本添加到Android项目中 七、iOS平台移植 1. 安装Xcode 2. 编译Cocos2d-x iOS版本 3. 将Cocos2d-x iOS版本添加到Xcode项目中 八、跨平台移植 1. 使用Cocos...
开发者可以从Cocos2d-x官方网站下载最新版本的Cocos2d-x引擎。例如,版本cocos2d-2.1rc0-x-2.1.2.zip@Mar.20,2013。下载后,需要解压到一个不含空格的路径,例如D:\cocos2d-x。解压后,目录结构包括源代码、文档和...
用ndk r9编译的ffmpeg2.2.4库,可以在android中通过jni方法调用, 头文件请自己到官网下载源代码
- **NDK支持**:cocos2d-x使用Android NDK进行原生代码编译,允许开发者利用C++编写游戏逻辑。 - **Android Studio集成**:可以通过Android Studio进行项目管理,与cocos2d-x命令行工具配合,实现快速开发。 6. *...
在cocos2d-x开发过程中,遇到“cocos2d-x x86 curl不能编译通过”的问题,这通常涉及到跨平台的库集成、编译环境配置和依赖库的兼容性问题。cocos2d-x是一个开源的游戏开发框架,而curl则是一个用于处理URL的强大的...
在本文中,我们将深入探讨如何使用cocos2d-x 3.6版本创建一个新的项目,并解决可能遇到的编译问题。 首先,我们要确保已经正确地安装了cocos2d-x 3.6的开发环境。这包括安装C++编译器(如Visual Studio)、Python...
4. 设置`NDK_MODULE_PATH`环境变量,包括Cocos2D-x库和第三方库的路径,中间用分号分隔。 5. 在`Windows` -> `Preferences` -> `Android` -> `NDK`中检查并输入NDK的路径。 修改Android.mk文件: 1. 在Android.mk...
cocos2d-x是一个用C++编写的2D游戏框架,它基于Python的cocos2d库,同时支持iOS、Android、Windows等多平台开发。它的核心功能包括场景管理、精灵(Sprite)动画、物理引擎、粒子系统、触摸事件处理等,使得开发者...