cocos android分析

来源:未知 责任编辑:责任编辑 发表时间:2015-01-01 13:14 点击:
cocos2d-x Android环境搭建
cocos2d-x环境搭建比较简单,但是小问题还是不少,我尽量都涵盖的全面一些。


下载软件
cygwin、NDK(ADT):C++相关
如果之前没有Android开发环境,还需要Android SDK,Eclipse
cocos2d-x源码
我的环境为ndk r7,cygwin1.7,Android SDK为2.2和3.0.另外,我是通过真机调试,在模拟器上不行,估计还是我T410显卡的问题.
安装cygwin,在cygwin文件进行路径设置
在cygwin\home\Administrator的.bash_profile中添加如下代码


1: ANDROID_NDK_ROOT=/cygdrive/e/ADT/android-ndk-r7c


2: export ANDROID_NDK_ROOT


3: NDK_ROOT=/cygdrive/e/ADT/android-ndk-r7c


4: export NDK_ROOT
将libgnustl_static.a从NDK中的android-ndk-r7c\sources\cxx-stl\gnu-libstdc++\libs\armeabi拷贝至cocos2d-1.0.1-x-0.13.0-beta\HelloWorld\android\obj\local\armeabi,这个从解决方案上看应该是stl的引用不一致导致的问题,但编译中会报错“png.a can not find”,但是path路径确实没什么问题,所以比较坑爹,总之这样就搞定了,我也没怎么深究。
进入cocos2d-1.0.1-x-0.13.0-beta\HelloWorld\android目录下修改如下内容到指定路径


1: NDK_ROOT_LOCAL=/cygdrive/e/ADT/android-ndk-r7c


2: COCOS2DX_ROOT_LOCAL=/cygdrive/f/cocos2d-1.0.1-x-0.13.0-beta
cygwin中进入cocos2d-1.0.1-x-0.13.0-beta\HelloWorld\android目录下,执行./build_native.sh,编译C++,JNI接口,供Android Java使用,如果成功,在在libs中生成libhelloworld.so动态库,我们都是为了它做了这么多工作
在Eclipse中导入cocos2d-1.0.1-x-0.13.0-beta\HelloWorld\android工程,熟悉Android的一看就发现,其实这本身就是一个Java工程,我们刚才的操作只是其中jni的部分,供Java下面的调用实现而已
Eclipse中执行Build Project,生成R.java
Run


Make
ndk的Make是在GNU的Make的基础上的一种封装,下面我们来分析一下./build_native.sh都做了哪些操作。简单说主要是资源拷贝和代码编译。


资源拷贝在我的cygwin里面发现有问题,拷贝后的文件是错误的,且不能删除我没有深究,自己手动拷贝了一下。和shell一致,很容易理解,不再深究。


ndk-build编译HelloWorld工程,编译jni文件夹下面的Android.mk,和makefile基本相似,指定需要编译的文件,include路径,依赖工程cocos2dx_static,进行编译,例如HelloWorld的makefile大致如下:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := helloworld_shared

LOCAL_MODULE_FILENAME := libhelloworld
LOCAL_SRC_FILES := helloworld/main.cpp \

../../Classes/AppDelegate.cpp \

../../Classes/HelloWorldScene.cpp

LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static

include $(BUILD_SHARED_LIBRARY)

$(call import-module,cocos2dx)
LOCAL_PATH := $(call my-dir):指定当前路径为为LOCAL_PATH


include $(CLEAR_VARS):清空除LOCAL_PATH之外的其他环境变量的干扰


LOCAL_MODULE&LOCAL_MODULE_FILENAME:模块名称&生成库名称


LOCAL_SRC_FILES:编译的C++ Source


LOCAL_WHOLE_STATIC_LIBRARIES:依赖的静态库


BUILD_SHARED_LIBRARY:生成的为共享库。因为Android的动态库都为JNI所用,所以称为共享库,而静态库只为其他C++库所用。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • cocos2d-x学习笔记(19)--label 、label atlas
  • cocos2d-x学习笔记(23)--地图的使用3--CCTMXLayer
  • Cocos2d-x学习(一):HelloWorld
  • cocos2dx在xcode下开发,编译到android上(2)
  • cocos2d 设置屏幕默认方向
  • cocos2d-x学习笔记(22)--地图的使用2(TMX) --Z-Order、AnchorPoi
  • Cocos2d-x 2.0 之 Actions “三板斧” 之一
  • cocos2d-x学习笔记(18)--游戏打包(windows平台)
  • cocos2d-x学习笔记(16)--spritesheet(精灵表单)
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1