当前位置:首页 » 编程软件 » 编译cocos2d

编译cocos2d

发布时间: 2023-05-15 00:01:46

‘壹’ cocos2dx怎么编译到android

如果你用的是windows系统作为开发环境,使用的是cocos2d-x3.2最新版的,你在一开始安装cocos2d-x的时候,会要求输入
NDK_ROOT
ANDROID_SDK_ROOT
ANT_ROOT
最新版的cocos2d-x使用了python来进行安装和编译程序的,所以你要先在你的windows系统上安装上python.安装好之后,下载最新版的cocos2d-x,然后,cd到这个目录下,你会看到一个有一个setup.py的文件,.py后缀的文件就是python的脚本文件了。是要用python来运行的。如果你安装好python之后设置好了python的环境变量,这个时候,你只要在命令行里运行:
python setup.py就可以了。
然后你就可以看到要求你输入的这三个路径了。
这三个工具的所在路径,这几个路径输入对了之后,你的cocos2d-x就安装好了,这个时候,在cmd里创建一个新项目,创建的方法是在命令行里输入:
cocos new youprojectname -p com.youcom,youprojectname -l cpp -d 你的新建项目所在路径
然后回车,你就可以看你的的项目会在你的新建项目路径下有一个youprojectname的文件夹,打开,你就可以看到里边有各个系统的project文件夹了,还有一个Class和Resources的文件夹。这个时候,你在命令行里cd到你的proj.android文件夹下,使用命令:
python bulid_native.py
就可以对你的安卓新建的helloworld项目进行编译了。不出意外,要不然一分钟就编译好了。会生成一个libcocos2dcpp.so在你的pro.android/libs/armabi的路径下。然后打开你的ADT,也就是eclipse,进入pro.android目录,导入android项目到eclipse。这个时候可能会报一个cocos2d-x的lib库错误,只要把cocos2d-x的
cocos2d/cocos/platform/android/java/src
目录下的文件夹复制到pro.android/src下就可以解决这个问题了。
然后,接上你的android手机,并且在手机中打开开发者模式。点击程序远行设置,选择使用设备运行。在弹出的一个选择手机设备的框时选择run,不一会,你的helloworld项目就可以在手机上看到了。
如果要调试,你可以在eclipse中打开logcat,看到cocos2d-x的log输出信息。
总的来说,android最好的开发环境还是mac系统。因为在mac系统下很多linux命令都可以使用。不像windows系统比较蹩脚。

‘贰’ 请教高手cocos2dx编译的问题

操作方法如下:
make: 进入目录“/cygdrive/e/cocos2d-x-2.1.4/Balloon/proj.android”

