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

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)这种方式会更好些
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值