我对CI Bitbucket Pipelines完全不熟悉,目前正在this article的帮助下设置管道。由于此错误,我的构建失败
“ABI的NDK工具链文件夹中找不到工具链,前缀为:aarch64-linux-android”
任何人都可以帮我解决这个问题吗?
答案 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
有时您必须为工具链创建环境变量。