Cocos2d-x 3.0正式版及android环境搭建详细教程

2015年01月29日 11:17 0 点赞 0 评论 更新于 2017-05-04 20:20

今天我们将详细介绍Cocos2d-x 3.0正式版及Android环境的搭建过程。实际上,3.0正式版的环境搭建和之前的RC版基本相同,网上已有很多相关教程,这里我将分享自己的搭建经验。

开发环境说明

我的开发环境是:mac + xcode + eclipse 。Windows环境的搭建过程与Mac基本一致,唯一的区别在于环境变量的配置。

环境搭建步骤

1. 下载必要的工具和资源

2. 配置环境变量

2.1 配置 .bash_profile 文件

该文件位于 /Users/xuzhiwei/.bash_profile,若不存在可自行创建。在文件中添加以下内容:

export NDK_ROOT=/Users/xuzhiwei/Develop/program/android/android-ndk-r9d
export ANDROID_SDK_ROOT=/Users/xuzhiwei/Develop/program/android/adt-bundle-mac-x86_64/sdk
export ANT_ROOT=/Users/xuzhiwei/Develop/program/apache-ant-1.9.3
export PATH=$ANT_ROOT/bin:$PATH

以上配置完成了Android SDK、NDK和Ant的环境变量设置。

2.2 配置Cocos2d-x 3.0的环境变量

只需运行3.0目录下的 setup.py 脚本即可:

python setup.py

根据提示执行以下命令刷新配置文件:

source /Users/xuzhiwei/.bash_profile

至此,环境搭建的基础配置完成。

3. 创建项目

使用过Cocos2d-x 3.0的开发者都知道有个 cocos 命令,执行 cocos -h 可查看帮助信息。这里我们直接创建项目:

cocos new MyGame -p com.your_company.mygame -l cpp -d ~/Projects

上述命令创建了一个名为 MyGame 的项目,包名为 com.your_company.mygame,使用C++语言,项目存放路径为 ~/Projects

4. 项目编译和运行(Xcode)

找到创建的项目目录,使用Xcode打开项目,然后运行编译即可。

5. Android环境配置和编译

5.1 编译项目

进入到 proj.android 目录下,通过以下命令执行编译:

python build_native.py

5.2 解决Eclipse项目中的包缺失问题

编译完成后,使用Eclipse打开项目,可能会看到有红色的 “*” 提示,这是因为缺少包。可通过以下两种方式解决:

  • 方法一:将 test3.0/cocos2d/cocos/2d/platform/android/java/src 下的类包拷贝到当前项目的 src 目录下。
  • 方法二:通过类库项目的方式进行引用。

为了避免每次创建项目都手动拷贝类包,我们可以修改模板中的 build_native.py 文件,让命令自动完成类包的拷贝。

5.3 修改模板类中的 build_native.py 文件

cocos2d-x-3.0/templates/cpp-template-default/proj.android 目录下找到 build_native.py 文件进行修改,以下是关键修改部分的代码:

def copy_resources(app_android_root):
# remove app_android_root/assets if it exists
assets_dir = os.path.join(app_android_root, "assets")
if os.path.isdir(assets_dir):
shutil.rmtree(assets_dir)
# copy resources
os.mkdir(assets_dir)
resources_dir = os.path.join(app_android_root, "../Resources")
if os.path.isdir(resources_dir):
copy_files(resources_dir, assets_dir)

#--------copy cocos_lib_path start------------
def copy_src_files(src, dst):
for item in os.listdir(src):
path = os.path.join(src, item)
if not item.startswith('.') and os.path.isfile(path):
shutil.copy(path, dst)
if os.path.isdir(path):
new_dst = os.path.join(dst, item)
if not os.path.exists(new_dst):
os.mkdir(new_dst)
copy_src_files(path, new_dst)

def copy_src(app_android_root,cocos_root):
android_src_dir = os.path.join(app_android_root,"src")
cocos_src_path = os.path.join(cocos_root, "cocos/2d/platform/android/java/src")
if not os.path.exists(android_src_dir) :
os.mkdir(android_src_dir)
if os.path.isdir(cocos_src_path):
copy_src_files(cocos_src_path,android_src_dir)
#--------copy cocos_lib_path end------------

def build(ndk_build_param,android_platform,build_mode):
ndk_root = check_environment_variables()
sdk_root = None
select_toolchain_version()
current_dir = os.path.dirname(os.path.realpath(__file__))
cocos_root = os.path.join(current_dir, "../cocos2d")
app_android_root = current_dir
copy_resources(app_android_root)
#-----------------add copy src ------------
copy_src(app_android_root,cocos_root)
if android_platform is not None:
sdk_root = check_environment_variables_sdk()
if android_platform.isdigit():
android_platform = 'android-'+android_platform
else:
print 'please use vaild android platform'
exit(1)
if build_mode is None:
build_mode = 'debug'
elif build_mode != 'release':
build_mode = 'debug'
do_build(cocos_root, ndk_root, app_android_root,ndk_build_param,sdk_root,android_platform,build_mode)

修改模板的好处是一次修改,多次使用。修改完成后,创建一个新项目,执行 python build_native.py 命令,就会发现类包已自动打包进项目。

6. 方便复制 .cpp 文件到 android.mk

为了方便以后将创建的 .cpp 文件复制到 android.mk 中,我们可以往模板的 proj.android 目录下的 JNI 目录添加 list.sh 文件。

  • 下载包list.sh.zip
  • 使用方法
    ./list.sh ../../Classes
    

    执行上述命令后,会列出 Classes 目录下的 .cpp 文件,可直接复制到 android.mk 目录下。

整个Cocos2d-x 3.0正式版及Android环境的搭建过程就完成了,虽然步骤较多,但按照上述步骤操作,相信你能顺利搭建好开发环境。

作者信息

feifeila

feifeila

共发布了 570 篇文章