论坛首页 移动开发技术论坛

NDK开发指南---NDK使用方法

浏览 3754 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2011-07-30  

Android NDK的使用方法:

======================

 

NDK的用户提示和技巧集合

 

如何强制显示build命令

------------------------

 

执行"ndk-build V=1",实际生成的命令将会被显示。这可以用来验证你编译的东西,并且还会检查NDK的

build system中的错误。

 

(V=1 来自Linux内核的build system)

 

如何强制重新编译你的源码

------------------------

使用GNU Make的“-B”选项

 

ndk-build -B

 

如何存储本地源码到除$PROJECT/jni以外的位置:

-------------------------------------------

 

首先,你可以在你的$PROJECT/jni/Android.mk中包含另一个不同位置的Android.mk

 

另外,你需要在你的Application.mk文件中定义APP_BUILD_SCRIPT来指向那个替代的Android.mk文件

 

如果在不使用cd-ing的情况下来编译你的本地项目文件

------------------------------------------------

有时候,你需要在不用使用cd命令切换到根目录的情况下重新编译你的本地项目文件,可以使用

GNU-Make的'-C <path>'选项,如:

 

ndk-build -C <project-path>

 

如何将你的Application.mk文件存储子$PROJECT/jni目录之外

------------------------------------------------------

从NDK r4开始,你可以简单的将源文件放到$PROJECT/jni/目录下,然后执行'ndk-build'脚本

 

如果你想使用'ndk-build'命令但是将源文件放到了其他的位置,你可以使用如下命令:

 

ndk-build NDK_APPLICATION_MK=/path/to/your/Application.mk

 

如果你想使用传统的$NDK/apps/<name> 来build system,你可以创建一个符号链接到你最终的Application.mk

比如:

 

$PROJECT/foo/Applicatio.mk

 

用如下的命令创建符号链接

 

ln -s $PROJECT/foo $NDK/apps/<name>

 

这将使得你的$NDK/apps/<name>/Applicaiton.mk文件直接指向$PROJECT/jni/Application.mk

 

注意,这样生成的文件将仍然在$NDK/out/apps/<name>目录下。

 

Windows用户在使用Cygwin的情况下,它可以通过"ln -s"命令来创建符号链接,例如

 

ln -s <target> <link>

 

如何正确的添加一个包含目录到你的模块中:

--------------------------------------

 

如果你定义了若干模块,在编译另一个模块的时候需要包含某个模块的头文件,例如

 

$PROJECT/jni/foo/

Android.mk

foo.h

foo.c

 

$PROJECT/jni/foo/

Android.mk

fo.c

 

bar.c使用了"#include <foo.h>",你需要正确的将路径添加到foo模块的jni/bar/Android.mk中

 

例如,可以使用如下这样

 

LOCAL_C_INCLUDES := ../foo

 

但是这样是不会执行的,因为所有编译都从'ndk-build'被调用所在的目录开始,这些包含文件必须是

相对的才可以。

 

正确的方法是:

 

LOCAL_C_INCLUDE :=$(LOCAL_PATH)/../foo

 

它才哦那够了相对路径的方式,你需要将foo和bar移到源码目录的更深层次下。

 

如果你必须需要它,你可以使用NDK_APP_PROJECT_PATH指向你的项目目录

 

LOCAL_C_INCLUDES :=$(NDK_APP_PROJECT_PATH)/jni/foo

 

然而我们不建议这种方式,相对路径$(LOCAL_PATH)这种方式会更好些

论坛首页 移动开发技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics