9

我是 Android NDK 的新手。我知道在每个jni/文件夹中,都有Android.mk文件,似乎总是以:

LOCAL_PATH := $(call my-dir)

它定义了LOCAL_PATH,但如果将其翻译成人类可读的语言,这条路径是什么?是LOCAL_PATH指向jni/文件夹还是项目根目录?

例如,我导入了一个使用 NDK 的 Android 项目,我检查了它的Android.mk文件,它有如下内容:

LOCAL_PATH := $(call my-dir)
...
MY_PLUGINS := XXX YYY ZZZ

MY_PATH := $(LOCAL_PATH)/other/something

问题1,什么LOCAL_PATH := $(call my-dir)意思,它指向的路径是什么?

问题2,我在哪里可以找到那些MY_PLUGINS,我的意思是XXX,YYY和ZZZ,至少我在我导入的项目中看不到它。

问题 3,我在哪里可以找到something定义的MYPATH?我也没有在项目中看到它。

PS:(我试图在jni/other/something下找到它,但没有这样的文件)。顺便问一下,Android.mk中使用的脚本语言的名称是什么?

4

2 回答 2

10

您最好的资源可能是 NDK 文档本身。它(不幸的是)没有托管在网络上,但它与 NDK 一起分发。检查android-ndk-rX/documentation.html您下载的 NDK 中的文件。

问题1:来自Android.mk File文档的一部分:

LOCAL_PATH := $(调用我的目录)

Android.mk 文件必须以 LOCAL_PATH 变量的定义开头。它用于在开发树中定位源文件。在这个例子中,构建系统提供的宏函数'my-dir'用于返回当前目录的路径(即包含Android.mk文件本身的目录)。

问题 2 和 3:这些变量不是Android.mk文件中的“常用”变量。它们是用户定义的变量,如果没有关于您正在使用的项目的更多详细信息,很难说清楚。据我所知,MY_PATH确实应该指向jni/other/something.

关于您的PS,我不认为 Android.mk 文件是用任何特定的已知语言编写的:它是一种与 Makefile有一些相似之处的自定义语言。

希望这有所帮助!

于 2013-11-05T13:56:32.487 回答
4

问 - 1

Android.mk 文件必须以 LOCAL_PATH 变量初始化开始。

LOCAL_PATH 包含“Android.mk make 文件的路径”,在大多数情况下它会出现在工作目录中。

$(call my-dir) 是调用宏函数“my-dir”,定义在/build/core/definitions.mk,你可以查看宏的定义,它找到了ndk-build脚本开始工作的目录。

问 - 2

Android.mk 允许用户定义局部变量,“MY_PLUGINS”是包含插件列表的局部变量,“XXX YYY ZZZ”是他/她可能在 Android.mk 文件中使用的插件列表。

以下是定义局部变量的限制

  1. 以 LOCAL_ 开头的名称(例如 LOCAL_MODULE)
  2. 以 PRIVATE_、NDK_ 或 APP_ 开头的名称(内部使用)
  3. 小写名称(内部使用,例如 my-dir)

建议使用 MY_ 前缀来定义局部变量

问 - 3

同样,MY_PATH 是一个本地变量,它包含“/something/other”文件夹的绝对路径,现在这个路径可以包含“XXX YYY ZZZ”插件或其他一些有用的东西。

希望这可以帮助

于 2014-03-19T06:31:33.533 回答