您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

ubuntu下安装cocos2d

2024/6/1 2:40:49发布49次查看
折腾了半天,源代码有bug,自己修改了一下才可以用 环境ubuntu12.10 cocos2d-x最新版本 1. git clonehttps://github.com/cocos2d/cocos2d-x.git下载cocos2d-x源代码 2. 官方下载ndk,我的是64位版本android-ndk-r8e 3. 官方下载sdk,我的eclipse之前已经下载过
折腾了半天,源代码有bug,自己修改了一下才可以用
环境ubuntu12.10 + cocos2d-x最新版本
1. git clone https://github.com/cocos2d/cocos2d-x.git下载cocos2d-x源代码
2. 官方下载ndk,我的是64位版本android-ndk-r8e
3. 官方下载sdk,我的eclipse之前已经下载过了,直接拿来用android-sdks
4. 进入cocos2d-x,开始编译,不过g++版本要修改为4.6或以上
5. 打开./make-all-linux-project.sh, 修改ndk和sdk的路径,运行 ./make-all-linux-project.sh,等待几分钟即可编译完成
6. 运行./create-android-project.sh来根据提示创建一个工程
问题就出现在第六步,总是提示:
cp: 无法获取/home/lsc/disk/cocos2d-x/cocos2d-x/samples/cpp/hellocpp/proj.android/{jni,src} 的文件状态(stat): 没有那个文件或目录
/home/lsc/disk/cocos2d-x/cocos2d-x/template/android/gamemk.sh: 32: /home/lsc/disk/cocos2d-x/cocos2d-x/template/android/gamemk.sh: cannot create /home/lsc/disk/cocos2d-x/cocos2d-x/hello/proj.android/jni/android.mk: directory nonexistent
sed: 无法读取 /home/lsc/disk/cocos2d-x/cocos2d-x/hello/proj.android/src/org/cocos2dx/hellocpp/hellocpp.java: 没有那个文件或目录
发现在template/android/copy_files.sh中出错在这一行
cp -rf $helloworld_root/proj.android/{jni,src} $app_dir/proj.android
没办法,把他们分开写成两行去:
     cp -rf $helloworld_root/proj.android/jni $app_dir/proj.android
     cp -rf $helloworld_root/proj.android/src $app_dir/proj.android 
保存再编译,问题解决了
7. 接着进入刚才创建好的工程目录下,我的名字叫firstdemo,该工程下有proj.android目录,进入运行脚本./build_native.sh,这样过了两分钟,编译c++生成libgame.so库
8.我们好要编译android apk,所以打开eclipse,导入该工程,这时候由于没有加入jar包,所以会提示有些java类找不到
9.jar包路径在cocos2d-x/cocos2dx/platform/android/java/bin/libcocos2dx.jar,我刚开始的时候是按照网上的方法导入jar包的,就是右键项目->build path ->configrue build path-> add external jars, 这样是没有语法错误了,编译也成功了, 可是运行apk的时候总是提示如下log:
w/dalvikvm( 4677): unable to resolve superclass of lcom/android/cocos2dx/demo/firstdemo; (21)
w/dalvikvm( 4677): link of class 'lcom/android/cocos2dx/demo/firstdemo;' failed
d/androidruntime( 4677): shutting down vm
w/dalvikvm( 4677): threadid=1: thread exiting with uncaught exception (group=0x40aa5930)
i/surfaceflinger( 1076): graphicbufferalloc::creategraphicbuffer
e/androidruntime( 4677): fatal exception: main
e/androidruntime( 4677): java.lang.runtimeexception: unable to instantiate activity componentinfo{com.android.cocos2dx.demo/com.android.cocos2dx.demo.firstdemo}: java.lang.classnotfoundexception: didn't find class com.android.cocos2dx.demo.firstdemo on path: /data/app/com.android.cocos2dx.demo-2.apk
e/androidruntime( 4677):     at android.app.activitythread.performlaunchactivity(activitythread.java:2106)
e/androidruntime( 4677):     at android.app.activitythread.handlelaunchactivity(activitythread.java:2230)
e/androidruntime( 4677):     at android.app.activitythread.access$600(activitythread.java:141)
e/androidruntime( 4677):     at android.app.activitythread$h.handlemessage(activitythread.java:1234)
e/androidruntime( 4677):     at android.os.handler.dispatchmessage(handler.java:99)
e/androidruntime( 4677):     at android.os.looper.loop(looper.java:137)
e/androidruntime( 4677):     at android.app.activitythread.main(activitythread.java:5041)
e/androidruntime( 4677):     at java.lang.reflect.method.invokenative(native method)
e/androidruntime( 4677):     at java.lang.reflect.method.invoke(method.java:511)
e/androidruntime( 4677):     at com.android.internal.os.zygoteinit$methodandargscaller.run(zygoteinit.java:793)
e/androidruntime( 4677):     at com.android.internal.os.zygoteinit.main(zygoteinit.java:560)
e/androidruntime( 4677):     at dalvik.system.nativestart.main(native method)
e/androidruntime( 4677): caused by: java.lang.classnotfoundexception: didn't find class com.android.cocos2dx.demo.firstdemo on path: /data/app/com.android.cocos2dx.demo-2.apk
e/androidruntime( 4677):     at dalvik.system.basedexclassloader.findclass(basedexclassloader.java:65)
刚开始以为androidmainfest.xml的 android:name有问题,可是怎么修改都不行,仔细看了log才发现unable to resolve superclass of这一句,很明显是找不到jar包的类了
果断怀疑是jar包导入的问题,接着把刚导入的jar包删除,直接复制libcocos2dx.jar文件,在eclipse窗口中右击libs文件夹,直接选择粘帖,再运行,问题解决,可以看到
画面了,网上也找到一个据说是正确导入jar包的方法,原文如下:
在网上查了一下,有人说上面的做法有可能会出错,建议采用下面的步骤:
     右键工程,
     build path,
    java build path,选择libraries
     在右边的按钮中点击“add library”
     选择“user library”,点击“下一步”
     点击“user librarys”按钮
     在出现的界面中点击“new..”按钮
     在弹出的界面中随便起一个名字,点击“确定”
     点击“add jars”按钮选择第三方jar包,点击“确定”完成操作。
