AndroidStudio 编译原生代码显示“fcntl(): Bad file descriptor”
Posted
技术标签:
【中文标题】AndroidStudio 编译原生代码显示“fcntl(): Bad file descriptor”【英文标题】:AndroidStudio compiling native code shows "fcntl(): Bad file descriptor" 【发布时间】:2020-10-02 11:25:07 【问题描述】:我有一个旧版应用程序,一位开发人员在 androidStudio 中构建我们的原生 cpp 代码时看到了 fcntl(): Bad file descriptor
。
我们的构建环境支持使用本地安装的 NDK 以及通过 AndroidStudio 从命令行构建(用于编写脚本和执行日常自动构建)。我们设置local.properties
指向本地安装的NDK。
我无法确定fcntl
错误的原因,并且在运行 NDK r17 时自己没有看到它。然后我更新到 NDK r21d(2020 年 6 月)并立即在 AndroidStudio 中看到相同的内容。
fcntl(): Bad file descriptor
[arm64-v8a] Compile++ : vhc_jnilib <= Png.cc
fcntl(): Bad file descriptor
[arm64-v8a] Compile++ : vhc_jnilib <= Jpeg.cc
fcntl(): Bad file descriptor
[arm64-v8a] Compile++ : vhc_jnilib <= MyContainer.cc
fcntl(): Bad file descriptor
[arm64-v8a] Compile++ : vhc_jnilib <= aIdentityInfo.cc
fcntl(): Bad file descriptor
[arm64-v8a] Compile++ : vhc_jnilib <= UpdateImage.cc
fcntl(): Bad file descriptor
Android Studio 4.0、MacOS Catalina 10.15.4、Gradle 6
问题:
知道如何获取有关生成此警告的工具的更多信息吗? 这意味着什么?能否将其静音或修复?【问题讨论】:
在此处查看相关讨论:jira.appcelerator.org/browse/TIMOB-27776 这有什么更新吗?请告诉我.. @DeepDave 否,已更新到最新的 AndroidStudio 4.0.1,现在为 API 30 构建,但仍然看到相同的内容。 @spartygw 我删除了 NDK 代码。如果需要,我下次会使用 cmake Anton 提到的错误,说是在 2020 年 6 月修复。Closing ticket, Fix verified SDK version 9.0.3.v20200609060523 and SDK version 9.1.0.v20200609061322
但我今天仍然收到错误。 @spartygw 你找到解决方案了吗?谢谢
【参考方案1】:
项目路径不能有空格。
我也遇到过同样的问题,当我把项目路径中的空格去掉后,问题就解决了。
【讨论】:
谢谢,不适用于我。我的项目路径中没有空格。 确保检查您的驱动器名称,我的驱动器名称中有空格。删除它,现在一切正常! 2021年这怎么还是个问题!【参考方案2】:我遇到了同样的问题。我不确定它的实际原因是什么,但我通过删除.gradle
、.cxx
和build
目录然后重建项目来解决它。
【讨论】:
对我来说没有变化。您使用的是哪个版本的 AndriodStudio 和 NDK? 我使用的是 Android Studio 4.1,NDK 版本:r21d (21.3.6528147),Gradle 版本:6.5,MacOS Catalina (10.15.7)。删除上述目录后,请尝试File
菜单下的invalidate caches/Restart
和Build
菜单下的Refresh Linked C++ projects
?
刚刚尝试了无效和刷新,但仍然看到fcntl
错误【参考方案3】:
我在编译 tess-two 库时收到此警告已有一段时间了。我刚刚将我的 Android NDK 版本升级到最新版本 - 23.1.7779620 - 警告已经消失。因此,我建议遇到此问题的任何人都应该升级他们的 NDK。
【讨论】:
以上是关于AndroidStudio 编译原生代码显示“fcntl(): Bad file descriptor”的主要内容,如果未能解决你的问题,请参考以下文章
为啥编译时库模块中的包不存在,即使 Android Studio 显示代码中没有错误?