首页 > 解决方案 > 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 吗?

标签: androidcshellterminalncurses

解决方案


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

使用 ncurses,您可以配置和编译在INSTALL终端数据库中找不到终端描述时使用的后备条目(在源文件中讨论):

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

注意:这必须在安装了 ncurses 的 infocmp 和 terminfo 数据库(以及 ncurses 的 tic 和 infocmp 程序)的机器上完成。这是因为在构建树的 infocmp 副本可用之前,会生成回退源并将其编译到库中。

仅当从 terminfo 树的常规提取和 termcap 回退(如果已配置)已尝试并失败时,setupterm() 才会检查这些条目。因此,当该条目可访问时,回退的存在不会影响对相同类型的磁盘条目的修改。


推荐阅读