【发布时间】:2020-10-15 09:45:49
【问题描述】:
这可能不是您第一次看到这样的问题。我已经研究了一些解释并意识到这与 Gradle 插件没有下载默认版本的 SDK 有关,并且由于在 CI 中您通常设置的机器可能没有安装完全相同的默认版本,那么它会失败。
参考资料:
- https://github.com/gradle/gradle/issues/12440
- https://github.com/actions/virtual-environments/issues/578
- Android: No version of NDK matched the requested version
我的问题是最终了解实际发生的情况,我很好奇 如果我什至没有在本地安装任何 NDK 版本,为什么它只在 CI 上失败而不是在本地失败
因此,我运行了与 CI (./gradlew assembleDebug) 中相同的命令,但最终只得到了这样的警告(构建成功):
> Task :app:stripDebugDebugSymbols UP-TO-DATE
WARNING: Compatible side by side NDK version was not found for android.ndkVersion '21.3.6528147'
Compatible side by side NDK version was not found for android.ndkVersion '21.3.6528147'
但是,CI 中的相同命令最终会得到以下结果:
2020-06-25T01:45:32.2616030Z > Task :app:mergeDebugNativeLibs
2020-06-25T01:45:32.3617430Z > Task :app:stripDebugDebugSymbols FAILED
2020-06-25T01:45:32.7615428Z
2020-06-25T01:45:32.7615773Z > Task :app:mergeExtDexDebug
2020-06-25T01:45:32.7657658Z FAILURE: Build failed with an exception.
2020-06-25T01:45:32.7658080Z
2020-06-25T01:45:32.7658405Z * What went wrong:
2020-06-25T01:45:32.7659460Z Execution failed for task ':app:stripDebugDebugSymbols'.
2020-06-25T01:45:32.7659848Z > No version of NDK matched the requested version 21.0.6113669. Versions available locally: 21.3.6528147
2020-06-25T01:45:32.7660128Z
2020-06-25T01:45:32.7660439Z * Try:
2020-06-25T01:45:32.7661003Z Run with --info or --debug option to get more log output. Run with --scan to get full insights.
2020-06-25T01:45:32.7661296Z
2020-06-25T01:45:32.7661602Z * Exception is:
2020-06-25T01:45:32.8621953Z org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:stripDebugDebugSymbols'.
2020-06-25T01:45:32.8622201Z 148 actionable tasks: 148 executed
所以,我想了解有什么区别,或者什么会导致 CI 的行为与我的本地设置不同。
我的本地设置:
- OSX Catalina 10.15.4
- 未安装 SDK
- Android Studio 4.0
CI 配置:
- GitHub Actions Android (ubuntu-18.04)
项目配置:
- Gradle Android 插件:4.0.0
- Gradle 版本(使用 wrapper 确保两个命令以相同版本执行):6.1.1
- 构建工具:29.0.3
欢迎任何建议,提前谢谢!
【问题讨论】:
标签: android gradle android-ndk android-gradle-plugin