Android NDK:断言失败:LOCAL_MAKEFILE 未定义

Android NDK: Assertion failure: LOCAL_MAKEFILE is not defined

我正在尝试构建一个项目,当我执行 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  

有人知道发生了什么事吗?

欢迎大家的帮助!

暂时谢谢!

要解决该问题,我需要删除所有 NDK 版本并仅使用 19 和 20 版本。

在 NDK r21d 上同样的错误。谢谢Dan Albert for the 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))

这是https://github.com/android/ndk/issues/1267。它将在即将发布的 NDK 版本中修复。只有当您的主 Android.mk 文件实际上未命名为 Android.mk.

时才会出现此问题