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.gradle
、src
文件夹等。所以在build.gradle
的wear
文件夹,我将 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.
后来我也发现微软应用中心有警告:
我选择升级插件。 我有一个旧版本的 Android Studio。当我升级到 11.0.10 时,它包含一个新功能,该功能确定我需要更新 Android Gradle 插件。 我将 AGP 更新到 4.2.1 这解决了我的问题。Gradle 任务失败可能与需要 gradle 插件 4.0+ 的 NDK 23 有关。如果您使用较旧的 gradle 插件版本,请降级到 NDK 22 或更低版本。
【讨论】:
以上是关于gradle build 未检测到 build.gradle 中的 android ndkVersion的主要内容,如果未能解决你的问题,请参考以下文章
在android studio2.0中,配置databinding问题
未解决的参考:build.gradle.kts 中的 compileKotlin
gradle项目中 build.gradle 配置文件详解(未完成)
gradle项目中 build.gradle 配置文件详解(未完成)