Caused by: java.io.IOException: error=2, No such file or directory

本文主要讲述Android项目升级后无法正常编译运行,报错显示java IO异常、找不到文件或目录。经分析,是Google在新版本NDK中删去了对mips指令集CPU预编译的支持。文中给出三种解决办法,如配置打包参数排除文件、删除相关so文件、回退NDK版本等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Caused by: java.io.IOException: error=2, No such file or directory

本着尝鲜的心态,最近把Android studio升级到了Android Studio 3.1.2,升级之后项目突然不能正常编译运行了,报:

:app:transformNativeLibsWithStripDebugSymbolForDebug

Caused by: java.io.IOException: error=2, No such file or directory

详细报错信息:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54

问题分析:

看最后一段报错信息:

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

java IO异常,找不到文件或者目录。一般报这种问题,都是缺少文件。既然是缺少文件,那我们向上看,看看缺少哪些文件或者目录,找到了这个路径:

  • 1

我们根据这个路径,去看看是不是真的缺少这个文件或者目录:

这里写图片描述

/Users/yang/Library/Android/sdk/ndk-bundle/toolchains/mips64el-linux-android-4.9/prebuilt/darwin-x86_64/

上面这个目录下缺少文件,只到了.../prebuilt/darwin-x86_64/这个层级,缺少.../prebuilt/darwin-x86_64/bin/mips64el-linux-android-strip

这个目录是ndk预编译的一种工具链,用来预编译以mips CPU指令集的so文件。

这里写图片描述

我们看到Android SDK中ndk的版本为17.0.4754217,最新的。我们猜测Google是在新版本的NDK中删去了对mips指令集CPU预编译的支持。

我们找一下老版本的NDK文件,看看该目录下是不是有完整的mips工具链文件,从这里下载老版本NDK文件: 
https://developer.android.com/ndk/downloads/older_releases

这里写图片描述

我们下载上一个版本16b,下载解压后,到相同路径下去看,文件都是齐全的:

这里写图片描述

至此我们找到了问题的原因,Google在新版本17.0.4754217的NDK中,删去了对mips指令集CPU预编译的支持,在预编译具有mips的so文件的项目时,就会报缺少文件或者目录的错误

解决办法:

第一种:

这种方法最简单,在gradle文件中配置打包参数,打包时排除/mips64//mips/文件下的所有so文件。

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
第二种:

删除/mips64//mips/文件下的所有so文件

这里写图片描述

第三种:

将SDK中的NDK回退到16b版本,去这里下载16b版本的ndk文件 
https://developer.android.com/ndk/downloads/older_releases

解压之后,替换掉原来SDK中的ndk-bundle文件,即.../Android/sdk/ndk-bundle/

或者将解压后的.../prebuilt/darwin-x86_64/,复制过去,这样17版本的ndk也具有了预编译mips so文件的能力

参考:

https://stackoverflow.com/questions/50253566/after-using-android-studio-3-1-2-it-showing-error-2-no-such-file-or-directory

https://stackoverflow.com/questions/50300179/gradle-build-fails-following-update-of-android-studio-to-3-1-2

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值