`
up2pu
  • 浏览: 224306 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cocos2d-x & NDK

阅读更多
------------------------
cocos2d-2.1beta3-x-2.1.0
android-ndk-r8c
------------------------

1.设置环境变量
cocos2d-2.1beta3-x-2.1.0\create-android-project.bat
set _CYGBIN=E:\software\dev\Android\cygwin\bin
set _ANDROIDTOOLS=E:\software\dev\Android\android-sdk-windows\tools
set _NDKROOT=E:\software\dev\Android\android-ndk-r8c

2.在新生成工程中设置环境变量
cocos2d-2.1beta3-x-2.1.0\Cocos2dxTest\proj.android
export NDK_ROOT=/cygdrive/e/software/dev/Android/android-ndk-r8c/

3.安装GNU make
Cygwin_setup.exe-》搜索make-》选择GNU make安装
All Default-》Devel Default-》make: The GNU version of the 'make' utility-》点击“Skip”选择版本安装

4.权限错误
cc1plus.exe: fatal error: jni/hellocpp/main.cpp: Permission denied
工程目录-》右键-》属性-》安全-》所有用户-》完全控制-》高级-》更改权限-》使用可从此对象继承的权限替换所有子对象权限

5.引用cocos2d-2.1beta3-x-2.1.0\cocos2dx\platform\android\java错误“Cocos2dxActivity cannot be resolved to a type ”
cocos2d-2.1beta3-x-2.1.0\Cocos2dxTest\proj.android\project.properties中会记录引用的资源:android.library.reference.1=../../cocos2dx/platform/android/java

可以把cocos2d-2.1beta3-x-2.1.0\cocos2dx\platform\android\java当做一个工程导入eclipse和Cocos2dxTest并列

6.OpenGL ES版本问题
系统方面,从Android 2.2开始支持OpenGL ES 2.0,但还需要硬件支持。
OpenGL ES 2.0:cocos2d-2.1beta3-x-2.1.0
OpenGL ES 1.1:cocos2d-1.0.1-x-0.13.0-beta


---------------------------
cocos2d-1.0.1-x-0.13.0-beta
android-ndk-r8c
---------------------------

7.资源错误
Description Resource Path Location Type
error: Error: No resource found that matches the given name (at 'icon' with value '@drawable/icon'). AndroidManifest.xml /MyCocos2dx line 9 Android AAPT Problem
AndroidManifest.xml中
<application android:label="@string/app_name" android:icon="@drawable/icon">
改为
<application android:label="@string/app_name" android:icon="@drawable/ic_launcher">

8.代码修改后每次都全部编译问题
android-ndk-r8c\build\core\definitions.mk
大约289行,$1: $$(__ndk_file_dir),改为:$1: | $$(__ndk_file_dir),r8c版本


9.win7下重新编译后assets目录下的文件访问权限问题
修改cocos2d-1.0.1-x-0.13.0-beta\BombCocos2dx\android\build_native.sh,将以下内容注释掉,然后从Resources目录手工复制相关资源到assets目录。
# make sure assets is exist
#if [ -d $GAME_ANDROID_ROOT/assets ]; then
#    rm -rf $GAME_ANDROID_ROOT/assets
#fi

#mkdir $GAME_ANDROID_ROOT/assets

# copy resources
#for file in $RESOURCE_ROOT/*
#do
#    if [ -d $file ]; then
#        cp -rf $file $GAME_ANDROID_ROOT/assets
#    fi
#
#    if [ -f $file ]; then
#        cp $file $GAME_ANDROID_ROOT/assets
#    fi
#done


10.模拟器经常连不上
Device Disconnected
window -> Show Views -> device -> view menu -> Reset adb

11.get data from file(assets/) failed
cocos2d-1.0.1-x-0.13.0-beta的bug
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType) {
return "";
}

改为
const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType) {
return pszRelativePath;
}


12.新增一个类,报undefined reference to...错误
cocos2d-1.0.1-x-0.13.0-beta\MyProject\android\jni\Android.mk
增加新加的类

13.读取xml文件
参考Himi的xml读取方案。但是依赖于cocos2d-x新版本,如果使用cocos2d-1.0.1-x-0.13.0-beta,需要修改如下文件:
E:\software\dev\cocos2d\cocos2d-1.0.1-x-0.13.0-beta\cocos2dx\include\CCString.h
增加以下方法:
    /** get the C string */
    const char* getCString() const 
    {
    	return m_sString.c_str();
    }


14.触摸报错
error: 'class cocos2d::CCTouch' has no member named 'view'
CCPoint location = touch->locationInView(touch->view());
改为
CCPoint location = touch->locationInView();

15.Cygwin fork错误
2 [main] sh 3132 child_info_fork::abort: E:\software\dev\Android\cygwin\bin\cygiconv-2.dll: Loaded to different address: parent(0x490000) != child(0x2F0000)
/cygdrive/e/software/dev/Android/android-ndk-r8c/ndk-build: fork: Resource temporarily unavailable
因为Cygwin在Windows下对fork()无法完全模拟,所以有的时候会出现问题,重新启动操作系统即可。

16.Android NDK错误
/cygdrive/e/software/dev/Android/android-ndk-r8c/build/core/add-application.mk:128: Android NDK: WARNING: APP_PLATFORM android-14 is larger than android:minSdkVersion 7 in ./AndroidManifest.xml

Eclipse 3.7 & Eclipse 4.2: Window -> Preferences -> C/C++ -> Build -> Settings
Eclipse 3.6: Window -> Preferences -> C/C++ -> Build
选择CDT GNU C/C++ Error Parser
在Error Parser options中最上面添加如下内容:

Severity: Warning
Pattern: (.*?):(\d+): Android NDK: WARNING:(.*)
File: $1
Line: $2
Description: $3

17.提示如下错误
Description Resource Path Location Type
E:\software\dev\cocos2d\cocos2d-1.0.1-x-0.13.0-beta\MyProject\android/build_native.sh: line 7: $'\r': command not found MyProject C/C++ Problem

因为Windows下的换行是<LF><CR>,Linux下是<LF>,Mac下是<CR>。在Cygwin下执行如下即可:
$ dos2unix build_native.sh
dos2unix: converting file build_native.sh to Unix format ...

18.CDT 8.0.2 for Eclipse Indigo
http://download.eclipse.org/tools/cdt/releases/indigo

19.莫名其妙出现大量如下错误
Description Resource Path Location Type
Type 'std::string' could not be resolved MyClass.h /MyProject/MyProject_Classes line 40 Semantic Error

有很多类似的“could not be resolved”错误
可能是Eclipse的bug,回退到Eclipse 3.6 sr2解决问题
https://bugs.eclipse.org/bugs/show_bug.cgi?id=353719

---------------------------------------------------
PureMVC C++不支持Android
https://code.google.com/p/libpuremvc/issues/detail?can=2&start=0&num=100&q=&colspec=ID%20Type%20Status%20Priority%20Milestone%20Owner%20Summary&groupby=&sort=&id=3
---------------------------------------------------
20.使用puremvc-cpp-multicore
Mingw32中运行:mingw32-make -f makefile.mgw
mingw32-make -f makekfile.mgw DEBUG=1(DEBUG版)
报如下错误:
include/PureMVC/Interfaces/IAggregate.hpp:36:21: error: 'unique_ptr' in namespace 'std' does not name a type

修改makefile.mgw
CXX = g++ 改为 CXX = g++ -std=c++0x


报错:gcc: error: CreateProcess: No such file or directory
PATH环境变量中添加:E:\software\dev\MinGW\libexec\gcc\mingw32\4.6.2

报错:gcc: fatal error: -fuse-linker-plugin, but liblto_plugin-0.dll not found

改为在Cygwin中安装mingw-gcc-g++,运行正常。

21.通过Cygwin+NDK编译puremvc出现问题
改为使用MinGW,报错:
non-numeric second argument to `wordlist' function: '
需要修改 __gmsl文件的第512行
把nt_encode = $(__gmsl_tr1)$(wordlist 1, $1,$(__gmsl_input_int))
改成:
int_encode = $(__gmsl_tr1)$(wordlist 1,$(words $1),$(__gmsl_input_int))即可。
PATH:E:\software\dev\MinGW\bin;E:\software\dev\MinGW\libexec\gcc\mingw32\4.6.2;E:\software\dev\MinGW\msys\1.0\bin;
路径:build_native.sh 中/cygwin/e改为 /e

