微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 adb shell android 上的 ncurses

如何解决在 adb shell android 上的 ncurses

我正在尝试在 Android 上使用 ncurses 创建一个简约的命令行 gui。我为 ARM64 等交叉编译了 ncurses,一切似乎都在运行。然而;在 adb shell 中启动我的测试“hello world”ncurses 程序时,出现以下错误

Error opening terminal: xterm-256color.

当我尝试将 TERM 设置为 xterm 或我得到的东西时:

Error opening terminal: xterm.

有什么特别的方法我需要编译 ncurses 和/或配置 Android 以允许像这样的 CLI gui 运行吗?

解决方法

您需要一个终端数据库来运行 Curses 应用程序。显然没有安装(尽管可能存在终端数据库,其位置与 TERMINFOTERMINFO_DIRS 的编译默认值不对应)。

使用 ncurses,您可以配置和编译回退条目(在 INSTALL 源文件中讨论),如果在终端数据库中找不到终端描述,则使用这些条目:

为了在terminfo之前支持ncurses程序的运行 树是可访问的(即在单用户模式下或在操作系统安装时 时间)可以编译 ncurses 库以包含一个数组 预取回退条目。

注意:这必须在具有 ncurses 的 infocmp 和 已安装 terminfo 数据库(以及 ncurses 的 tic 和 infocmp 程式)。那是因为生成了回退源并且 在构建树的 infocmp 副本之前编译到库中 可用的。

setupterm() 仅在常规 从 terminfo 树和 termcap 回退(如果已配置)获取 已经尝试并失败了。因此,回退的存在不会 对相同类型的磁盘条目的影子修改,当 入口是可访问的。

,

所以诀窍是像这样配置 ncurses:

./configure --without-database --with-fallbacks=xterm-256color,vt100 --without-xterm-new --disable-home-terminfo --with-termlib --enable-termcap --disable-database --host=arm-linux-gnue

这允许在不依赖库的情况下在内部使用回退

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。