Compile++ thumb : game_shared <= AppDelegate.cpp
In file included from jni/../../Classes/AppDelegate.cpp:6:0:
jni/../../Classes/main.h:8:19: fatal error: tchar.h: No such file or directory
compilation terminated.
/cygdrive/f/Android/android-ndk-r9/帆辩build/core/build-binary.mk:348: recipe for target `obj/肢轿丛local/armeabi/objs/game_shared/__/__/Classes/AppDelegate.o' failed
make: *** [obj/历樱local/armeabi/objs/game_shared/__/__/Classes/AppDelegate.o] Error 1
make: 离开目录“/cygdrive/e/cocos2d-x-2.1.4/Balloon/proj.android”

‘叁’ cocos2dx 3.16怎么编译

先给自己科普一下, android sdk 是给java开发者用的, 咱C++开发者用的是android ndk, 所以就是使用ndk来编译cocos2dx程序了

使用命令行创建一个项目, 我这里创建的是一个lua项目:cocos new lua_proj2 -p com.company_name.program_name -l lua -d d:\xxx\xxx
此时创建了一个DEMO程序, 此时就可以使用cocos命令生成一个apk包, 进入到目录lua_proj2\frameworks\runtime-src下面, 在此目录下面执行命令cocos compile -p android 就会生成一个apk包, 把这个拖到genymotion上面, 就安装跑起来了.
上面说的是不使用eclipse的方式来生成一个apk包, 下面记录一下在eclipse中加载lua_proj2这个项目, 并生成apk包的过程. 为什么一定要将cocos2dx项目导入到eclipse中来生成apk包呢, 因为在eclipse中可以连接AVD来调试android程序, 再者, eclipse可以运行在linux环境下面, 后面我打算在linux进行开发, 所以这一步是一定要跨出去的

打开eclipse, 加载lua_proj2项目, 在此注意一下, 不需要加载libcocos2dx这个项目, 只要加载lua_proj2这个自己新建一项目即可
在eclipse中右击lua_proj2 -> Properties. 出现Properties for lua_proj2框框

创建一个新的builder

第一个红框是builder名称, 随便填写, 第二个红框框是NDK生成工具, 即, 使用此工具来编译C++项目, 第三个红框框是工作目录, 此处我使用lua_proj2项目目录作为工作目录, 切换到Environment选项卡, 新建一个在此生成器中使用的环境变量NDK_MODULE_PATH, 值是......\lua_proj2\frameworks\cocos2d-x\cocos;......\lua_proj2\frameworks\cocos2d-x;......\lua_proj2\frameworks\cocos2d-x\external, 前面的.......是绝对目录的省略, 这里要输入绝对路径名称, 在此我就不写绝对路径了.

一路OK下去, 到下面这个画面

这个就新建立的builder, Project->Build Project

出现大量的error: 'override' does not name a type错误, 这是由于NDK的版本太低了, override是C++11中才有的关键字, 而到NDKr10才支持C++11, 所以要升级NDK. 到官网去下载吧
不大, 400多M的样子, 更新完成之后, 看一下ndk\toolchains目录下面的编译器, 我的目录是下面这样子的

我很想使用clang来编译, 但是现阶段我还不会配置, 就用GCC吧, x86-4.6 & x86-4.8两个版本的GCC, 4.8的支持C++11
在Application.mk中添加一句NDK_TOOLCHAIN_VERSION = 4.8 就是指定使用GCC4.8来编译cocos2dx项目, 跑起来了, 下面是eclipse跑起来的console输出

跟命令行下执行cocos compile -p android 跑出来的是一样的, 都是在编译程序. 下面进入到在eclipse下面调试程序

‘肆’ 如何使用 CCache 进行 Cocos2d-x 编译加速

CCache是C/C++的编译器缓存。当相同的编译被再次编译时,进行检测并通过之前编译的缓存进行编译加速。所以我们可以通过这种方法给Cocos2d-x Android的编译加速。使用这种方法,在i7 CPU的Macbook Pro Retina上编译,我们的Cocos2d-x Android工程编译时间可以从10分钟减少到30秒!!
注意:以下操作仅对Mac OS X有效。
我们使用homebrew:
brew
install --HEAD ccache
或者通过源码安装:
git
clone ht tps:/ /github.co m/jrosd ahl/ccache.git
cd
ccache
./autogen.sh
./configure
make
make
install
cp
/usr/local/bin/ccache /usr/bin/
注意:默认的安装路径是 /usr/local/bin,我们需要拷贝ccache到/usr/bin/,不然ndk-build会找不到并报错
如果终端报错说找不到autoheader,这说明我们需要先安装automake:
brew
install automake
但是,如果如果报错是说找不到brew,我们就必须先安装brew:
ruby
-e "$(curl
-fsSL
确保ccache的路径可以被$PATH识岩吵别,运行命令:
ccache
如果你看到帮助信息,恭喜你,安装成功了!
在android上配置编译环境
我们必须先设置以下环境变量来使用ccache:
vim
~/.bash_profile
Add
following lines:
export
USE_CCACHE=1
export
NDK_CCACHE=/usr/local/bin/ccache
运行命令行:
ccache
-M 10G
这个命令将缓存大小设置为10G。当然,如果你的硬盘有足够的空间,你也可以将此设置为50G。
然后,我们跳转到NDK目录,如果你忘了这个路径,你可以使用以下命令来查看:
which
ndk-build
以下是我的输出结果:
/developer/android/android-ndk-r9b/ndk-build
所以,我的NDK_ROOT是:
/developer/android/android-ndk-r9b
打开文件粗厅侍:$NDK_ROOT/build/core/default-build-commands.mk
找到以下章节并加入ccache,如下:
ifneq
($(findstring ccc-analyzer,$(CC)),)
TARGET_CC
= $(CC
else
TARGET_CC
= ccache $(TOOLCHAIN_PREFIX)gcc #Add ccache support
endif
TARGET_CFLAGS
=
TARGET_CONLYFLAGS
=
ifneq
($(findstring c++-analyzer,$(CXX)),)
TARGET_CXX
= $(CXX)
else
TARGET_CXX
= ccache $(TOOLCHAIN_PREFIX)g++ #Add ccache support
endif
TARGET_CXXFLAGS
= $(TARGET_CFLAGS) -fno-exceptions -fno-rtti
编译cocos2d-x游戏伏搜
选择cocos2d-x根目录,运行:
python
build/android-build.py -p 10 cpp-tests
新建一个终端窗口,运行:
ccache
-s
这个命令会打印出ccache状态,如下:
cache
directory /Users/heliclei/.ccache
primary
config /Users/heliclei/.ccache/ccache.conf
secondary
config (readonly) /usr/local/etc/ccache.conf
cache
hit (direct) 13588
cache
hit (preprocessed) 11145
cache
miss 696
called
for
link 1
called
for
preprocessing 14
preprocessor
error 1
can't
use precompiled header 129
no
input file 5
files
in cache 32222
cache
size 5.4 GB
max
cache size 30.0 GB
如果缓存的高速缓存命中(cache hit)和缓存大小(cache size)均为0,这就表示ccache没有运行,我们必须从新检查配置。
在Xcode中部署
配置Xcode(5.1)的ccache环境有点麻烦。我确实能调用ccache,但貌似没有增加编译速度。如果你有好的方法解决这个问题,请到github上为本篇教程提交pr!不过我们还是看看设置方法:
首先,我们添加2个自定义宏(user-defined macros)到cocos2d_libs的编译选项中:
CC=$(SOURCE_ROOT)/../tools/xcode_ccache_wrapper
LDPLUSPLUS=$(DT_TOOLCHAIN_DIR)/usr/bin/clang++
然后,我们需要在$(COCOS2dX_ROOT)/tools/路径下创建名为xcode_ccache_wrapper的脚本:
#!/bin/bash
export
CCACHE_CPP2=yes

‘伍’ cocos2d-x 交叉编译的问题

或帆樱许是灶穗权限问题,可以试试修改一下项目的权限,改成 “隐轿卜完全控制”,并且将hellocpp文件夹属性的 “只读” 去掉。

‘陆’ 把cocos2d-x程序编译成Android程序时出错,怎么解决啊

要使用NDK进行交叉编译,NDK编译步骤:
1.选择 ndk 自带的例子 hello-jni ,我的位于E:\android-ndk-r5\samples\hello-jni( 根据具体的安装位置而定 ) 。
2.运行 cygwin ,输枣冲码入命令 cd /cygdrive/e/判伍android-ndk-r5/samples/hello-jni ,进入到 E:\android-ndk-r5\samples\hello-jni 目录。
3.输入 $NDK/ndk-build ,执行成功后凳哪,它会自动生成一个 libs 目录,把编译生成的 .so 文件放在里面。 ($NDK是调用我们之前配置好的环境变量, ndk-build 是调用 ndk 的编译程序 )
4.此时去 hello-jni 的 libs 目录下看有没有生成的 .so 文件,如果有,ndk 就运行正常啦。

‘柒’ cocos2dx在windows下开发怎么编译成apk

下面一段是网络的说明:
Cocos2d-x 是一个支持多平台的 2D 手机游戏引擎,使用 C++ 开发,基于OpenGL ES,基于Cocos2d-iphone,支持 WOPhone, iOS 4.1, Android 2.1 及更高版本, WindowsXP & Windows7,WindowsPhone 8.[1]Cocos2d-x是一个开源的移动2D游戏框架,MIT许可证下发布的。这是一个C++ Cocos2d-iPhone项目的版本。Cocos2d-X发展的重点是围绕Cocos2d跨平台。Cocos2d-x提供的框架外,手机游戏,可以写 在C++或者Lua中,使用API是Cocos2d-iPhone完全兼容。Cocos2d-x[2]项目可以很容易地建立和运行iOS,Android 的三星Bada,黑莓Blackberry操作系统和更多。Cocos2d-x还支持Windows、Mac和Linux等桌面操作系统,因此,我们可以 编写的源代码很容易在桌面操作系统中编辑和调试。

总的来说,cocos2dx的android交叉编译环境还是蛮麻烦的。下面内容就是我一步一步实现的过程。
第一部分 安装
一、Cygwin安装
这个安装比较简单,网上也有大把的例子,这里我只是简述一下。
首先去官网www.cygwin.com下载安装,安装包分32位和64位两种.视情况选择了。因为只是编译,这里选择的是32位版本。
下载地址:http://cygwin.com/setup-x86.exe
然后默认安装,在安装源的时候,选择
http://mirrors.sohu.com/cygwin 或 http://mirrors.163.com/cygwin ,哪个好用,就哪个。
安装的时候,把开发包都选上就可以了。
我这里是把cygwin安装在c:\cygwin目录下面了。
注:这里默认的vi不是我们常用的vim,使用起来会很不习惯,你可以根据实际情况下载,在安装的时候,选择编辑器的vim,然后就可以用了。如果没有vim,你用的时候在vi命令行输入set nocp,就可以正常习惯使用了。
二、 adt-bundle安装
现在adt-bundle都集成了下面的功能,这样就不用再去配置eclipse插件了。
l Eclipse + ADT plugin
l Android SDK Tools
l Android Platform-tools
l The latest Android platform
l The latest Android system image for the emulator
下载地址:
Adt-bundle也同样分32位和64位的,在这里照样下载32位的版本
http://dl.google.com/android/adt/adt-bundle-windows-x86-20131030.zip。64位的地址我也加上http://dl.google.com/android/adt/adt-bundle-windows-x86_64-20131030.zip
下载完成后,解压就可以使用。我这里是解压到e:\adt-bundle
里面有eclipse,sdk两个目录和一个SDK Manager管理软件。运行SDK Manager可以下载你需要的SDK版本。
注意:你下载的java也要对应的32位和64位的环境,否则eclipse将会启动不了。牢骚一句,oracle把java和mysql并入后,真是开源的最大悲剧。你去下载它,就明白了。祝愿oracle早点倒闭。
三、ndk安装
下载地址:
32位下载地址
http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86-legacy-toolchains.zip
http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86.zip
64位下载地址
http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86_64-legacy-toolchains.zip
http://dl.google.com/android/ndk/android-ndk-r9b-windows-x86_64.zip
然后解压就可以了,我这里解压到
E:\android-ndk-r9b
四、cocos2dx安装
我这里下载的版本是cocos2dx v2.2。同时还有一个免费的编辑器CocoStudio,它提供了UI和动画,资源编辑功能。可以不用mac下面那个收费的软件了。
今天突然http://www.cocos2d-x.org/怎么都下载不了,没办法,只好到https://github.com/cocos2d/cocos2d-x/这里下载了。找到对应的2.2版本。
Cocos2dx下载地址:
https://codeload.github.com/cocos2d/cocos2d-x/zip/cocos2d-x-2.2
Cocostudio下载地址:
http://d001.download.appget.cn/CocoStudio/DownLoad/v1.0.0.1/CocoStudio_Full_V1.0.0.1.exe
然后cocostudio默认安装就可以了,我这里把cocos2dx解压到e:/cocos2dx
五、python安装
因为,cocos2dx创建工程,需要python,所以这里还需要下载python,去他的官网http://www.python.org/下载就可以了
下载地址:
http://www.python.org/ftp/python/2.7.5/python-2.7.5.msi 这个下载32位版本就可以了。然后默认安装。我这里安装到了C:\Python27
六、ant安装
这个是一个将软件编译、测试、部署等步骤联系在一起加以自动化的一个工具,大多用于Java环境中的软件开发。这里在生成apk的时候,也用到了。所以也要下载安装。
http://mirrors.cnnic.cn/apache//ant/binaries/apache-ant-1.9.2-bin.zip
解压到c:\ant就可以了
到这里,所以需要的软件,都已经下载,并安装了。
第二部分:配置
第一步:新建环境变量
点windows的开始菜单-〉计算机 右键菜单选择属性,弹出属性对话框。然后选择高级系统设置,如下图

然后选择环境变量
增加
ANT_HOME=C:\ant
PYTHON_HOME=C:\Python27
JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_16
NDK_ROOT=E:\android-ndk-r9b
ANDROID_SDK=E:\adt-bundle\sdk
然后编辑环境变量path,追加 %JAVA_HOME%\bin;%ANT_HOME%\bin;%PYTHON_HOME%;%NDK_ROOT%;%ANDROID_SDK%\tools;%ANDROID_SDK%\platform-tools;
这样,就可以在CMD窗口执行相关的命令了。
第三部分 cocos2dx的工程准备
第一步:增加android_update.bat
在ant生成apk的时候,会需要知道,你编译的目标是什么版本和src.dir等信息。创建这个工程,就是为了自动更新它。批处理的内容是
android update project -p . -t android-10
该文件建好后,命名为android_update.bat,放在E:\cocos2dx\template\multi-platform-cpp\proj.android
注意,请先确认你的ANDROID_SDK是否安装了对就的版本,android-10是对应的是android2.3,其他的版本请用对应的数字。执行e:\adt-bundle\SDK Manager.exe,如下图所示:

这里的数字是19
那么批处理的内容改为
android update project -p . -t android-19
第二步:修改build_native.sh
该文件在E:\cocos2dx\template\multi-platform-cpp\proj.android目录中,因为在执行build_native.sh的时候,会出现的权限的问题,所以在这个脚本中,增加了权限设置,来解决这个问题。
在第67行后面,也就是复制资源的后面增加下面一行
chmod 666 -R "$APP_ANDROID_ROOT"/assets就可以了。如下图所示

第三步,创建工程复制批处理
在cocos2dx的2.2中,已经少了一些批处理来创建工程,现在全部改用python来创建工程。
现在到E:\cocos2dx\tools\project-creator下,创建一个批处理demo.bat,内容如下
python create_project.py -project %~n0% -package com.android.zdhsoft -language cpp
x ..\..\cocos2dx\platform\android\java\src\* ..\..\projects\%~n0%\proj.android\src /E
上面批处理的
第一行的意思是,建一个工程为%~n0%的工程,包名是com.android.zdhsoft,使用的语言是cpp。%~n0%在批处理表示的是 批处理的文件名,在demo.bat中,%~n0%的值是demo。使用该批处理的好处是,如果建议某一个工程,只有把批处理复制一个,然后重新命名就可 以了。如命名为sample.bat,执行后,就可以行到一个sample的cocos2dx工程。
创建的工程在E:\cocos2dx\projects目录中。
第二行的意思,复制编译andiroid工程需要的java文件。否则编译的时候,会提示找不到对应的类。

‘捌’ 如何在Ubuntu下编译生成自己创建的Cocos2dx项目

刚开始对makefile不熟悉,结果弄了好久才弄好,在这里记录一下,顺便也给那些有需要的人做一个参考,不要走太多的弯路。
首先运行create-android-project.sh创建一个新的项目,我比较喜欢把项目放在一起,比较好管理,所以我把新建的项目移动到当前用户目录下的Projects/Cocos2dx目录下。
然后进入proj.Android/jni目录下,打开Android.mk,修改如下:将:COCOS2DX_ROOT="$DIR/../.."
改为:COCOS2DX_ROOT="$DIR/../../../../cocos2d-x-2.1.5/" #相对于当前目录的cocos2d-x的目录,这是我的目录
修改完成后保存以后就可以运行build_native.sh编译Android下的项目了,如果提示NDK_ROOT没有设置的话就使用export NDK_ROOT=(你的NDK的目录,同样也是相对于当前目录的位置枯裤),例如我的是export NDK_ROOT = ../../../../Android/ndk-r9
如果想在Ubuntu下直接编译运行的话,就按下面的方法:
先新建一个项目下新建一个文件夹proj.linux,然后在proj.linux下新建一个main.cpp文件,内容如下:#include"
../Classes/AppDelegate.h"#include"cocos2d.h"#include<stdlib.h#include<stdio.h#include<unistd.h#include<string
USING_NS_CC;intmain(intargc,
char**argv){AppDelegate app;CCEGLView*elgView =CCEGLView::sharedOpenGLView();elgView-setFrameSize(800,
480);returnCCApplication::sharedApplication()-run();}View Code这个代码同样,可以直接在例子中直接复制过来。
接着在proj.linux下新建一个Makefile,内容如下(也可以直接从cocos2d-x中的例子中复制一个过来,然后按自己的项差迹目修改):
EXECUTABLE =
newpathtest #要生成的目标的名字INCLUDES= -I.. -I../
ClassesSOURCES= main.
/Classes/AppDelegate.
/Classes/HelloWorldScene.
cppCOCOS_ROOT= ../../../../cocos2d-x-
2.1.5#相对于当前目录的cocos2d-x的位置include $(COCOS_ROOT)
/cocos2dx/proj.linux/
cocos2dx.mkSHAREDLIBS+= -lcocos2d -
lcocosdenshionCOCOS_LIBS= $(LIB_DIR)/libcocos2d.so $(LIB_DIR)/
libcocosdenshion.soINCLUDES+= -I$(COCOS_ROOT)/CocosDenshion/虚败并include
$(TARGET): $(OBJECTS) $(STATICLIBS) $(COCOS_LIBS) $(CORE_MAKEFILE_LIST)@mkdir-p $(@D)$(LOG_LINK)$(CXX) $(CXXFLAGS) $(OBJECTS)-o $@ $(SHAREDLIBS) $(STATICLIBS)$(OBJ_DIR)/%.o: %.
cpp$(CORE_MAKEFILE_LIST)@mkdir-p $(@D)$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY)-c $< -o $@$(OBJ_DIR)/%.o: ../%.
cpp$(CORE_MAKEFILE_LIST)@mkdir-p $(@D)$(LOG_CXX)$(CXX) $(CXXFLAGS) $(INCLUDES) $(DEFINES) $(VISIBILITY)
-c $< -o $@View Code最后在proj.linux目录下执行命令: make DEBUG=1 all 即可。
当然,这些手动建造太麻烦,你也可以写一个shell文件来处理。

‘玖’ cocos2d-x 3.8 编译 android 问题,版主能帮忙解决下吗

一 无法替换cocos2d-x本身自带的libxml2
为什么需要自己编译libxml2:
由于我以前解析xml使用的是Tree的方式,在Win32以及GMO上能够正常运行,但是在ndk下编译的时候遇到问题了,原来cocos2d-x使用的libxml2把Tree的解析方式关闭了。于是乎摆在我面前的是两条路,第一条是重新编译一版libxml2,打开Tree的解析方式;第二条是修改以前的代码,采用SAX的解析方式。由于修改代码的工作量比较大,所以决定先采用第一个方案。(PS:推荐大家在以后的程序中解析xml使用SAX的方式,省很多内存)
编译时遇到的问题:
先将libxml2源代码(从Android 2.2的源代码中拷贝出来的,稍作修改)拷贝到cocos2d-x根目录,然后修改yourgame/android/厅猜闭jni/Android.mk, 修改如下
subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \
libxml2 \ # this is the new add content
cocos2dx \
CocosDenshion/android \
))
subdirs := $(addprefix $(LOCAL_PATH)/../../../,$(addsuffix /Android.mk, \
libxml2 \
cocos2dx \
CocosDenshion/android \ ))
然后将cocos2dx\platform\third_party\android\libraries\libxml2.a删除,再修改yourgame和cocos2d-x使用的新的libxml2的头文件目录,最后编译。然后果断的悲剧了,libxml2的代码不会被编译,然后在链接cocos2d-x so的时候会提示link error (libxml2的接口找不到实现)。
解决办法:
修改cocos2d-x的Makefile文件,修改如下:
LOCAL_LDLIBS := -L$(call host-path, $(LOCAL_PATH)/platform/third_party/android/libraries) \
-lGLESv1_CM -llog -lz \
-lpng \
-ljpeg \
# -lxml2 #delete the old style of link libxml2
LOCAL_STATIC_LIBRARIES := libxml2 # add to enable auto build of libxml2
yourgame 的makefile 的修改参考cocos2d-x。 哈哈,终于能正常编译了。
二 编译命令始终是compile++ thumb 或者 compilethumb
为什么不要使用thumb:
thumb指令集是为了满足一些低端的设备而加上的,使用的是16位的指令集,能压缩扮裂代码密度,但是指令比普通的32位arm指令弱很多,所以建议关闭掉。
解决办法:
在每个Android.mk 中每个Mole加上LOCAL_ARM_MODE := arm ,这样就能看到compile++ arm 和compile arm 了。
三 无法载入资源
问题描述:
在Android 程序编译完打包之后,安装上设备,提示"Get data from file **** failed", 但是发现文件路径是对的,只是中间有"."或者".."。
问题产生的原因:
在请教高人之后知道android程序中使用的资源是打包在压缩文件里面的,程序中只能通兆团过在压缩包的全路径名去获取文件,并且不能有相对路径(如"." , "..")。而且,不能通过fopen去打开,因为文件目录根本就没有这个文件。
解决办法:
1. 将plist文件和png,动画配置xml和png放在相同的目录,plist和xml中包含的文件名和plist以及xml在相同的目录下。
2. 在解析xml的时候不能使用xmlReadFile,而使用如下方式:
const char* xmlConfFullPath = CCFileUtils::fullPathFromRelativePath(yourfilename);
CCFileData data(xmlConfFullPath, "rt");
unsigned long size = data.getSize();
char *pBuffer = (char*) data.getBuffer();
doc = xmlReadMemory(pBuffer, size, NULL, "UTF-8", XML_PARSE_RECOVER);
四 dynamic_cast不能使用
问题描述:
dynamic_cast返回NULL,但是在Win32上是能正常工作的。
原因:
不详,反正搞不定,试过以下各种办法,均以失败告终:
1. 修改Application.mk,添加如下:
APP_STL := gnustl_static
APP_CPPFLAGS += -frtti
2. 修改编译器,使用gcc编译C+代码,且在链接时将-lsupc+ 换成-lstdc++
最后只能放大招:
将dynamic_cast 改为static_cast, 哎,先将就着用吧。

热点内容
比较便宜的云服务器 发布:2025-07-13 18:29:59 浏览:406
切换ftp 发布:2025-07-13 18:29:07 浏览:738
锐龙哪个配置最高画质 发布:2025-07-13 18:22:34 浏览:196
压缩机工作原理图 发布:2025-07-13 18:10:15 浏览:39
黑暗追求者安卓怎么联机 发布:2025-07-13 18:10:07 浏览:617
北大保安自学编程 发布:2025-07-13 18:09:58 浏览:858
java递归排列 发布:2025-07-13 18:02:43 浏览:473
轻量云服务器如何换成d盘 发布:2025-07-13 17:58:45 浏览:931
重置腾讯云服务器时间 发布:2025-07-13 17:54:55 浏览:326
aes256java加密 发布:2025-07-13 17:54:46 浏览:710