gradle build 未检测到 build.gradle 中的 android ndkVersion

Posted

技术标签:

【中文标题】gradle build 未检测到 build.gradle 中的 android ndkVersion【英文标题】:gradle build not detecting android ndkVersion in build.gradle 【发布时间】:2020-12-01 03:04:10 【问题描述】:

我正在尝试测试使用 aars 库的 pocketsphinx 的 android 演示。当我运行gradle installDebug 时,它崩溃了:

> Task :wear:stripDebugDebugSymbols FAILED
Task :wear:stripDebugDebugSymbols in app Starting
Gradle local properties file not found at /home/abhin/android/sphinx/local.properties
android.ndkVersion from module build.gradle is not set
ndk.dir in local.properties is not set
ANDROID_NDK_HOME environment variable is not set
sdkFolder is /home/abhin/android-sdk
Because no explicit NDK was requested, the default version '21.0.6113669' for this Android Gradle Plugin will be used
Considering /home/abhin/android-sdk/ndk-bundle in SDK ndk-bundle folder
Considering /home/abhin/android-sdk/ndk/21.0.6011959 in SDK ndk folder
Rejected /home/abhin/android-sdk/ndk-bundle in SDK ndk-bundle folder because that location has no source.properties
Rejected /home/abhin/android-sdk/ndk/21.0.6011959 in SDK ndk folder because that NDK had version 21.0.6011959 which didn't match the requested version 21.0.6113669
Task :wear:stripDebugDebugSymbols in app Finished

Here 它指出 gradle 4.0.0(我正在使用)默认为 ndk v21.0.6113669,但它也这么说

对于 AGP 3.6 及以上版本,该 NDK 版本将用于构建 如果您在 build.gradle 中指定 NDK 版本,您的项目 文件

所以在 app/build.gradle 中,我设置了:

android 
    ndkVersion '21.0.6011959'

但是,错误仍然出现。我跑了gradle clean,但打不通。

我正在使用 6.5.1 版通用安装的 gradle。

【问题讨论】:

【参考方案1】:

我终于让它工作了。构建失败的原因是项目文件夹有另一个文件夹wear,该文件夹与app 文件夹具有相同类型的文件,例如build.gradlesrc 文件夹等。所以在build.gradlewear 文件夹,我将 ndkVersion 设置为我在本地拥有的版本。它解决了这个问题。

【讨论】:

【参考方案2】:

在 Azure DevOps 的 CI 期间,我的 gradle 构建失败。我的错误信息与 OP 非常相似,以至于我认为我的问题也是 NDK 版本:

 1 > Task :app:stripDebugDebugSymbols FAILED
 2  Task :app:stripDebugDebugSymbols in app Starting
 3  Gradle local properties file not found at /Users/runner/work/1/s/MyApp/android/local.properties
 4  android.ndkVersion from module build.gradle is not set
 5  ndk.dir in local.properties is not set
 6  ANDROID_NDK_HOME environment variable is /Users/runner/Library/Android/sdk/ndk-bundle
 7  sdkFolder is /Users/runner/Library/Android/sdk
 8  Support for ANDROID_NDK_HOME is deprecated and will be removed in the future. Use android.ndkVersion in build.gradle instead.
 9  Considering /Users/runner/Library/Android/sdk/ndk-bundle by ANDROID_NDK_HOME
10  Considering /Users/runner/Library/Android/sdk/ndk-bundle in SDK ndk-bundle folder
11  Considering /Users/runner/Library/Android/sdk/ndk/21.4.7075529 in SDK ndk folder
12  Considering /Users/runner/Library/Android/sdk/ndk/23.0.7599858 in SDK ndk folder
13  Considering /Users/runner/Library/Android/sdk/ndk/18.1.5063045 in SDK ndk folder
14  Considering /Users/runner/Library/Android/sdk/ndk/22.1.7171670 in SDK ndk folder
15  No user requested version, choosing /Users/runner/Library/Android/sdk/ndk/23.0.7599858 which is version 23.0.7599858
16  Task :app:stripDebugDebugSymbols in app Finished

区别在第 8 行:Support for ANDROID_NDK_HOME is deprecated and will be removed in the future. Use android.ndkVersion in build.gradle instead.

构建输出中充斥着“支持...已弃用”的消息,所以我从不认为这是问题所在。它是。当我使用调试输出 (build --debug) 运行构建时,我发现弃用警告是致命的:

[WARN] [com.android.build.gradle.internal.cxx.logging.ErrorsAreFatalThreadLoggingEnvironment] 
Support for ANDROID_NDK_HOME is deprecated and will be removed in the future. Use android.ndkVersion in build.gradle instead.

后来我也发现微软应用中心有警告:

Gradle 任务失败可能与需要 gradle 插件 4.0+ 的 NDK 23 有关。如果您使用较旧的 gradle 插件版本,请降级到 NDK 22 或更低版本。

我选择升级插件。 我有一个旧版本的 Android Studio。当我升级到 11.0.10 时,它包含一个新功能,该功能确定我需要更新 Android Gradle 插件。 我将 AGP 更新到 4.2.1 这解决了我的问题。

【讨论】:

以上是关于gradle build 未检测到 build.gradle 中的 android ndkVersion的主要内容,如果未能解决你的问题,请参考以下文章

在android studio2.0中,配置databinding问题

未解决的参考:build.gradle.kts 中的 compileKotlin

gradle项目中 build.gradle 配置文件详解(未完成)

gradle项目中 build.gradle 配置文件详解(未完成)

为啥 docker build 中的 COPY 未检测到更新

未解决的参考:build.gradle.kts中的KotlinCompilerVersion