Android NDK开发轻松入门(3)

III.5/调用NDK构建系统:


使用NDK构建机器代码的最佳方式是使用'ndk-build'脚本。你也可以使用另一个老的方式--依赖于创建'$NDK/apps'子目录的方式。

不论哪种方式,编译成功后,那些编译出的“裸体”(不带有调试信息的)二进制模块都将被复制到你应用项目所在的路径下(注意非“裸体”的二进制模块会保留以提供调试能力。没有必要把非“裸体”模块复制到设备上去)


1:使用'ndk-build'命令:


'ndk-build'脚本可以在NDK安装所在的顶级目录下找到,可以直接你的应用项目的目录(也就是你的AndroidManifest.xml所在的目录)或任何子目录下调用。

例如:

cd$PROJECT

$NDK/ndk-build


这将启动NDK构建脚本,脚本将自动探测你的开发系统和应用项目文件来决定构建什么东西。

例如:

ndk-build

ndk-build clean --> 清空所编译出的二进制文件们。

ndk-build -B V=1 --> 强制完全重新编译,并显示命令


默认下,脚本希望看到一个可选的$PROJECT/jni/Application.mk和一个必须的$PROJECT/jni/Android.mk

成功后,会把产生的二进制模块(即共享库)复制到你的项目树中的合适位置。你可以在之后使用’ant’命令或ADP插件来重建完整的应用包。

关于这个脚本的更完整的说明和可用的选项,见docs/NDK-BUILD.html


2:使用$NDK/apps/<name>/Application.mk:


这种构建方式是NDKr4以及正前版本的唯一选择,当前还支持,仅仅是为了兼容的原因。我们强烈建议你麻溜地移植为使用'ndk-build'命令的方式,因为我们可能很快就把这种方式抛弃掉。

用它需要这样做:

1.在你的NDK安装目录下(不是你的应用路径)创建一个子目录,叫:$NDK/apps/<name>/ <name>是一个任意的名字用来向NDK构建系统描述你的应用(不能有空格)

2.写一个 $4NDK/apps/<name>/Application.mk,需在里面定义一个APP_PROJECT_PATH指向你的应用项目目录。

3.在命令行中,进入到NDK安装路径,然后调用顶层的GNUMakefile,如下:

cd$NDK

makeAPP=<name>

结果同第一种方法一样,除了一些中间产物放在$NDK/out/apps/<name>/下之外。


IV.重建你的应用包:

使用NDK产生二进制文件后,你需是用通常的方式重建的你应用包文件(.apk),即使用'ant'命令或ADTEclipse 插件。

你的新.apk中将被嵌入共享库文件,然后在安装到设备时被系统自动分离出来。


V.对调试的支持:

NDK提供了一个辅助脚本,叫做'ndk-gdb',来十分轻松地为你的应用启动一个调试会话。


本地调试只能在运行Android2.2 或更高系统的设备上执行。并且不需要特殊用户权限。

更多信息,请对docs/NDK-GDB.html。简要来说,本地调试分以下几步:

1.确定你的应用是可调试的 (AndroidManifest.xml中设置android:debuggable"true")

2.使用'ndk-build'构建你的共享库,然后构建你的应用然后安装到设备或模拟器上。

3.运行你的应用。

4.在你的应用项目目录下运行 'ndk-gdb'


你将看到gdb提示符出现。然后扒着GDB手册笨笨的调吧。

linux

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wygwgj.html