今天我遇到了和你一样的问题。我也关注了你提到的blog post。任何。我很高兴向您报告:我已修复它并找到了“解决方案”! ?
有趣的是:解决方案如此简单。您唯一需要做的就是unset(或删除)NDK 环境变量(或目录)。
魔法线是:
- unset ANDROID_NDK_HOME
这意味着我的最终bitbucket-pipelines.yml 看起来像:
image: uber/android-build-environment:latest
pipelines:
default:
- step:
script:
- unset ANDROID_NDK_HOME
- ./ci/accept_android_license.sh
- ./gradlew :app:testDebugUnitTest
为什么它可以解决问题?
说实话。我不知道?。但我发现ubers android-build-environment install the NDK 适合你。
我找到了一些答案——比如here——再次单独安装 NDK。但我想到了以下问题:如果我的项目不使用 NDK,我为什么要安装/更新它?所以我尝试删除 NDK 文件夹(根据位于 /usr/local/android-ndk 的 Dockerfile),一切正常?。
那为什么是unsetting?
您无法删除 android-ndk 目录,因为您无权执行此操作。但是您可以从中删除内容。这就是它与rm -rf /usr/local/android-ndk 一起工作的原因。但是然后 - 使用 ANDROID_NDK_HOME 的设置但没有任何内容,您会收到错误消息(在构建时):
./gradlew :app:testDebugUnitTest
NDK is missing a "platforms" directory.
If you are using NDK, verify the ndk.dir is set to a valid NDK directory. It is currently set to /usr/local/android-ndk.
If you are not using NDK, unset the NDK variable from ANDROID_NDK_HOME or local.properties to remove this warning.
unset 环境变量也修复了该警告。
重要:
显然这不是最好的解决方案。如果您的应用程序使用 NDK,此解决方案将无济于事。在CI 脚本中“从 Docker 映像”中删除一些环境变量也不是最好的解决方案。也许图像稍后需要该变量(不知道这在 Docker 中是否可行......但你知道我的意思?)。但它会“临时”解决问题,并且由于 android-build-environment 没有维护(一年后没有更新),我不会花太多精力来修复图像......
注意:uber:android-build-environment GitHub 页面的链接指的是单个(当前是最后一个)提交。如果将来有人读到该链接仍然有效且正确,但可能master 分支已更改。