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

时间:2017-05-19 21:55:19

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

我对CI Bitbucket Pipelines完全不熟悉,目前正在this article的帮助下设置管道。由于此错误,我的构建失败

  

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

任何人都可以帮我解决这个问题吗?

3 个答案:

答案 0 :(得分:7)

今天我遇到了和你一样的问题。我也跟着你提到的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

为什么要解决此问题?

说实话。我不知道。但是我发现了uber s android-build-environment install the NDK

我找到了一些答案 - 比如here - 再次单独安装NDK。但我想到了以下内容:如果我的项目没有使用它,为什么我应该安装/更新NDK呢?所以我尝试删除NDK文件夹(根据位于/usr/local/android-ndk的{​​{3}}),一切正常。

为什么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没有维护(一年后不更新)无论如何我都不会花太多精力来修复图像......

  

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

答案 1 :(得分:4)

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

答案 2 :(得分:0)

您需要下载android ndk并安装与此类似的standalone toolchain

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

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