这样的话该jar包会被一起打包到apk中,问题也就解决了!
接着我发现这样子每次都要先在shell中编译c++部分,然后在eclipse中编译android部分,很麻烦,网上找了一下,有没有解决,找到了一篇比较详细的说明,直接拿来用,发现没问题,原文如下:
http://www.ityran.com/archives/1062
通过命令脚本来编译c++代码,完了之后用eclipse来编译java代码,这种来回切换的做法非常笨重。如果全部可以用eclipse来完成的话,那么生活会更简单一些。
    幸运的是,我们可以告诉eclipse,我们的android项目是一个集成java/c++的跨语言项目!
   为此,我们在左边的项目树上选择samplecocos2dxandroid,然后从菜单里面选择file\new\other,然后从对话框里面选择c/c++\convert to a c/c++ project,如下所示:
点击next。在下一个屏幕里面,选中你的项目,然后选择c++单选按钮,然后为project type指定makefile project\other toolchain,如下所示:
点击完成。这时eclipse会询问你是否打开c/c++视图,当对话框出现的时候,选择no。
   接下来的步骤就是修改项目设置,指定如何运行我们的make命令。在左边的项目树上,右击samplecocos2dxandroid工程,选择properties,然后选择c/c++ build
取消“use default build command”复选框,然后在build文本框中输入下面的命令:
bash ${workspace_loc:/samplecocos2dxandroid}/build_native.sh ndk_debug=1 v=1
点击apply,然后点ok。
   回到eclipse,从主菜单中选择project\build all,这时你可以在eclipse的控制台输出中看到c++ make在运行。
我们仍然有一些警告需要解决。想知道我是什么意思吗,你打开jni/helloworld/main.cpp,这里你会看到一系列的警告,如下所示:
这些警告之所以会出现,是因为我们没有配置正确的c++包含路径。为了解决它,我们右击samplecocos2dxandroid工程,然后选择properties\c/c++ general\path and symbols\gnu c++。
   选择add…按钮来选择下面的目录,之后点击apply和ok。
$(ndkroot)/platforms/android-9/arch-arm/usr/include $(cocos2dx_home)/cocos2dx/include
注意: 不用忘了使用实际的路径来替换掉$(ndkroot)和$(cocos2dx_home)。
点击apply,这时会提示你是否重建索引。直接点击yes继续就可以了。
   现在,你再看看main.cpp,你会看到大部分警告已经消失了。
但是,appdelegate.h文件还是找不到。这是因为appdelegate.h是在$project_home\classes文件夹下面。这个文件夹对我们来说非常重要,因为它包含了我们工程里面的可移植的c++类,比如helloworldscene.cpp等。
    当我们创建eclipse项目的时候,我们必须选择$project_home\android文件夹,因为eclipse需要一个androidmanifest.xml文件。但是,这样的话,我们的工程就不包括关键的“classes”文件夹了,这也是为什么我们会得到这么多警告的原因。
   让我们来修正它吧。右击samplecocos2dxandroid项目,选择properties\c/c++ general\paths and symbols\source location。点击link folder,然后复选中link to a folder in the file system,接着浏览到$project_home文件夹,并指向classes目录,最后点apply和ok。
你现在可以在文件树里面看到classes目录了,而且在main.cpp里面的#include “appdelegate.h”警告也应该消失了。
   eclipse工程里面还会有许多警告,但是,这是因为eclipse对于解析c++头文件的能力并不强大。为了消除这些警告,我们又需要设置一下项目设置。(右键点工程,然后选择properties),把code analysis部分的warnings关闭,如下图所示:
然后点击apply和ok,这时,你就得到一个工程可以在eclipse里面进行编辑了。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product