【问题标题】:Bitbucket Pipelines: No toolchains found in the NDK toolchains folder for ABI with prefix: aarch64-linux-androidBitbucket 管道:在 ABI 的 NDK 工具链文件夹中找不到工具链,前缀为:aarch64-linux-android
【发布时间】:2017-10-20 03:29:19
【问题描述】:

我是 Bitbucket Pipelines 的 CI 新手,目前正在 this article 的帮助下设置管道。由于此错误,我的构建失败

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

谁能帮我解决这个问题?

【问题讨论】:

标签: android docker android-ndk dockerfile bitbucket-pipelines


【解决方案1】:

今天我遇到了和你一样的问题。我也关注了你提到的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-ndkDockerfile),一切正常?。

那为什么是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 分支已更改。

【讨论】:

    【解决方案2】:
    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
    

    【讨论】:

    • 虽然这段代码 sn-p 可以解决问题,但including an explanation 确实有助于提高帖子的质量。请记住,您正在为将来的读者回答问题,而这些人可能不知道您的代码建议的原因。也请尽量不要用解释性的 cmets 挤满你的代码,这会降低代码和解释的可读性!
    【解决方案3】:

    你需要下载android ndk并安装类似这样的standalone toolchain

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

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

    【讨论】:

      猜你喜欢
      • 2019-05-14
      • 2023-03-02
      • 2019-02-11
      • 2022-11-22
      • 2016-09-30
      • 2019-04-15
      • 1970-01-01
      • 2019-04-28
      • 2016-05-09
      相关资源
      最近更新 更多