做cocos2d-x的项目,一般是用电脑进行开发,然后移植到手机平台上。移植到安卓手机需要用eclipse等工具重新编译打包成apk文件。而用eclipse打包的话,要把项目的cpp文件一条条加入到Android.mk配置中,文件少无所谓,但如果文件很多,手工添加就比较麻烦了,特别是有些时候,要和原先的Andriod.mk配置做比较,本次新增了哪些文件,然后把新增的文件添加进去。

  总之,打包成apk,手工修改Android.mk配置很麻烦。所以,我做了一个自动修改器。如下图:

  我的Cocos2d-x Android.mk文件自动修改器下载地址:

  http://download.csdn.net/detail/stevenkylelee/8426235

  用QT5.4做的,要独立运行需要附带QT的dll,所以程序有16MB之大。每次运行俺的这个程序会用浏览器打开俺的CSDN博客,嘿嘿,使用俺的劳动成果,就要给俺付出点代价。>_<

  要自动修改Android.mk文件,需要填写如下3个参数:

  源代码目录路径:指向cocos2d-x项目的源代码目录,通常填写项目的Classes文件的路径。程序会遍历这个目录中的所有*.cpp文件,找到所有的cpp文件,生成配置字符串。

  Android.mk文件路径:指向要修改的Android.mk文件。

  这2个参数对应项目的目录和文件如下图所示:

  搜索替换的正则表达式:为了定位替换的内容,比如:LOCAL_SRC_FILES := hellocpp/main.cpp 。程序会把原来的Android.mk中的这里的字符串替换成程序生成的,从而实现自动修改。

  这里用的正则是QT实现的正则类。QT的正则和C++11、C#的正则有些不同。为什么要用正则表达式呢?正则有更好的扩展性,如果不好定位替换的内容,可以先在原来的mk文件中写一个标记,然后用正则匹配替换上。

  在实践中发现,LOCAL_SRC_FILES := 字段,不仅可以用来加入cpp文件的配置,还可以用来引入so,其他库的引用配置。而我们其实要的是替换源代码配置的那个字段。“LOCAL_SRC_FILES *:=[a-zA-Z0-9 _/.]+cpp.*(\r*\n\s*\n)”这个正则会匹配到源代码配置的LOCAL_SRC_FILES。程序默认使用这个正则,当然也可以修改为其他的正则。

  这3个参数,在程序被关闭会保存,下次打开程序恢复上次保存的参数设置。

  设置好参数后,点击“生成”按钮就会修改指定的mk文件了。

  程序修改生成的结果如下图:

自制工具:Cocos2d-x Android.mk文件自动修改器相关推荐

  1. Android.mk文件语法规范

    序言: ------------- 此文档旨在描述Android.mk文件的语法,Android.mk文件为Android NDK(原生开发)描述了你C/C++源文件. 为了明白下面的内容,你必须已经 ...

  2. Android.mk文件官方使用说明

    本页介绍了 ndk-build 所使用的 Android.mk 编译文件的语法. 概览 Android.mk 文件位于项目 jni/ 目录的子目录中,用于向编译系统描述源文件和共享库.它实际上是编译系 ...

  3. Android.mk文件语法规范(Android.mk File)

    1.Android.mk文件概述 Android.mk文件用来告诉NDK编译系统,应该如何编译这些源码.更确切地说,该文件其实就是一个小型的Makefile.该文件会被NDK的编译工具解析多次,所以要 ...

  4. 安卓编译android.mk,详解安卓系统中的Android.mk文件

    概述    Android.mk文件用来向编译系统描述如何编译你的源代码.更确切地说,该文件其实就是一个小型的Makefile.由于该文件会被NDK的编译工具解析多次,因此应该尽量减少源码中声明变量, ...

  5. Android.mk文件语法规范及使用模板 (转载)

    2019独角兽企业重金招聘Python工程师标准>>> http://blogold.chinaunix.net/u3/99423/showart_2206760.html Andr ...

  6. Android.mk 文件语法详解

    0. Android.mk简介: Android.mk文件用来告知NDK Build 系统关于Source的信息. Android.mk将是GNU Makefile的一部分,且将被Build Syst ...

  7. Android.mk文件编写

    Android.mk文件编写的例子: LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := hello LOCAL_SR ...

  8. 02_JNI中Java代码调用C代码,Android中使用log库打印日志,javah命令的使用,Android.mk文件的编写,交叉编译

     1  编写以下案例(下面的三个按钮都调用了底层的C语言): 项目案例的代码结构如下: 2 编写DataProvider的代码: package com.example.ndkpassdata; ...

  9. android ndk 文件管理,Android NDK开发指南(二)Android.mk文件

    http://www.cnblogs.com/yaozhongxiao/archive/2012/03/06/2382225.html 1.  概述 Android.mk文件是用来描述build sy ...

最新文章

  1. QT中在label中插入图片自适应label大小等比缩放
  2. linux内核中的GPIO系统之(4):pinctrl驱动的理解和总结
  3. 算法心经.数学的应用.微分的应用
  4. 基于javaweb mvc模式的图书馆管理系统(不含框架)
  5. api网关和esb区别_具有ESB,API管理和Now .. Service Mesh的应用程序网络功能。
  6. Kafka核心源码解析 - LogManager源码解析
  7. jQuery Mobile中列表项ol、ul中的li的data-*选项
  8. 4600u黑苹果 r5_黑苹果从入门到精通 篇四:Mojave黑苹果主要硬件兼容性总结及笔记本推荐...
  9. 汽车行业营销案例(共13份)
  10. excel快速选择多行数据
  11. jquery查子元素
  12. php汽车保养oa,汽车行业oa管理系统
  13. R语言进行数据分组聚合统计变换(Aggregating transforms)、计算dataframe数据的分组四分位距(IQR)
  14. 日语的汉(训读)字音读音便规则
  15. mysql设置外部ip访问
  16. 小学生python游戏编程2----飞机大战1
  17. DataBinding的使用二
  18. Nodejs 中运行 JS 代码
  19. 聊一下面试经常问的SQL注入
  20. Centos开机后ens33网卡失效连不上网

热门文章

  1. SQL内连接与外连接
  2. 2023年湖北监理工程师考试时间、报名时间、报考条件是什么?
  3. Android RecyclerView 实现瀑布流
  4. 开机时出错:VMware player 未能启动 VMware Authorization Servce
  5. JavaBean是用来干嘛的?
  6. 安装织梦网站出现连接数据库失败
  7. TGP无限验证码怎么办?
  8. 计算机专业水平考试试题,计算机水平考试试题汇编
  9. 从录屏的视频文件中提取PPT页面
  10. tomcat 的下载安装及在eclipse里的配置