美文网首页
Ubuntu下编译Cocos-2d-x-3.6 Android工

Ubuntu下编译Cocos-2d-x-3.6 Android工

作者: 夜雨归人 | 来源:发表于2017-02-13 18:04 被阅读0次

前言

Linux环境下编译成功后,我们继续要进行的测试就是完成Android工程的编译。
我在第一篇《Ubuntu下搭建Cocos2d-x-3.4 / Cocos2d-x-3.6开发环境》里面提到过,直接使用Android Studio自动下载的ndk环境,不适合以前旧的cocos版本开发的游戏。即使我升级到3.6,依然不适合。

部署环境

当时,填完了所有坑,部署好3.6版本之后,用cocos new命令新建一个test工程,然后成功地编译运行了linux下的HelloWorld。 但是当用cocos compile -p Android编译Android包的时候,却报错了,看清楚它试图去找armeabi-v8a,而我们项目里面只有armeabi-v7a,我觉得是Ndk版本太高了,所以决定从Google官网下载我们从前采用的NDK r9d来重新编译。
下载地址:http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2

特别推荐一个csdn网页,上面有很全的Android官方下载地址,我就在这里找的。
http://www.cnblogs.com/yaotong/archive/2011/01/25/1943615.html

将下载的r9d解压放到~/Android/android-ndk-r9d目录下。
然后编辑配置文件:

vim ~/.bashrc

将其中export NDK_ROOT=一项(如果没有就添加),修改为:

export NDK_ROOT=~/Android/android-ndk-r9d

然后source一下让这个设置立即生效:

source ~/.bashrc:

编译test工程的Android包

cd ~/Devlop/test
cocos compile -p Android

终于成功了,回应如下:

Move apk to /home/ace/Devlop/test/bin/debug/android
build succeeded.

The NDK version is not r10c or above.
Your application may crash or freeze on Android L(5.0) when using BMFont and HttpClient.
For More information:
https://github.com/cocos2d/cocos2d-x/issues/9114
https://github.com/cocos2d/cocos2d-x/issues/9138

Your application may crash when using c++ 11 regular expression with NDK_TOOLCHAIN_VERSION 4.8

嗯,看来cocos2d-x-3.6将ndk要求升级到了r10c或者更高。依稀回忆起3.6时代我们用lua开发的时候,是用的ndk r10d,重新下载ndk r10d,并再次配置一下环境。
下载地址:
http://dl.google.com/android/ndk/android-ndk-r10d-linux-x86_64.bin
发现不是熟悉的zip格式,而是用的bin,我讨厌这种可执行文件。下载完成后,发现文件没有执行权限。进到下载目录,下终端设置权限,然后执行:

cd ~/Downloads
chmod +x android-ndk-r10d-linux-x86_64.bin
./android-ndk-r10d-linux-x86_64.bin

自解压出一个android-ndk-r10d目录,我们把它移动到/Android目录下,然后重新设置/.bashrc并source之(过程略)。

再次cocos compile -p Android来编译Android工程,回应如下:

BUILD SUCCESSFUL
Total time: 4 seconds
Move apk to /home/ace/Devlop/test/bin/debug/android
build succeeded.

嗯,这次完美了,4秒钟那么快是因为先前编译过一次了。
就不用把这个apk拷贝到真机上测试了,我希望配置好能在AS上调试以后才开始真机调试。

编译实战项目的Android包

采用前面《Ubuntu下编译Cocos 2d-x-3.6 Linux工程》这篇文章的中实战项目CrossNew来测试。
因为原项目中接过sdk包,而且c++程序中有一些Android的编译选项,我几乎无法直接用新建工程的proj.android来增改,最好的办法是把现在的这个目录备份了,再把原来工程中的这个目录完整复制过来,最后调试检查是否有问题。

下面容是原来工程Android.mk的部分内容,主要记录一下用脚本遍历所有.cpp和.h头文件的方法:

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

OT_PATH := $(LOCAL_PATH)

$(call import-add-path,$(LOCAL_PATH)/../../cocos2d)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/external)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos)
$(call import-add-path,$(LOCAL_PATH)/../../cocos2d/cocos/editor-support)

LOCAL_MODULE := cocos2dcpp_shared
LOCAL_MODULE_FILENAME := libcocos2dcpp

define walk
    $(wildcard $(1)) $(foreach e, $(wildcard $(1)/*), $(call walk, $(e)))
endef

ALLFILES = $(call walk, $(LOCAL_PATH)/../../Classes)

FILE_LIST := hellocpp/main.cpp
FILE_LIST += $(filter %.cpp, $(ALLFILES))
LOCAL_SRC_FILES := $(FILE_LIST:$(LOCAL_PATH)/%=%)

FILE_INCLUDES := $(shell find $(LOCAL_PATH)/../../Classes -type d)
LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \
                    $(FILE_INCLUDES)

LOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static
LOCAL_WHOLE_STATIC_LIBRARIES += cocos_extension_static

这个是3.4下实现的,不知道3.6下面会有什么幺蛾子。

开始编译

cd ~/Devlop/cross
cocos compile -p Android

漫长的等待。几乎快成功的时候报错了:

BUILD FAILED
/home/ace/Android/Sdk/tools/ant/build.xml:459: ..\cocos2d\cocos\platform\android\java resolve to a path with no project.properties file for project /home/ace/Devlop/cross/proj.android

看了一下project.properties的内容,恍然明白..\cocos2d\cocos\platform\android\java这种写法是windows平台下的写法啊,linux下都应该换成"/"。 修改为:

android.library.reference.1=../cocos2d/cocos/platform/android/java

然后重新编译,成功了。最后回应:

BUILD SUCCESSFUL
Total time: 7 seconds
Move apk to /home/ace/Devlop/cross/bin/debug/android
build succeeded.

大功告成,所有环境都算成功过了一遍。有点没想明白的是,以前用eclipse编译为什么没报错呢?难道不是用的ant编译?ant编译和ndk编译又是什么关系?不懂的东东太多,想不明白就不想了,以后慢慢会懂。

后记

刚才又狠狠想了一下,确定以前做项目的时候,应该从来没有用cocos compile来编译android工程,都是习惯进eclipse里面编译的。直接在命令行编译,是在后面做lua项目时候,因为没有好的ide环境,才养成的习惯。

相关文章

网友评论

      本文标题:Ubuntu下编译Cocos-2d-x-3.6 Android工

      本文链接:https://www.haomeiwen.com/subject/dbhtwttx.html