cocos2d-x 3.2 移植到android
前人栽树,后人乘凉,这句话有点过了,只是想感谢一下为了移植cocos2d-x到android的“大婶”们所做出的贡献。
首先android环境需要配置好,需要的文件如下:
貌似ant没用上,我是直接用eclipse打开项目编译生成apk的。
java的环境变量怎么配置,网上已经多的用锹搓,这里就不阐述了。
打开eclipse,配置sdk,ndk,怎么更新sdk也不阐述了,很蛋疼的事情。
以上IDE环境配置成功,正式cocos2d-x 3.2 移植到android平台下
先看看cocos2d-x 的android目录:
第一步:
到cocos2d-x版本目录下,如
E:\cocos2d-x\cocos2d-x_version\cocos2d-x-3.2\cocos2d-x-3.2\cocos\platform\android\java\src\org\cocos2dx\lib
拷贝目录lib及里面的文件到项目目录
E:\cocos2d-x\qhg\Planes\proj.android\src\org\cocos2dx
这里这个目录里会有两个文件夹:cpp、lib
第二步:
进入E:\cocos2d-x\qhg\Planes\proj.android\jni目录,会看到一个hellocpp目录和两个mk文件
Application.mk文件我没有去动它。
主要是Android.mk,里面加上自动拷贝cpp文件的脚本:
# 遍历目录及子目录的函数 define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) endef # 遍历Classes目录 ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes) FILE_LIST := hellocpp/main.cpp # 从所有文件中提取出所有.cpp文件 FILE_LIST += $(filter %.cpp, $(ALLFILES)) LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
这段脚本的意思是提取Classes目录里所有的cpp文件到FILE_LIST
Android.mk的完整脚本:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
# 遍历目录及子目录的函数
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
# 遍历Classes目录
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp
# 从所有文件中提取出所有.cpp文件
FILE_LIST += $(filter %.cpp, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
$(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
$(call import-module,network)
$(call import-module,extensions)
后面六行最初是注释掉的,是cocos2d-x扩展功能,如果需要时对应的
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
......
这几个也要打开注释
第三步:
打开项目的这个目录
E:\cocos2d-x\qhg\Planes\proj.android
然后在地址栏里输入cmd,这样就直接定位到此目录,然后输入命令build_native.py
回车之后生成需要的so文件,so文件会在E:\cocos2d-x\qhg\Planes\proj.android\libs\armeabi目录里产生
运行完成之后,会多出几个目录
多了一个gen文件夹(自动生成)、libs文件夹(用来存放libcocos2dcpp.so)、obj文件夹(看名字就知道是编译过程中生成的中间文件)、bin文件夹(最后.apk包所在地)、assets文件夹(存放资源文件)
第四步:
导入项目到eclipse并编译运行到真机上:
项目资源列表空白处点击Import
选择这项,并下一步,然后点击Browse...找到项目目录,然后点击Finish,成功导入项目
在eclipse项目里有这样一个文件project.properties,这个是android的版本号,根据自己的需求去变动,cocos2d-x 3.2默认给的是target=android-13,对应的android版本是3.2
清单文件AndroidManifest.xml,需要注意的是游戏的横屏竖屏配置android:screenOrientation="landscape",landscape表示横屏,portrait表示竖屏
第五步:
运行项目,首先连接真机到电脑
然后在项目目录上右键,选择如图
这时会出现真机设备
选中真机,点击ok,最终会在真机上自动安装并运行游戏。
首先android环境需要配置好,需要的文件如下:
貌似ant没用上,我是直接用eclipse打开项目编译生成apk的。
java的环境变量怎么配置,网上已经多的用锹搓,这里就不阐述了。
打开eclipse,配置sdk,ndk,怎么更新sdk也不阐述了,很蛋疼的事情。
以上IDE环境配置成功,正式cocos2d-x 3.2 移植到android平台下
先看看cocos2d-x 的android目录:
第一步:
到cocos2d-x版本目录下,如
E:\cocos2d-x\cocos2d-x_version\cocos2d-x-3.2\cocos2d-x-3.2\cocos\platform\android\java\src\org\cocos2dx\lib
拷贝目录lib及里面的文件到项目目录
E:\cocos2d-x\qhg\Planes\proj.android\src\org\cocos2dx
这里这个目录里会有两个文件夹:cpp、lib
第二步:
进入E:\cocos2d-x\qhg\Planes\proj.android\jni目录,会看到一个hellocpp目录和两个mk文件
Application.mk文件我没有去动它。
主要是Android.mk,里面加上自动拷贝cpp文件的脚本:
# 遍历目录及子目录的函数 define walk $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e))) endef # 遍历Classes目录 ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes) FILE_LIST := hellocpp/main.cpp # 从所有文件中提取出所有.cpp文件 FILE_LIST += $(filter %.cpp, $(ALLFILES)) LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
这段脚本的意思是提取Classes目录里所有的cpp文件到FILE_LIST
Android.mk的完整脚本:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp
# 遍历目录及子目录的函数
define walk
$(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef
# 遍历Classes目录
ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)
FILE_LIST := hellocpp/main.cpp
# 从所有文件中提取出所有.cpp文件
FILE_LIST += $(filter %.cpp, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes
LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosbuilder_static
LOCAL_WHOLE_STATIC_LIBRARIES += spine_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocostudio_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_network_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static
include $(BUILD_SHARED_LIBRARY)
$(call import-module,.)
$(call import-module,audio/android)
$(call import-module,Box2D)
$(call import-module,editor-support/cocosbuilder)
$(call import-module,editor-support/spine)
$(call import-module,editor-support/cocostudio)
$(call import-module,network)
$(call import-module,extensions)
后面六行最初是注释掉的,是cocos2d-x扩展功能,如果需要时对应的
LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static
......
这几个也要打开注释
第三步:
打开项目的这个目录
E:\cocos2d-x\qhg\Planes\proj.android
然后在地址栏里输入cmd,这样就直接定位到此目录,然后输入命令build_native.py
回车之后生成需要的so文件,so文件会在E:\cocos2d-x\qhg\Planes\proj.android\libs\armeabi目录里产生
运行完成之后,会多出几个目录
多了一个gen文件夹(自动生成)、libs文件夹(用来存放libcocos2dcpp.so)、obj文件夹(看名字就知道是编译过程中生成的中间文件)、bin文件夹(最后.apk包所在地)、assets文件夹(存放资源文件)
第四步:
导入项目到eclipse并编译运行到真机上:
项目资源列表空白处点击Import
选择这项,并下一步,然后点击Browse...找到项目目录,然后点击Finish,成功导入项目
在eclipse项目里有这样一个文件project.properties,这个是android的版本号,根据自己的需求去变动,cocos2d-x 3.2默认给的是target=android-13,对应的android版本是3.2
清单文件AndroidManifest.xml,需要注意的是游戏的横屏竖屏配置android:screenOrientation="landscape",landscape表示横屏,portrait表示竖屏
第五步:
运行项目,首先连接真机到电脑
然后在项目目录上右键,选择如图
这时会出现真机设备
选中真机,点击ok,最终会在真机上自动安装并运行游戏。