Bitbucket管道:在ABI的NDK工具链文件夹中找不到工具链,前缀为:aarch64-linux-android

Omk*_*kar 7 android android-ndk docker dockerfile bitbucket-pipelines

我对Bitbucket Pipelines的 CI完全不熟悉,目前正在本文的帮助下建立管道.由于此错误,我的构建失败

"在带有前缀的ABI的NDK工具链文件夹中找不到工具链:aarch64-linux-android"

谁能帮我解决这个问题?

Ste*_*fMa 7

今天我遇到了和你一样的问题.我也跟着你提到的博客文章.随你.我很高兴向您汇报:我修好了它并找到了一个"解决方案"!

有趣的是:解决方案如此简单愚蠢.您唯一需要做的就是unset(或删除)NDK环境变量(或目录).

神奇的线条是:

- unset ANDROID_NDK_HOME
Run Code Online (Sandbox Code Playgroud)

这意味着我的决赛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
Run Code Online (Sandbox Code Playgroud)

为什么要解决这个问题?

老实说.我不知道 .但我发现ubers会为你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.
Run Code Online (Sandbox Code Playgroud)

unset 环境变量也修复了该警告.

重要:

显然这不是最好的解决方案.如果您的应用程序使用NDK,此解决方案将无济于事.在CI脚本中"从Docker镜像"中删除一些环境变量也不是最佳解决方案.也许图像后来需要变量(不知道在Docker中是否可行......但你知道我的意思).但它会"暂时"修复问题,因为android-build-environment无论如何都没有维护(一年之后不更新)无论如何我都不会付出太多努力来修复图像......

注意:uber:android-build-environment GitHub页面的链接指的是单个(当前最后一次)提交.如果有人在将来读取该链接仍然是活动且正确但可能master分支已更改.


Arm*_*yan 0

您需要下载android ndk并安装类似于这样的独立工具链

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

有时您必须为工具链创建环境变量。