Android NDK:断言失败:未定义 LOCAL_MAKEFILE
Posted
技术标签:
【中文标题】Android NDK:断言失败:未定义 LOCAL_MAKEFILE【英文标题】:Android NDK: Assertion failure: LOCAL_MAKEFILE is not defined 【发布时间】:2020-09-16 02:11:25 【问题描述】:我正在尝试构建一个项目,当我执行一个 gradle 任务来构建时,我收到以下错误:
~/Library/android/sdk/ndk/21.2.6472646/build/core/prebuilt-library.mk:20: *** Android NDK: Assertion failure: LOCAL_MAKEFILE is not defined . Stop.
我以前从未使用过 NDK,我不确定我需要从哪里开始。
显然LOCAL_MAKEFILE
没有定义,但是我应该在哪里定义呢?
如下,预建库文件的第 20 行:
15
16 # this file is included from prebuilt-shared-library.mk or
17 # prebuilt-static-library.mk to declare prebuilt library binaries.
18 #
19
20 $(call assert-defined, LOCAL_BUILD_SCRIPT LOCAL_MAKEFILE LOCAL_PREBUILT_PREFIX LOCAL_PREBUILT_SUFFIX)
21
22 $(call check-defined-LOCAL_MODULE,$(LOCAL_BUILD_SCRIPT))
23 $(call check-LOCAL_MODULE,$(LOCAL_MAKEFILE))
24 $(call check-LOCAL_MODULE_FILENAME)
25
有人知道发生了什么吗?
欢迎任何帮助!
现在谢谢!
【问题讨论】:
检查这个问题,和你的问题一样Question 我在发布我的问题之前阅读了这个答案。我尝试按照这些步骤操作,但我认为我们面临着不同的问题。 【参考方案1】:这是https://github.com/android/ndk/issues/1267。它将在即将发布的 NDK 版本中修复。仅当您的主 Android.mk 文件实际上未命名为 Android.mk 时才会出现此问题。
【讨论】:
【参考方案2】:在 NDK r21d 上同样的错误。感谢Dan Albert 提供patch。 这修复了错误:
在 build/core/definitions.mk 中更改行:
local-makefile = $(lastword $(filter %Android.mk,$(MAKEFILE_LIST)))
到
_last_android_mk = $(lastword $(filter %Android.mk,$(MAKEFILE_LIST)))
_last_non_ndk_makefile = $(lastword $(filter-out $(NDK_ROOT)%,$(MAKEFILE_LIST)))
local-makefile = $(if $(_last_android_mk),$(_last_android_mk),$(_last_non_ndk_makefile))
【讨论】:
【参考方案3】:要解决这个问题,我需要删除所有 NDK 版本并仅使用 19 和 20 版本。
【讨论】:
以上是关于Android NDK:断言失败:未定义 LOCAL_MAKEFILE的主要内容,如果未能解决你的问题,请参考以下文章
FIRESTORE (7.14.3) 内部断言失败:值必须未定义或 Uint8Array
使用 Android NDK 构建本机 OpenCV 会给出“对 'cv::String::deallocate()' 的未定义引用”
Android Studio NDK链接器错误未定义引用'cv :: _ OutputArray :: _ OutputArray(cv :: Mat&)'