Caused by: java.lang.RuntimeException: No toolchains found in the NDK toolchains folder for ABI with prefix: arm-linux-androideabi
时间: 2025-05-27 11:18:37 浏览: 19
### 关于NDK中缺少arm-linux-androideabi工具链导致的`java.lang.RuntimeException`
当遇到`java.lang.RuntimeException: No toolchains found in the NDK to handle abi 'armeabi-v7a'`错误时,通常是因为NDK版本更新后移除了对某些ABI的支持。从NDK r17开始,官方已经逐步淘汰了对32位架构(如armeabi)的支持[^3]。
以下是针对该问题的具体分析和解决方法:
#### 1. 检查NDK版本
如果当前使用的NDK版本较高(例如r17及以上),则可能不再支持`arm-linux-androideabi`工具链。建议确认NDK版本并调整配置文件中的ABIs设置。可以通过以下方式验证NDK路径是否存在对应的工具链:
```bash
ls $ANDROID_NDK_HOME/toolchains/
```
如果没有发现`arm-linux-androideabi`相关的目录,则说明此NDK版本确实不支持旧版工具链[^4]。
#### 2. 使用兼容的NDK版本
为了继续使用`arm-linux-androideabi`工具链,可以选择安装较早版本的NDK(如r16b)。下载地址可以从Google开发者官网获取,并将其解压到指定位置。随后修改环境变量指向新的NDK路径:
```bash
export ANDROID_NDK_HOME=/path/to/older_ndk_version
```
#### 3. 修改Application.mk文件
在项目根目录下的`Application.mk`文件中显式声明所需的ABIs。例如仅保留对`armeabi-v7a`的支持可以这样写入:
```makefile
APP_ABI := armeabi-v7a
```
注意这里并未提及已废弃的`armeabi` ABI名称[^5]。
#### 4. 更新CMakeLists.txt或Android.mk脚本
对于基于Gradle构建的应用程序来说,还需要同步更改`build.gradle`里的ndk属性部分;而对于传统makefile流程而言,则需确保`Android.mk`里正确指定了目标平台参数:
```makefile
LOCAL_MODULE := hello-jni
LOCAL_SRC_FILES := hello-jni.c
include $(BUILD_SHARED_LIBRARY)
```
以上操作完成后重新执行编译指令即可解决问题。
```python
print("Rebuilding project after fixing NDK configuration.")
```
阅读全文
相关推荐



















