Android NDK中文文档---HOW-TO

    技术2022-05-20  38

     

     

    Android的NDK操作方法: =================== 一个提示和技巧的集合献给NDK用户群 如何生成命令显示: ------------------------------------------- 执行“ndk-build V=1”,真正执行的编译命令会显示出来。这可以用来验证的你所期望的东西是否被编译, 同时编译系统还做了检查错误的工作。 (V=1 技巧来自Linux内核编译系统) 如何强制重新编译所有的源码: ------------------------------------------- 使用GNU make的 "-B" 选项,如:    ndk-build -B 如何在$PROJECT/jni 以外的地方存储 native 源码: -------------------------------------------------- --------------------- 首先,你可以在 $PROJECT/jni/Android.mk 中简单地引入不其它的Android.mk 另外,你可以在Application.mk中定义 APP_BUILD_SCRIPT 去指向其它Android.mk文件。 如何不在工程目录下编译工程的native源文件: -------------------------------------------------- --------- 使用GNU Make "-C <path>"选项,例如:     ndk-build -C <project-path> 如何在$PROJECT/jni以外的地方存储你的 Application.mk: -------------------------------------------------- --------------------- 从NDK r4开始,你可以简单地替换$PROJECT/jni/下的文件, 从工程目录下启动ndk-build执行脚本。 如果你想使用 ndk-build 但是mk文件又在一个不同的地方。 可以使用 GNU Make 的变量覆盖当前的mk文件。     ndk-build NDK_APPLICATION_MK=/path/to/your/Application.mk 如果您使用的是传统的 $NDK/apps/<name> 编译方法,您可以创建 一个符号链接到您的最终Application.mk那里。例如:   $PROJECT/foo/Application.mk 您可以创建一个符号链接用下面的命令,如:     ln -s $PROJECT/foo/Application.mk  $NDK/apps/<name> 这将使 $NDK/apps/<name>/Application.mk 直接指到了 $PROJECT/jni/Application.mk 请注意,生成的文件还是会在$NDK/apps/<name> 目录下 Windows用户:NDK被支持要基于Cygwin, 符号链接通过的“ln - s”命令,如下:     ln -s  <target>  <link> 如何正确地添加 包含目录 到你的模块声明中: -------------------------------------------------- ----------------- 如果你定义了一些模块,且是在编译其它文件时需要被包含一个模块的头部。例如,考虑 下面的例子:     $PROJECT/jni/foo/     Android.mk     foo.h     foo.c   $PROJECT/jni/bar/     Android.mk     bar.c 在bar.c中使用 #include <foo.h> 你将需要添加指到"foo"模块的路径 在jni/bar/Android.mk中 一种尝试是使用下列内容:   LOCAL_C_INCLUDES:= ../foo 然而,这将无法工作,因为所有的编译工作是在ndk-build被请求的目录, 包括的文件必须相对于它。 而正确的做法是:   LOCAL_C_INCLUDES:= $(LOCAL_PATH )/../foo 如果你确实需要它,你也可以使用NDK_APP_PROJECT_PATH来 指向你的项目目录:   LOCAL_C_INCLUDES:= $(NDK_APP_PROJECT_PATH)/jni/foo 但是,我们不建议使用这种方法,相对路径(LOCAL_PATH)是更好的选择。


    最新回复(0)