22.eclipse换个机器有些插件就不好使了
清除eclipse\configuration\org.eclipse.update重新启动eclipse
另外,有些插件依赖于jdk 1.6,比如ADT

参考:
设置开发环境:http://www.jesusbosch.com/2012/06/how-to-set-up-android-and-win32-cocos2d.html
http://www.raywenderlich.com/11283/cocos2d-x-for-ios-and-android-getting-started
please define NDK_ROOT:http://blog.csdn.net/snakewarhead/article/details/8223169
每次只编译修改的文件:http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=10043
Eclipse连不上模拟器:http://www.cnblogs.com/over140/archive/2010/08/06/1793264.html
http://www.cocos2d-x.org/boards/6/topics/9944
http://blog.molioapp.com/2011/11/openfeint-and-admob-integrated-with.html
支持多分辨率:http://www.himigame.com/android-game/799.html
Himi xml:http://www.himigame.com/iphone-cocos2dx/694.html
Cygwin FAQ:http://cygwin.com/faq-nochunks.html#faq.using.fixing-fork-failures
Android NDK问题:http://code.google.com/p/android/issues/detail?id=39752
分享到:
评论

相关推荐

    cocos2d-x_v3.16安装及环境变量配置文档

    cocos2d-x 是一个开源的游戏开发框架,使用 C++ 语言编写,支持多平台发布,包括 iOS、Android、Windows、macOS、Linux 和 Web。cocos2d-x v3.16 是该框架的一个版本号,本文档主要介绍了该版本的安装流程以及环境...

    cocos2d-x-3.13.1 spine3.6.zip

    《Cocos2d-x 3.13.1与Spine 3.6集成详解》 Cocos2d-x是一个广泛使用的开源游戏开发框架,它基于C++,同时支持Lua和JavaScript等多种脚本语言,为开发者提供了高效、跨平台的游戏开发解决方案。在3.13.1版本中,...

    Android Cocos2d-x 环境配置

    将其解压缩到指定目录,如`E:\Cocos2d-x\android-ndk-r8e-windows-x86\android-ndk-r8e`。 4. **Cocos2d-x**:游戏引擎本身。这里是cocos2d-x-2.2.2版本。下载并解压后,你可以使用它提供的工具和库来创建、构建和...

    cocos2d-x-android环境搭建文档

    在Eclipse中配置Cocos2d-x项目,你需要设置项目的NDK路径和Ant构建脚本。NDK是Android的Native Development Kit,用于处理C/C++代码。Ant是Apache的一个构建工具,Cocos2d-x使用它来编译项目。确保Eclipse的Android ...

    cocos2D-x3.10安装

    【Cocos2D-x3.10安装】和【Win10中安装VS2015配置Cocos2D-x3.10】涉及到的是在Windows 10系统上搭建Cocos2D-x游戏开发环境的过程,特别是针对Cocos2D-x版本3.10的配置。这个过程相对复杂,因为不仅需要安装Cocos2D-x...

    cocos2d-x--simple-Game.rar_cocos2d_cocos2d-x

    1. **环境配置**:安装cocos2d-x开发环境,包括安装Visual Studio、Git、Python等必要工具,并配置好NDK和SDK环境。 2. **项目创建**:使用cocos命令行工具生成新的项目模板,这将自动生成基本的目录结构和初始化...

    flappy bird 基于cocos2d-x 3.8

    1. **环境配置**:首先,你需要在你的计算机上安装Cocos2d-x 3.8开发环境,这包括设置好C++编译器、NDK(Android Native Development Kit)和JDK(Java Development Kit),并确保所有依赖项正确配置。 2. **项目...

    cocos2d-x_Android_环境配置手册

    ### 知识点一:Cocos2d-x简介 Cocos2d-x是一个开源的游戏开发框架,用于构建2D游戏、交互式图书、演示和其他图形界面应用。它支持多种平台,包括Android、iOS、Windows和Mac等。Cocos2d-x使用C++作为主要编程语言,...

    cocos2d-x 11-10-20发布的

    - **NDK支持**:cocos2d-x使用Android NDK进行原生代码编译,允许开发者利用C++编写游戏逻辑。 - **Android Studio集成**:可以通过Android Studio进行项目管理,与cocos2d-x命令行工具配合,实现快速开发。 6. *...

    第四课:Cocos2D-X跨平台开发环境搭建(win32)

    【Cocos2D-X 跨平台游戏开发环境搭建详解(Win32)】 Cocos2D-X 是一个广泛使用的开源游戏开发框架,它允许开发者创建跨平台的游戏,支持iOS、Android、Windows等操作系统。本教程将详细介绍如何在Windows环境下...

    创建Cocos2d-x项目和导入Eclipse成功运行方法

    4. 设置`NDK_MODULE_PATH`环境变量,包括Cocos2D-x库和第三方库的路径,中间用分号分隔。 5. 在`Windows` -&gt; `Preferences` -&gt; `Android` -&gt; `NDK`中检查并输入NDK的路径。 修改Android.mk文件: 1. 在Android.mk...

    python创建cocos2d-x项目代码

    ### Python 创建 Cocos2d-x 项目的代码详解 在游戏开发领域,Cocos2d-x 是一个非常流行的跨平台框架,支持多种编程语言,包括 C++ 和 Python。本篇文章将详细解析如何通过 Python 脚本来创建一个 Cocos2d-x 项目,...

    cocos2d-x android 环境搭建和编译文档

    4. **Android NDK**:Cocos2d-x需要Android Native Development Kit(NDK)来编译C/C++代码。你可以从Google官方站点下载NDK,并将其解压到一个方便访问的位置。 5. **Cocos2d-x**:从Cocos2d-x官网下载最新稳定版...

    ndk-stack调试 cocos2d-x

    ndk-stack 调试 cocos2d-x ndk-stack 是一个强大的命令行调试工具,用于调试 Native 代码,especially for Android 平台的.so 库文件。下面我们来详细了解 ndk-stack 在 cocos2d-x 中的应用。 什么是 ndk-stack? ...

    Cocos2d-x教程视频Cocos2d-x功能扩展-C++-Cocos2d-x-Android-iOS混合编程与NDK开发环境

    Cocos2d-x教程视频Cocos2d-x功能扩展-C++-Cocos2d-x-Android-iOS混合编程与NDK开发环境搭建提取方式是百度网盘分享地址

    cocos2d-x 3.6创建项目代码

    Cocos2d-x是一款开源的游戏开发框架,广泛用于2D游戏、实时预览、互动媒体应用等开发。在本文中,我们将深入探讨如何使用cocos2d-x 3.6版本创建一个新的项目,并解决可能遇到的编译问题。 首先,我们要确保已经正确...

    cocos2d-x配置教程,主要关于移植android

    3. **NDK**:Native Development Kit,用于处理原生代码,如cocos2d-x的C++部分。从Android开发者网站下载并解压。 4. **Cygwin**:提供一个类Unix的环境,使得在Windows上可以执行Linux命令。在配置cocos2d-x时,...

    根据html5改变的一个c++游戏 cocos2d-x2.2.3 已在Eclipse上能打包,含有apk文件

    2. 导入Cocos2d-x项目:将"proj.android"导入Eclipse,配置NDK路径,建立项目与Cocos2d-x库的链接。 3. 编译与调试:在Eclipse中编译源码,通过Cocos2d-x的预处理命令,生成Android.mk和Application.mk文件,调用NDK...

    cocos2dx_study.rar_cocos2d-x_cocos2d-x实例_cocos2dx

    《cocos2d-x手机游戏开发》 Cocos2d-x是一个开源的游戏开发框架,它基于C++,但同时也支持Lua和JavaScript等脚本语言,让开发者能够快速地创建跨平台的游戏。本资料集合旨在为初学者提供一个全面的cocos2d-x学习...

    Cocos2d-x Android.mk文件自动修改器

    在Android平台上,构建Cocos2d-x项目时,开发者需要配置`Android.mk`文件,这是一个Makefile,用于指示Android NDK如何编译和链接C++源代码。然而,手动编辑`Android.mk`文件可能既耗时又容易出错。为了简化这一过程...

Global site tag (gtag.js) - Google Analytics