我之前是参考这篇文件配置的http://my.oschina.net/arthas/blog/100076,可以移植win32的项目到android上。但很多情况下不行。
我在win7 x64和win8 x64下都测试成功
下面是我的新的移植android的配置过程
开发用到的工具及基本准备
cocos2d-x,下载地址是http://cocos2d-x.org/projects/cocos2d-x/wiki/Download,我现在用的版本的是http://cocos2d-x.googlecode.com/files/cocos2d-2.1rc0-x-2.1.3.zip
vs2012,也可以是vs2010,或eclipse等其他。vs我是用来开发win32平台的
ndk,在http://developer.android.com/tools/sdk/ndk/index.html下载最新版。我当前版本是android-ndk-r8e
adt,在http://developer.android.com/sdk/index.html下载。我当前版本是adt-bundle-windows-x86_64-20130514
cygwin,虽然ndk已经集成需要的编译器,但还要需要,但为某些地方用到。
cocos2d-x压缩包解压,如我的解压到了E:\cocos2d-2.1rc0-x-2.1.3,这是我的cocos2d-x目录,在这里记为CC_HOME
说实话,vs2012用起来和vs2010差不多,很快就习惯的,还在用vs2010的可以试下。
ndk直接解压压缩包行。
adt解压后,还要运行SDK Manager.exe, 安装需要的sdk。尽量把常见的android版本sdk都安装了吧。
win32平台开发
安装模板:
进入%CC_HOME%\template\msvc,双击对应的js文件。或者在%CC_HOME%目录下点击install-templates-msvc.bat即可安装全部。
新建工程:
方法一:
在%CC_HOME%下双击cocos2d-win32.vc2012.sln,打开后右击解决方案,添加,找到cocos2d-x项目即可。在引导的页面中选择需要的东西即可。如果是hello world,可以不选Box2D。
这个方法缺点是你要加载不必要的样例项目。
方法二:
在其他地方新建一个解决方案,把Create directory for solution选上(这东西就是右下角那个复选框,中文自行脑补)。创建成功后打开%CC_HOME%,复制cocos2dx、CocosDenshion、extensions这三个文件夹到新建的解决方案文件夹。也可以不复制,按http://www.cnblogs.com/andyque/archive/2011/09/27/2192920.html这个网址操作也行。不过不同版本cocos2d-x写的工程模板里配置不一,可能要修改项目属性中这三个里一些配置,有点麻烦。
然后,把%CC_HOME%\Debug.win32中的一些dll和lib复制到新建的解决方案文件夹下面的Debug.win32中,具体哪些在你编译程序时就会有提示。或者,可以把%CC_HOME%\ Debug.win32整个复制过去。
如无意外,上面两种方法都可以让你编译运行win32平台的cocos2d-x程序。而且,用模板新建的本来就可以run起来的。有个要注意的地方,新建的源文件都要放到项目文件夹下的Classes里,而不是一般默认的proj.win32文件夹里。
移植android
这是最麻烦的地方,我的方法不一定行得通,不过希望你们都能用得上
修改create-android-project.bat
打开编辑%CC_HOME%\create-android-project.bat,修改下面的内容,搜索即可找到
:: modify it to work under yourenvironment
set _CYGBIN=d:\cygwin\bin
这是cygwin目录,但我们现在用不到。
:: modify it to work under yourenvironment
set _ANDROIDTOOLS=E:\android\adt-bundle-windows-x86_64-20130514\sdk\tools
这是adt的,请自行更改到你的文件夹。
:: modify it to work under yourenvironment
set_NDKROOT=e:\android\android-ndk-r8e
这是ndk的,同上。
然后双击create-android-project.bat,按提示输入。例如:
org.cocos2dx.hello
hello
1
这样输入,就可以在%CC_HOME%目录下创建一个名为hello的项目。最后的“1”会根据你安装的android 版本SDK决定。
进入刚创建的hello文件夹,里面三个文件夹中有一个是proj.android。若是你是用上面方法二来新建vs工程,则要把它复制到那个目录。打开proj.android,若你是用cygwin编译,则可能要对build_native.sh进行修改,但这里忽略。
接着,导入android工程。
打开ADT,就是之前解压的那个。点击菜单-file-import,如下图。
选中图中的选项,点next,选择之前的proj.android目录,直接finish就行。
复制源文件
把%CC_HOME%\cocos2dx\platform\android\java\src目录下文件夹复制到android工程源文件(src)目录下
配置工程属性。
配置过程按部就班即可。
右击工程,选择属性。选Builders, 点右边的New…,弹出形如下面的配置框:
Name可以随便改,最好改成工程相关的,我现在这里这个名字也不好。在Main页下,Location可以通过点Browse File System...,选择ndk目录下的ndk-build.cmd;Working Directory点第一个选择当前工程。点Refresh页,选择如图:
在Environment页,New...一个环境变量,名为NDK_MODULE_PATH,值为E:\cocos2d-2.1rc0-x-2.1.3\;E:\cocos2d-2.1rc0-x-2.1.3\cocos2dx\platform\third_party\android\prebuilt\,其中的cocos2dx目录修改成你安装的地方。
点BuildOptions页,修改成如下:
再点击SpecifyResources...,勾选上当前项目下的jni文件夹,其他不要勾,点Finish。
点击再次ok关闭配置。
可参考http://blog.csdn.net/xiawei32/article/details/7526262和http://www.verydemo.com/demo_c131_i62662.html
复制资源文件。
当前目录在proj.android,复制../Resources下的所有资源到assets里面。下面提供了好用的批处理。
方法一:把下面的代码复制到一个.bat文件里,再把这文件复制到proj.android目录下,运行即可。
rd /s /q assets
xcopy /e /i /y "../Resources" "assets"
方法二: 如果是用cygwin编译,那么build_native.sh里本来就包含复制代码。
修改jni目录下的Android.mk 和Application.mk文件
Android.mk文件代码如下
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_CPPFLAGS := -std=c++11
LOCAL_MODULE := game_shared
LOCAL_MODULE_FILENAME := libgame
FILE_LIST := $(wildcard $(LOCAL_PATH)/../../Classes/*.cpp)
LOCAL_SRC_FILES := hellocpp/main.cpp
LOCAL_SRC_FILES += $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_static
...后面的一样
这样可以不用一个个写cpp文件了。
在cygwin编译时我是用这个的:
cppfilestemp1 := $(shell find$(LOCAL_PATH) -type d)
cppfilestemp2 := $(shell find$(cppfilestemp1) -name *.cpp)
cppfilestemp3 := $(sort$(cppfilestemp2))
cppfiles := $(subst$(LOCAL_PATH)/,,$(cppfilestemp3))
LOCAL_SRC_FILES := \
$(cppfiles)
具体可参考http://www.cocos2d-x.org/boards/6/topics/5321
另外,注意Android.mk里的LOCAL_CPPFLAGS := -std=c++11和在Application.mk后面加一行NDK_TOOLCHAIN_VERSION=4.7,为的是使用gcc4.7来编译,并且使用c++11特性。
输出apk文件。
右击项目,Export,按提示即可。
希望你能成功。