Bitbucket Pipelines: No toolchains found in the NDK toolchains folder for ABI with prefix: aarch64-linux-android Bitbucket Pipelines: No toolchains found in the NDK toolchains folder for ABI with prefix: aarch64-linux-android docker docker

Bitbucket Pipelines: No toolchains found in the NDK toolchains folder for ABI with prefix: aarch64-linux-android


Today I run into the same issue like you. I also followed the blog post you mentioned. Whatever. I'm happy to report you: I fixed it and found a "solution"! 😄

The funny part is: The solution so dumb as simple. The only thing you have to do is to unset (or remove) the NDK environment variable (or directory).

The magic line is:

- unset ANDROID_NDK_HOME

Which means that my final bitbucket-pipelines.yml looks like:

image: uber/android-build-environment:latestpipelines:  default:    - step:        script:          - unset ANDROID_NDK_HOME          - ./ci/accept_android_license.sh          - ./gradlew :app:testDebugUnitTest

Why does it fix the issue?

To be honest. I don't know 😅. But I found out that the ubers android-build-environment install the NDK for you.

I found some answers - like here - to install the NDK separately again. But I thought about the following: Why the hell should I install/update the NDK if my project doesn't use it? So I tried to remove the NDK folder (which according to the Dockerfile located at /usr/local/android-ndk) and everything works 🎉.

Why unsetting then?

You can't remove the android-ndk dir because you don't have permission to do it. But you can delete the content from it. That is the reason why it worked with rm -rf /usr/local/android-ndk. But then - with the setting of ANDROID_NDK_HOME but without any content in there you got the error message (while building):

./gradlew :app:testDebugUnitTestNDK 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 the environment variable fix that warning as well.

Important:

Obviously that is not the best solution. If your App uses the NDK this solution will not help. To remove some environment variables "from a Docker image" in a CI script is also not the best solution. Maybe the image need the variable later (don't know if that is possible in Docker... but you know what I mean 😉). But it will "temporary" fix the problem and since the android-build-environment is unmaintained (not update since a year) anyway I would not put to much effort in fixing the image...

Note: The link to the uber:android-build-environment GitHub page refers to a single (currently the last) commit. If someone read that in the future the link is still active and correct but maybe the master branch have changed.


cd .../AndroidSdk/ndk-bundle/toolchainsln -s aarch64-linux-android-4.9 mips64el-linux-android-4.9ln -s arm-linux-androideabi-4.9 mipsel-linux-android-4.9


You need to download android ndk and install the standalone toolchain similar like this

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

Sometimes you have to create the environmental variable for the toolchain.