转载Cocos2d-x & NDK常见报错

本文详细介绍了Cocos2d-x与Android NDK开发过程中遇到的常见报错,并提供了针对性的解决方法。内容涵盖环境配置、权限问题、资源错误、代码修改、模拟器连接、文件访问权限、XML文件读取、触摸事件处理、库引入问题等,为开发者提供了一站式解决方案。

转载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安装 

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目录下的文件访问权限问题 
修改build_native.sh,将以下内容注释掉,然后从Resources目录手工复制相关资源到assets目录。 

Java代码  

# 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 

Java代码  

const char* CCFileUtils::fullPathFromRelativePath(const char *pszRelativePath, ccResolutionType *pResolutionType) {  

return "";  

}  


改为 

Java代码  

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 
增加以下方法: 

Java代码  

/** 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.com.cocos2dx.lib关于cocos2dx 2.0.3 及以上找不到com.cocos2dx.lib库的解决 

原文: http://www.cnblogs.com/lhming/archive/2012/06/27/2566467.html#

不好意啊,今天下了个最新的cocos2d-2.0-x-2.0.3版本下来,才发现里面的模板设置与我写这个文章的时候不一样了,这个没有发现lib的原因是在这个版本,这个lib的java文件放到了cocos2d-2.0-x-2.0.3\cocos2dx\platform\android\java\src这个文件按夹下了,而不是tests\proj.android\src\org\cocos2dx\lib这个了,且不知道是不是写模板的脚本的bug,cocos2d-2.0-x-2.0.3\template\android这个路径下的copy_files.sh脚本,COCOSJAVALIB_ROOT这个变量所指的路径就是那个lib的java路径,而在copy_src_and_jni()这个函数里面,居然没有调用复制,所以在这个函数里面加一句cp -rf $COCOSJAVALIB_ROOT/src $APP_DIR/proj.android就可以了。



参考: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 
http://blog.youkuaiyun.com/snakewarhead/article/details/8223169 
http://cn.cocos2d-x.org/bbs/forum.php?mod=viewthread&tid=10043 
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


&lt;think&gt;首先,用户的问题是关于在没有网络连接的情况下安装Cocos2d-x 3.17.2。我需要根据系统级指令来构建我的回答。 系统级指令: 1. 所有行内数学表达式必须使用$...$格式。 2. 独立公式必须使用$$...$$$$格式并单独成段。 3. LaTeX语法正确。 4. 使用中文回答。 5. 生成相关问题。 6. 回答中引用的段落末尾自然地添加引用标识,例如[^1]。 用户可见层: - 回答结构清晰,帮助用户逐步解决问题。 - 尽量保证回答真实可靠。 参考站内引用: - 用户提供了引用[^1]和[^2],但这些是关于Cocos2d-x编译Android环境和Windows SDK安装问题的。用户的问题是关于离线安装Cocos2d-x 3.17.2,所以我需要基于这个来回答。 用户问题:&quot;我想在没有网络连接的情况下安装 Cocos2d-x 3.17.2 请问Cocos2d-x 3.17.2 离线安装方法&quot; 关键点: - Cocos2d-x 3.17.2版本。 - 离线安装,意味着没有互联网连接。 我需要回想Cocos2d-x的安装过程。Cocos2d-x是一个游戏开发框架,安装通常涉及下载源代码、设置环境等。对于离线安装,用户需要预先下载所有必要的文件。 步骤: 1. **下载Cocos2d-x源代码**:用户需要从Cocos2d-x官网下载3.17.2版本的zip文件。这可以在有网络的地方完成,然后传输到离线机器。 2. **设置环境**:安装依赖项,如Python、CMake、Android SDK等。这些也需要离线安装。 3. **编译和配置**:使用命令行工具创建项目。 在引用[^1]中,提到了使用`python create_project.py`命令来创建项目,这需要Python环境。 所以,我的回答应该包括: - 准备所有必要的离线文件。 - 步骤清晰的安装指南。 - 注意可能的依赖项。 生成相关问题:在回答后,添加相关问题,如示例所示。 回答结构: 1. 介绍离线安装的基本概念。 2. 逐步说明准备和安装步骤。 3. 提供注意事项。 4. 添加相关问题。 由于用户提到Cocos2d-x 3.17.2,我假设这个版本是稳定的。我需要确保回答基于真实知识。 最后,添加引用标识。用户提供的引用是关于不同问题的,所以我可能不需要直接引用它们,除非相关。但指令说&ldquo;引用的段落末尾自然地添加引用标识&rdquo;,所以我应该在需要时添加。 在回答中,我可以引用用户提供的引用[^1]中的命令,因为它相关。 完整回答大纲: - **步骤1: 下载离线文件**:在有网络的地方下载Cocos2d-x 3.17.2 zip文件、Python安装程序、Android SDK(如果需要)、其他依赖。 - **步骤2: 传输到离线机器**。 - **步骤3: 安装依赖**:如Python、CMake等。 - **步骤4: 解压和设置Cocos2d-x**。 - **步骤5: 创建项目**:使用`python create_project.py`命令。 - **注意事项**:确保所有依赖是离线安装的版本;环境变量设置等。 相关问题: 1. 如何在没有网络的情况下更新Cocos2d-x? 2. Cocos2d-x 3.17.2的常见安装问题有哪些? 3. 如何为Cocos2d-x配置Android开发环境离线? 现在,构建回答。&lt;/think&gt;### Cocos2d-x 3.17.2 离线安装方法 Cocos2d-x 是一个跨平台游戏开发框架,离线安装需要在无网络环境中预先下载所有必要文件,并手动配置环境。以下是针对 Cocos2d-x 3.17.2 版本的详细离线安装步骤。整个过程分为准备阶段(在有网络的环境下完成)和安装阶段(在离线机器上执行)。确保您的系统满足基本要求:Windows、macOS 或 Linux 操作系统,至少 4GB 内存和 5GB 磁盘空间。 #### 步骤 1: 准备离线文件(在有网络的环境下操作) 在连接到互联网的机器上,下载所有必需的安装包和依赖项。Cocos2d-x 3.17.2 的核心是源代码包,但还需额外工具: - **下载 Cocos2d-x 源代码**:访问 [Cocos2d-x GitHub 发布页](https://github.com/cocos2d/cocos2d-x/releases),找到版本 3.17.2 的 zip 文件(例如 `cocos2d-x-3.17.2.zip`)并下载。 - **下载 Python**:Cocos2d-x 依赖 Python 2.7 或 Python 3.x 运行脚本。从 [Python 官网](https://www.python.org/downloads/) 下载离线安装包(如 Windows 的 `.exe` 文件或 macOS/Linux 的 `.pkg`/`.tar.gz`)。 - **下载 CMake**:用于编译项目。从 [CMake 官网](https://cmake.org/download/) 下载离线安装包(如 `cmake-3.26.4-windows-x86_64.msi`)。 - **下载 Android SDK(可选)**:如果您需要开发 Android 应用,下载 [Android Studio 离线包](https://developer.android.com/studio#downloads) 和 SDK 工具。确保包括 NDK(版本 r16b 或更高)和 JDK(Java Development Kit)。 - **其他依赖**: - 对于 Windows:下载 [Visual Studio 2017 离线安装包](https://docs.microsoft.com/en-us/visualstudio/install/create-an-offline-installation-of-visual-studio) 和 Windows SDK(版本 10.0.17134.0 或更高,避免包标识名含特殊符号如 &quot;-&quot;,以免导入错误)[^1]。 - 对于 macOS:安装 Xcode Command Line Tools(可从 Apple 开发者网站下载离线包)。 - 对于 Linux:下载 gcc、g++ 和 make 的离线包(通过发行版仓库的离线镜像)。 将所有下载的文件(zip、安装包等)保存到一个文件夹(例如 `Cocos_Offline`),然后通过 USB 或局域网传输到离线机器。 #### 步骤 2: 在离线机器上安装依赖 在离线机器上,先安装基础工具: 1. **安装 Python**: - 运行 Python 离线安装包(例如 Windows 的 `python-3.9.13.exe`)。 - 安装完成后,打开命令行,验证安装:输入 `python --version` 应显示版本号(如 Python 3.9.13)。 2. **安装 CMake**: - 运行 CMake 安装包(例如 Windows 的 `.msi` 文件)。 - 验证安装:命令行输入 `cmake --version` 应显示版本号。 3. **安装其他工具(可选)**: - 如果您需要 Android 开发:安装 Android Studio 和 SDK,并配置环境变量(如 `ANDROID_HOME`)。参考离线文档设置 NDK 和 JDK。 - 对于 Windows:安装 Visual Studio 2017 和 Windows SDK。如果遇到 SDK 安装失败(如错误 MSB8036),确保使用离线包版本匹配(如 10.0.17134.0)[^2]。 #### 步骤 3: 设置 Cocos2d-x 环境 1. **解压源代码**: - 将 `cocos2d-x-3.17.2.zip` 解压到目标目录(例如 `C:\cocos2d-x-3.17.2` 或 `/opt/cocos2d-x-3.17.2`)。 2. **配置环境变量**: - 添加 Cocos2d-x 根目录到系统路径: - Windows:命令行运行 `setx COCOS_CONSOLE_ROOT &quot;C:\cocos2d-x-3.17.2&quot;`(路径根据实际修改)。 - macOS/Linux:编辑 `~/.bash_profile` 或 `~/.zshrc`,添加 `export COCOS_CONSOLE_ROOT=/opt/cocos2d-x-3.17.2`。 - 重启命令行使变量生效。 3. **验证环境**: - 进入 Cocos2d-x 目录,运行测试命令:`python -V` 应显示 Python 版本,`cmake --version` 应显示 CMake 版本。 #### 步骤 4: 创建和编译项目 Cocos2d-x 使用 Python 脚本创建项目。在离线环境中,所有操作需手动完成: 1. **创建新项目**: - 打开命令行,导航到 Cocos2d-x 根目录下的 `tools/cocos2d-console/bin` 文件夹。 - 运行创建项目命令: ```bash python create_project.py -project MyGame -package com.mygame.org -language cpp ``` 其中: - `MyGame` 是您的项目名称。 - `com.mygame.org` 是包标识名(确保无特殊符号如 &quot;-&quot;,避免导入错误)[^1]。 - `-language cpp` 指定使用 C++(可选 `lua` 或 `javascript`)。 - 命令将在 `projects` 目录下生成 `MyGame` 文件夹。 2. **编译项目**: - 导航到项目目录:`cd projects/MyGame`。 - 编译平台特定版本: - **Windows**:运行 `cocos compile -p win32`(需 Visual Studio)。 - **Android**:运行 `cocos compile -p android`(需预先配置好 Android SDK 环境)。 - **macOS/iOS**:运行 `cocos compile -p mac` 或 `-p ios`。 - 编译输出文件(如 `.exe` 或 `.apk`)将生成在 `bin` 目录下。 #### 注意事项 - **依赖管理**:离线安装时,所有工具版本必须兼容。Cocos2d-x 3.17.2 推荐 Python 3.x、CMake 3.10+ 和 Android NDK r16b+。如果版本不匹配,可能导致编译失败。 - **常见问题**: - 如果创建项目时报错(如 Python 脚本错误),检查 Python 路径是否正确添加到系统变量。 - Android 编译问题:确保 `ANDROID_HOME` 和 `NDK_ROOT` 环境变量已设置,且 SDK 工具完整离线。 - Windows SDK 错误:参考离线文档解决 SDK 版本不匹配问题(如使用 `10.0.17134.0` 避免错误 MSB8036)[^2]。 - **性能优化**:离线安装速度取决于硬件,建议使用 SSD 磁盘加快解压和编译过程。大型项目编译可能耗时较长(例如 10-30 分钟)。 - **验证安装**:运行示例项目(如 `cocos2d-x/samples/Cpp/TestCpp`)测试框架是否正常工作。 通过以上步骤,您可以在无网络环境中成功安装 Cocos2d-x 3.17.2。此方法基于官方文档和社区实践,确保可靠性[^1][^2]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值