`

Cocos移植到Android-Android.mk编译文件

阅读更多

我们在上一篇博客中年使用的cocos工具对于C和C++源代码进行编译。事实上cocos工具读取<游戏工程目录>\proj.android\jni\目录中的Android.mk文件,进行交叉编译和打包的。
Android.mk是一个编译文件,它是GNU Makefile的一小部分,是用来向Android NDK描述C和C++源代码文件的,如何进行编译,以及打包等操作。默认的Android.mk文件内容如下:

[html] view plaincopy在CODE上查看代码片派生到我的代码片
 
  1. LOCAL_PATH := $(call my-dir)                                            ①  
  2.   
  3.   
  4. include $(CLEAR_VARS)                                               ②  
  5.   
  6.   
  7. LOCAL_MODULE :cocos2dcpp_shared                                       ③  
  8.   
  9.   
  10. LOCAL_MODULE_FILENAME :libcocos2dcpp                                  ④  
  11.   
  12.   
  13. LOCAL_SRC_FILES :hellocpp/main.cpp \  
  14.                    ../../Classes/AppDelegate.cpp \  
  15.                    ../../Classes/HelloWorldScene.cpp                            ⑤  
  16.   
  17.   
  18. LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes                         ⑥  
  19.   
  20.   
  21. LOCAL_WHOLE_STATIC_LIBRARIES :cocos2dx_static                         ⑦  
  22. LOCAL_WHOLE_STATIC_LIBRARIES += cocosdenshion_static  
  23. LOCAL_WHOLE_STATIC_LIBRARIES += box2d_static  
  24.   
  25.   
  26.   
  27.   
  28. include $(BUILD_SHARED_LIBRARY)                                         ⑧  
  29.   
  30.   
  31. $(call import-module,2d)                                                    ⑨  
  32. $(call import-module,audio/android)  
  33. $(call import-module,Box2D)  



下面我们解释一下这些项目的含义,第①行LOCAL_PATH是定义当前目录变量,该变量必须定义,其中my-dir宏,call my-dir是返回当前目录。第②行代码include $( CLEAR_VARS)是清除LOCAL开通的变量,但不包含LOCAL_PATH,这是因为所有的变量都是全局的。
第③行代码定义LOCAL_MODULE变量,该变量是必须定义的,用来识别Android.mk文件中描述的每个模块。名称必须是唯一的,而且不包含任何空格。第④行代码定义LOCAL_MODULE_FILENAME变量,它是可以选的,通过该变量可以重新定义生成文件的名字。本例中生成的文件名libcocos2dcpp.so文件。
第⑤行代码定义LOCAL_SRC_FILES变量,它描述了模块中将要编译的源文件列表。第⑥行代码定义LOCAL_C_INCLUDES变量,指定头文件搜索路径逻辑列表。第⑦行代码定义LOCAL_WHOLE_STATIC_LIBRARIES变量,它用来指定要连接的库模块。
第⑧行代码是include $(BUILD_SHARED_LIBRARY)表示编译生成动态链接库(或共享库),文件命名为lib<库模块名>.so。另外,我们可以使用BUILD_STATIC_LIBRARY告知编译系统生成静态链接库,文件命令为lib<库模块名>.a。
第⑨行代码$(call import-module,2d)是通过目录名包含另一个模块的Android.mk,其中2d是模块目录名。

提示库是一些没有main函数的程序代码的集合。库分为:静态链接库和动态链接库,它们的区别是:静态链接库可以编译到你的执行代码中,应用程序可以在没有静态链接库的环境下运行;动态链接库不能编译到你的执行代码中,应用程序必须在有链接库文件的环境下运行。在微软的Windows和Windows Phone平台动态链接库文件是.dll文件,静态链接库是.lib文件;在Linux和Android平台动态链接库文件是.so文件,静态链接库是.a文件;Mac OS X和iOS等平台动态链接库文件是.dylib文件,静态链接库是.a文件。

 

 

更多内容请关注最新Cocos图书《Cocos2d-x实战 C++卷》
本书交流讨论网站:http://www.cocoagame.net
更多精彩视频课程请关注智捷课堂Cocos课程:http://v.51work6.com
欢迎加入Cocos2d-x技术讨论群:257760386


《Cocos2d-x实战 C++卷》现已上线,各大商店均已开售:

京东:http://item.jd.com/11584534.html

亚马逊:http://www.amazon.cn/Cocos2d-x%E5%AE%9E%E6%88%98-C-%E5%8D%B7-%E5%85%B3%E4%B8%9C%E5%8D%87/dp/B00PTYWTLU

当当:http://product.dangdang.com/23606265.html

互动出版网:http://product.china-pub.com/3770734

 

《Cocos2d-x实战 C++卷》源码及样章下载地址:

源码下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1155&extra=page%3D1 

样章下载地址:http://51work6.com/forum.php?mod=viewthread&tid=1157&extra=page%3D1

欢迎关注智捷iOS课堂微信公共平台
分享到:
评论

相关推荐

    Cocos2d-x Android.mk文件自动修改器

    在Android平台上,构建Cocos2d-x项目时,开发者需要配置`Android.mk`文件,这是一个Makefile,用于指示Android NDK如何编译和链接C++源代码。然而,手动编辑`Android.mk`文件可能既耗时又容易出错。为了简化这一过程...

    Cocos2d-x 3.x游戏开发实战pdf含目录

    Cocos2d-x 是一个开源的、跨平台的2D游戏开发框架,广泛应用于iOS、Android、Windows等多平台的游戏开发。3.x版本是其发展中的一个重要阶段,引入了多项优化和新特性,旨在提高开发效率和性能。 本书首先会介绍...

    cocos2d-x 3.x游戏开发实战光盘

    cocos2d-x是一款开源的游戏开发框架,基于C++,广泛应用于跨平台的移动游戏开发,支持iOS、Android以及Windows等操作系统。 在cocos2d-x 3.x版本中,主要的更新和改进包括: 1. **性能优化**:cocos2d-x 3.x对渲染...

    cocos2d-1.0.1-x-0.13.0-beta--android-ndk-windows构建批处理.zip

    1. 请将文件放到cocos2d-1.0.1-x-0.13.0-beta目录下面 2. 打开build_android_ndk_tests.bat 文件 修改set NDK_ROOT=D:\Work7\android-ndk-r7c到你的NDK实际路径即可 3. jni/Application.mk 文件中加入 APP_MODULE : ...

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载

    Cocos2d-x 3.x游戏开发之旅教程及完整源码下载,使用最新cocos2d-x-3.14版本,在xcode7.3上已编译通过。 解决相关问题 1、解决源程序在高版本上无法编译问题 2、解决源程序中文注释部分,xcode上显示乱码问题 使用...

    cocos2d-android jar包全套.zip

    在Android Studio项目中,你需要将这些jar包导入到项目的`libs`目录下,并在`build.gradle`文件中配置依赖,这样编译器才能识别和链接这些库。例如: ```groovy dependencies { implementation fileTree(dir: '...

    cocos2d-x-3rd-party-libs-bin-metal-support-22.zip

    通常,这些库包括预编译的二进制文件和其他必要的资源,它们能够简化集成过程,避免开发者自行编译这些依赖,从而节省时间和资源。 在实际应用中,使用 Metal 的好处主要体现在以下几个方面: 1. **性能优化**:...

    cocos2d-x-3.4.z01

    cocos2d-x-3.4.z01 压缩包2/7

    收集齐全的BabeLua 和cocos的插件开发专用

    │ cocos2dx-3.10-api.lua │ cocos2dx-3.11-api.lua │ cocos2dx-3.12-api.lua │ cocos2dx-3.6-api.lua │ cocos2dx-3.7-api.lua │ cocos2dx-3.7.1-api.lua │ cocos2dx-3.8-api.lua │ cocos2dx-3.8.1-api.lua ...

    cocos2d-x 3.x 游戏开发实战光盘源码

    cocos2d-x是一款跨平台的2D游戏开发引擎,广泛应用于iOS、Android、Windows等多平台的游戏开发,尤其适合制作2D图形和动画丰富的游戏。其核心特性包括渲染引擎、物理引擎、粒子系统、音频处理、脚本支持等,为开发者...

    cocos2d-js-min.9c507.js

    cocos2d-js-min.9c507.js

    经典版本 方便下载 源码 旧版本 3.8 官网找不到了 cocos2d-x-3.8.zip

    《cocos2d-x 3.8:经典游戏引擎源码解析》 cocos2d-x 是一个跨平台的游戏开发框架,它基于C++,同时提供了Lua和JavaScript的绑定,让开发者可以方便地在多种操作系统上创建2D游戏、演示程序和其他图形交互应用。这...

    cocos2d-js-min.b8b86.js

    cocos2d-js-min.b8b86.js

    Cocos2d-x 3.X游戏开发入门精解

    Cocos2d-x是一个开源的游戏开发框架,广泛应用于跨平台游戏开发,支持iOS、Android、Windows等多个操作系统。本书通过深入浅出的讲解,让开发者了解并熟练运用Cocos2d-x 3.X的各项功能。 首先,书中会介绍Cocos2d-x...

    cocos2d-x-3rd-party-libs-bin.zip支持的libluajit.a文件

    首先,你需要解压这个zip文件,然后将解压得到的libluajit.a替换到你的cocos2d-x项目中的相应位置,通常是项目的libs/iphoneos目录下。 替换libluajit.a文件后,确保你的Xcode项目设置正确。在Xcode中,打开项目的...

    Cocos2d-x 3.X游戏开发实战 (肖文吉) 完整pdf

    Cocos2d-x是一个开源的游戏开发框架,广泛应用于跨平台的2D游戏制作,支持iOS、Android、Windows等多个操作系统。 本书主要涵盖了以下关键知识点: 1. **Cocos2d-x框架介绍**:Cocos2d-x是基于C++的,但同时也提供...

    cocos2d-html.min.zip

    这个文件是Cocos2d-js的核心库,经过压缩和混淆处理,旨在减少加载时间和提高页面性能。在HTML5游戏中,性能是至关重要的,因为玩家往往对游戏的流畅度有较高要求。cocos2d-html.min.js将所有必要的Cocos2d-js功能...

    cocos2d-x 3.x游戏开发实战肖文吉光盘源代码

    Cocos2d-x是一个跨平台的2D游戏开发框架,基于C++编写,支持多种操作系统,包括iOS、Android、Windows等。版本3.x带来了许多改进,如性能提升、新的渲染引擎、更好的内存管理以及对C++11标准的支持。在实际项目中,...

    Cocos2d-x 3.x游戏开发之旅_完整版PDF电子书

    Cocos2d-x 3.x游戏开发之旅_完整版PDF电子书 上次传过一个给弄错了 而且我也不知道怎么把上次上传的那个删掉 看清楚 这个才是 完整版

    cocos暑期实训-环境配置.pptx

    Cocos暑期实训-环境配置 本文档旨在指导读者快速配置Cocos2dx环境,实现Windows平台下的Cocos项目开发。通过阅读本文档,读者将能够查看和编辑项目素材和代码,编译并在模拟器上运行项目,并进行有效的调试。 一、...

Global site tag (gtag.js) - Google Analytics