Bitbucketpipe道:没有工具链在NDK工具链文件夹中findABI的前缀:aarch64-linux-android

对于使用Bitbucket Pipelines的 CI来说,我是一个完全陌生的人,并且正在通过本文的帮助来设置pipe道。 由于此错误,我的构build失败

“在NDK工具链文件夹中找不到工具链,前缀为:aarch64-linux-android”

任何人都可以帮我修理这个?

今天我遇到像你一样的问题。 我也跟着你提到的博客文章 。 随你。 我很高兴向你汇报:我修好了,find了一个“解决scheme”! 😄

有趣的是:解决scheme非常简单。 你唯一要做的就是unset (或删除)NDK环境variables(或目录)。

神奇的线是:

 - 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 android-build-environment为你安装NDK 。

我发现了一些答案 – 就像这里 – 再次单独安装NDK。 但我想到了以下几点:如果我的项目不使用它,为什么我应该安装/更新NDK? 所以我试图删除NDK文件夹(根据位于/usr/local/android-ndk Dockerfile),一切正常。

那为什么unset呢?

您无法删除android-ndk目录,因为您没有权限执行此操作。 但是您可以从中删除内容。 这就是rm -rf /usr/local/android-ndk 。 但是,随着ANDROID_NDK_HOME的设置,但没有任何内容,你有错误信息(build设时):

 ./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环境variables也修复该警告。

重要:

显然这不是最好的解决scheme。 如果你的应用程序使用NDK这个解决scheme将无济于事。 要在CI脚本中从“Docker镜像”中删除一些环境variables也不是最好的解决scheme。 也许以后的图像需要variables(不知道在Docker中是否可行…但是你知道我的意思是什么)。 但它会“临时”解决这个问题,而且由于android-build-environment是无人维护的(不是一年以来没有更新),反正我不会付出太多努力来修复图像。

注意:uber:android-build-environment GitHub页面的链接指向单个(当前是最后一个)提交。 如果有人在将来阅读,链接仍然是主动和正确的,但也许master分支已经改变。

你需要下载android ndk并像这样安装独立的工具链

$NDK/build/tools/make_standalone_toolchain.py \ --arch arm --api 21 --install-dir /tmp/my-android-toolchain

有时你必须为工具链创build环境variables。