我对使用Bitbucket Pipelines的 CI 完全陌生,目前正在本文的帮助下设置管道。由于此错误,我的构建失败
“在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:aarch64-linux-android”
谁能帮我解决这个问题?
我对使用Bitbucket Pipelines的 CI 完全陌生,目前正在本文的帮助下设置管道。由于此错误,我的构建失败
“在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:aarch64-linux-android”
谁能帮我解决这个问题?
今天我遇到了和你一样的问题。我也关注了你提到的博客文章。任何。我很高兴向您报告:我已修复它并找到了“解决方案”!
有趣的是:解决方案如此简单。您唯一需要做的就是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
为什么它可以解决问题?
老实说。我不知道 。但我发现uber
s为你android-build-environment
安装了 NDK。
我找到了一些答案——比如这里——再次单独安装 NDK。但我想到了以下问题:如果我的项目不使用 NDK,我为什么要安装/更新它?所以我尝试删除 NDK 文件夹(根据Dockerfile
位于的位置/usr/local/android-ndk
)并且一切正常。
那为什么要unset
叮?
您无法删除该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,此解决方案将无济于事。在脚本中“从 Docker 映像”中删除一些环境变量CI
也不是最好的解决方案。也许图像稍后需要该变量(不知道这在 Docker 中是否可行……但你知道我的意思)。但它会“临时”解决问题,因为它android-build-environment
没有维护(一年后没有更新),我不会花太多精力来修复图像......
注意: GitHub 页面的链接
uber:android-build-environment
指的是单个(当前是最后一个)提交。如果将来有人读到该链接仍然有效且正确,但master
分支可能已更改。
cd .../AndroidSdk/ndk-bundle/toolchains
ln -s aarch64-linux-android-4.9 mips64el-linux-android-4.9
ln -s arm-linux-androideabi-4.9 mipsel-linux-android-4.9
您需要下载android ndk
并安装类似这样的独立工具链
$NDK/build/tools/make_standalone_toolchain.py \
--arch arm --api 21 --install-dir /tmp/my-android-toolchain
有时您必须为工具链创建环境变量。