【问题标题】:Newbie in Android NDK: definition in Android.mkAndroid NDK 中的新手:Android.mk 中的定义
【发布时间】:2013-11-05 12:34:06
【问题描述】:

我是 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

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

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

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

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

【问题讨论】:

  • 我认为您正在定义这些变量
  • @blackbelt,我不明白你的评论,我知道人们当然会定义这些东西。我的问题是规则是什么,因为我无法在我导入的项目中找到 Android.mk 中定义的那些文件。

标签: android android-ndk java-native-interface


【解决方案1】:

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

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

LOCAL_PATH := $(call my-dir)

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

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

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

希望这能有所帮助!

【讨论】:

  • AOSP源码中有很多Android.mk文件。请问您指的是e上的哪一个?
  • 另外,我忘了提到如何评估my-dir 的定义在AOSP 源代码的build/core/definitions.mk 文件中给出。但是,它没有您上面引用的措辞。文件名会很有用,因为它也可用于查找其他定义。
【解决方案2】:

问 - 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”插件或其他一些有用的东西。

希望对你有帮助

【讨论】:

    猜你喜欢
    • 2017-11-04
    • 1970-01-01
    • 2015-11-12
    • 1970-01-01
    • 2014-07-19
    • 1970-01-01
    • 2011-12-01
    • 2023-04-06
    • 1970-01-01
    相关资源
    最近更新 更多