使用ndk-build脚本与排除构建系统故障

  • 使用ndk-build脚本
  • 排除构建系统故障
一,使用ndk-build脚本

1、ndk-build的用法

Android NDKr4引入了一个新的、小巧的shell脚本ndk-build,来简化源码编译。

该文件位于NDK根目录,进入你的工程根目录或子目录之后,在命令行下调用即可。例如:

cd $PROJECT
$NDK/ndk-build

NDK指向你的NDK的安装目录,PROJECT指向你的Android工程目录。建议将ndk-build所在目录加入PATH环境变量或设置alias。

2、ndk-build的选项

所有给ndk-build的选项都会直接传给GNU Make,由make运行NDK的编译脚本。几个常见调用方式如下:

  • ndk-build 编译

  • ndk-build clean 清掉二进制文件

  • ndk-build NDK_DEBUG=1 编译为可调试版的二进制文件

  • ndk-build NDK_DEBUG=0 编译为release版

  • ndk-build V=1 执行ndk-build且打印出它所执行的详细编译命令。

  • ndk-build -B 强制重新编译

  • ndk-build -B V=1 -B 和 V=1 的组合

  • ndk-build NDK_LOG=1 打印出内部的NDK日志信息(用于调试NDK自己)

  • ndk-build NDK_APP_APPLICATION_MK=<文件路径> 用这里指定的路径寻找Application.mk文件

  • ndk-build -C <project路径> 先cd进入<project路径>,然后执行ndk-build。

3、Debug版本 Vs Release版本

在NDKr5中,ndk-build做了一些改进,使得在release和debug之间切换更容易了。即通过 NDK_DEBUG 变量:

  • ndk-build NDK_DEBUG=1 编译出的共享库带调试信息,是debug版本

  • ndk-build NDK_DEBUG=0 编译出的共享库不带调试信息,是release版本

如果没有指定NDK_DEBUG,则会从 AndroidManifest.xml中获取(查看 <application> 元素是否有android:debuggable=”true”)。

注意:如果你的SDK是SDKr8或更高,完全不需要修改AndroidManifest.xml。因为如果你想编译出debug版安装包(在命令行下执行ant debug或用ADT),SDK的工具会自动选择用NDK_DEBUG=1编译出的共享库。NDK编译出的debug版和release版的object文件存放在不同的目录(例如obj/local//objs 和 obj/local//objs-debug),避免了在release和debug之间切换而重新编译所有文件。

4、ndk-build的使用条件

总体来说,必须安装GNU Make 3.81 以上版本的make才能正常使用ndk-build和NDK。

5、ndk-build的实质

ndk-build 其实就是对GNU Make的封装,它的目的是调用正确的NDK编译脚本,它等价于 make -f $NDK/build/core/build-local.mk [参数]

6、使用NDK-Build脚本

如前所述,可以通过执行ndk-build脚本启动Android NDK构建系统。该脚本用一组参数使维护和控制构建过程更容易。

默认情况下,ndk-build脚本应该在主项目目录中执行。-C参数可以用于指定命令行中NDK项目的位置,这样一来ndk-build脚本可以从任意的位置开始。

ndk-build  –C  /path/to/the/project

如果源文件没被修改,Android NDK构建系统不会重构建目标。可以用-B执行ndk-build脚本来强制重构建所有源代码。

ndk-build  –B

为了清理生成的二进制文件和目标文件,可以在命令行执行ndk-build clean命令。Android NDK构建系统会删除生成的二进制文件。

ndk-build clean

Android NDK构建系统依赖于GNU Make工具对模块进行构建。默认情况下,GNU Make工具一次执行一句构建命令,等这一句完成以后再执行下一句。如果在命令行使用-j参数,GNU Make就可以并行执行构建命令。另外,也可以通过指定该参数之后的数字来指定并行执行的命令总数。

ndk-build  –j  4
二、排除构建系统故障

Android NDK构建系统有大量的日志以支持构建系统相关的故障排除。

在命令行输入ndk-build NDK_LOG=1便可启用Android NDK构建系统内部状态日志功能。Android NDK构建系统会产生大量的日志,日志消息的前缀是Android NDK。

如果只想看实际执行的构建命令,可以在命令行输入ndk-build V=1。Android NDK将会只显示构建命令。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值