Termux 是一个 Android 终端应用程序和 Linux 环境。
请注意,此存储库适用于应用程序本身(用户界面和终端仿真)。有关应用程序内可安装的软件包,请参阅 termux/termux-packages。
有关 Termux 包管理的快速操作方法可在包管理中找到。它还包含有关如何在运行apt
或pkg
命令时修复repository is under maintenance or down
错误的信息。
我们正在寻找 Termux Android 应用程序维护人员。
注意:Termux 在 Android 12+ 上可能不稳定。 Android 操作系统将杀死任何大于 32 的(虚拟)进程(限制适用于所有应用程序的组合),并且还会杀死任何使用过多 CPU 的进程。您可能会在终端中收到[Process completed (signal 9) - press Enter]
消息,而无需实际退出 shell 进程。检查相关问题#2366、问题跟踪器、幻影缓存和空进程文档以及有关如何禁用幻影和过多 CPU 使用进程的修剪的 TLDR 评论。稍后将添加适当的文档页面。 Android 12L 或 13 中应该提供禁用查杀的选项,因此如果您使用的是 Android 11,请自行承担升级风险,特别是如果您未获得 root 权限。
核心 Termux 应用程序附带以下可选插件应用程序。
最新版本是v0.118.1
。
注意:强烈建议您尽快更新到v0.118.0
或更高版本,以修复各种错误,包括此处报告的一个全球可读的严重漏洞。有关 Google Play 上 Termux 的信息,请参阅下文。
Termux 可以通过下面列出的各种来源获取,仅适用于 Android >= 7
并且完全支持应用程序和软件包。
2020 年 1 月 1 日v0.83
版本中,Android 5
和6
不再支持应用程序和软件包,但仅针对应用程序重新添加了支持,且不支持 2022 年 5 月 24 日通过 GitHub 源进行的软件包更新。详情请点击这里。
不同来源的APK文件使用不同的签名密钥进行签名。 Termux
应用程序及其所有插件使用相同的sharedUserId
com.termux
,因此设备上安装的所有 APK 都必须使用相同的签名密钥进行签名才能协同工作,因此它们必须全部从同一源安装。不要尝试将它们混合在一起,即不要尝试安装来自F-Droid
应用程序或插件以及来自不同来源(如GitHub
的另一个应用程序或插件。 Android 包管理器通常也不允许安装具有不同签名的 APK,并且您会在安装时遇到错误,例如App not installed
、 Failed to install due to an unknown error
、 INSTALL_FAILED_UPDATE_INCOMPATIBLE
、 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE
、 signatures do not match previously installed version
等。可以使用 root 或自定义 rom 绕过限制。
如果您希望从其他来源安装,则必须首先从设备中卸载所有现有 Termux 或其插件应用程序 APK ,然后从同一新来源安装所有新 APK。有关详细信息,请检查卸载部分。您可能还需要考虑在卸载之前备份 Termux,以便在从不同来源重新安装 Termux 后可以恢复它。
在以下段落中, “bootstrap”指的是termux-app
本身附带的用于启动工作 shell 环境的最小软件包。它的 zip 是在这里构建和发布的。
Termux 应用程序可以从此处从F-Droid
获取。
您无需下载F-Droid
应用程序(通过Download F-Droid
链接)即可安装 Termux。您可以通过单击每个版本部分底部的Download APK
链接直接从网站下载 Termux APK。
在GitHub
上发布更新后,通常需要几天(甚至一周或更长时间)才能在F-Droid
上提供更新。一旦 F-Droid 检测到新的GitHub
版本, F-Droid
版本就会由F-Droid
构建和发布。 Termux 维护者对F-Droid
上 Termux 应用程序的构建和发布没有任何控制权。此外,Termux 维护者也无权访问F-Droid
版本的 APK 签名密钥,因此我们无法自己在GitHub
上发布与F-Droid
版本兼容的 APK。
F-Droid
应用程序通常可能不会通知您更新,您必须手动在应用程序的Updates
选项卡中执行下拉滑动操作才能检查更新。确保应用程序禁用电池优化,请查看 https://dontkillmyapp.com/ 了解如何执行此操作的详细信息。
仅发布了通用 APK,它将适用于所有支持的架构。 APK 和 bootstrap 安装大小~180MB
。 F-Droid
不支持特定于架构的 APK。
Termux 应用程序可以在GitHub
上从版本>= 0.118.0
的GitHub Releases
或从GitHub Build Action
工作流程获取。对于 android >= 7
,仅安装apt-android-7
变体。对于 android 5
和6
,仅安装apt-android-5
变体。
GitHub Releases
的 APK 将列在版本的Assets
下拉列表中。当新版本发布时,这些会自动附加。
GitHub Build
操作工作流程的 APK 将列在工作流程运行的Artifacts
部分下。这些是为对存储库完成的每次提交/推送而创建的,可供不想等待发布并希望立即尝试最新功能或想要测试其拉取请求的用户使用。请注意,对于操作工作流程,您需要登录GitHub
帐户才能启用/可单击Artifacts
链接。如果您使用GitHub
应用程序,请确保在已登录 GitHub 帐户的 Chrome 或 Firefox 等浏览器中打开工作流程链接,因为应用程序内浏览器可能未登录。
这两者的 APK 都是debuggable
并且彼此兼容,但它们与其他源不兼容。
通用和特定于架构的 APK 均已发布。如果使用通用,则 APK 和引导程序安装大小~180MB
,如果使用特定架构,则~120MB
。详情请点击此处。
安全警告:GitHub 上的 APK 文件使用已与社区共享的测试密钥进行签名。这不是官方的开发人员密钥,每个人都可以使用它来生成版本以进行自己的测试。使用除 https://github.com/termux/termux-app 之外的其他地方获得的 Termux GitHub 版本时要非常小心。每个人都可以使用它来伪造可通过 GitHub 构建安装的恶意 Termux 更新。在安装通过 Telegram 或其他社交媒体分发的 Termux 版本时请三思。如果您的设备被恶意软件捕获,我们将无法为您提供帮助。
测试密钥不得用于模拟@termux,并且无论如何也不能用于此目的。我们不信任该密钥,并且很容易检测到它在用户生成的内容中的使用。
Alias name: alias
Creation date: Oct 4, 2019
Entry type: PrivateKeyEntry
Certificate chain length: 1
Certificate[1]:
Owner: CN=APK Signer, OU=Earth, O=Earth
Issuer: CN=APK Signer, OU=Earth, O=Earth
Serial number: 29be297b
Valid from: Wed Sep 04 02:03:24 EEST 2019 until: Tue Oct 26 02:03:24 EEST 2049
Certificate fingerprints:
SHA1: 51:79:55:EA:BF:69:FC:05:7C:41:C7:D3:79:DB:BC:EF:20:AD:85:F2
SHA256: B6:DA:01:48:0E:EF:D5:FB:F2:CD:37:71:B8:D1:02:1E:C7:91:30:4B:DD:6C:4B:F4:1D:3F:AA:BA:D4:8E:E5:E1
Signature algorithm name: SHA1withRSA (disabled)
Subject Public Key Algorithm: 2048-bit RSA key
Version: 3
目前,Google Play 上提供了适用于 Android 11+ 设备的 Termux 版本,并进行了广泛的调整,以便通过那里的政策要求。与稳定的 F-Droid 版本相比,它正在开发中,并且缺少功能和错误(请参阅此处了解状态更新),这就是为什么大多数可以使用 F-Droid 或 GitHub 版本的用户仍应使用上面提到的 F-Droid 或 GitHub 版本。
目前,Google Play 将尝试更新 F-Droid 之外的安装。由于sharedUserId已被删除,更新仍然会失败。计划发布的 0.118.1 F-Droid 版本将通过设置比 PlayStore 应用程序更高的版本代码来解决此问题。同时,为了防止 Google Play 尝试下载 Google Play 版本并在现有安装上安装失败,您可以打开 Google Play 上的 Termux 应用程序页面,然后单击右上角的 3 点选项按钮,然后禁用启用自动更新切换。但是,Termux 应用程序更新仍会显示在 PlayStore 应用程序更新列表中。
如果您想帮助测试 Google Play 版本(或无法从其他来源安装 Termux),请注意它是从单独的存储库 (https://github.com/termux-play-store/) 构建的 - 请确保在那里报告问题,因为遇到的任何问题很可能都是该存储库特有的。
如果用户不想再在其设备中安装 Termux 或者要切换到其他安装源,则可能需要卸载。您可能还需要考虑在卸载之前备份 Termux。
要完全卸载 Termux,您必须卸载 Termux 应用程序和插件中列出的所有现有 Termux 或其插件应用程序 APK 。
转到Android Settings
-> Applications
,然后查找这些应用程序。您还可以使用搜索功能(如果您的设备上可用)并在应用程序列表中搜索termux
。
即使您认为自己尚未安装任何插件,也强烈建议您仔细检查 Android 设置中的应用程序列表并仔细检查。
所有社区链接都可以在这里找到。
主要有以下几种。
RUN_COMMAND
意图在 Termux 中从其他应用程序运行命令VTE (libvte):GTK+ 的终端仿真器小部件,主要用于 gnome-terminal。来源、未决问题和所有(包括已关闭)问题。
iTerm 2:OS X 终端应用程序。来源、问题和文档(包括 iTerm2 专有转义代码)。
Konsole:KDE 终端应用程序。来源,特别是测试、错误和愿望。
hterm:Chromium 的 JavaScript 终端实现。来源,包括测试和 Google 小组。
xterm:终端模拟器的鼻祖。来源。
Connectbot:Android SSH 客户端。来源
Android 终端模拟器:Termux 终端处理所基于的 Android 终端应用程序。不活跃。来源。
您可以通过在Termux
应用程序设置 ->
-> Debugging
-> Log Level
(需要Termux
应用程序版本>= 0.118.0
)中设置适当的logcat
Log Level
来帮助调试Termux
应用程序及其插件的问题。 Log Level
默认为Normal
,日志级别为Verbose
当前记录其他信息。完成调试后最好将日志级别恢复为Normal
,因为否则私有数据可能会在正常操作期间传递到logcat
,而且额外的日志记录会增加执行时间。
插件应用程序本身并不执行命令,而是将执行意图发送到Termux
应用程序,该应用程序有自己的日志级别,可以在Termux
应用程序设置 -> Termux
-> Debugging
-> Log Level
中设置。因此,您必须为Termux
和相应的插件应用程序设置设置日志级别才能获取所有信息。
设置日志级别后,您可以在Termux
应用程序终端中运行logcat
命令来实时查看日志( Ctrl+c
停止)或使用logcat -d > logcat.txt
转储日志。您还可以通过ADB
从 PC 查看日志。有关更多信息,请在此处查看官方 android logcat
指南。
此外,用户还可以使用终端的长按选项菜单More
-> Report Issue
选项自动生成 termux 文件、 stat
信息和logcat
转储,并在显示的提示中选择YES
以添加调试信息。这有助于报告和调试其他问题。如果生成的报告太大,则可以使用ReportActivity
上下文菜单中的Save To File
选项(右上角的 3 个点)来查看/共享文件。
用户在报告问题时必须发布完整的报告(可以选择不包含敏感信息)。使用错误报告的(部分)屏幕截图而不是文本打开的问题可能会自动关闭/删除。
Off
- 不记录任何内容。Normal
- 开始记录错误、警告和信息消息以及堆栈跟踪。Debug
- 开始记录调试消息。Verbose
- 开始记录详细消息。 termux 共享库是在v0.109
中添加的。它定义了 Termux 应用程序及其插件的共享常量和实用程序。创建它是为了允许删除 Termux 应用程序中的所有硬编码路径。一些 termux 插件也在使用它,其余的将来也会使用。如果您贡献的代码使用可能共享的常量或 util,则在termux-shared
库中定义它(如果当前不存在)并从那里引用它。也更新相关的变更日志。使用硬编码值的拉取请求将/不应该被接受。 Termux 应用程序和插件特定类必须添加到com.termux.shared.termux
包下,并在其外部添加通用类。贡献代码时,如有必要,还必须检查和更新termux-shared
LICENSE
。必须遵守任何外部库或代码的许可证。
主要的 Termux 常量由TermuxConstants
类定义。它还包含有关如何分叉 Termux 或使用您自己的包名称构建它的信息。更改包名称将需要使用新的$PREFIX
构建引导 zip 包和其他包,请检查构建包以获取更多信息。
检查 Termux 库以了解如何在插件应用程序中导入 termux 库,以及查看分叉和本地开发以了解如何更新插件的 termux 库。
Termux 及其插件应用程序的build.gradle
文件中的versionName
必须遵循格式为major.minor.patch(-prerelease)(+buildmetadata)
的语义版本2.0.0
规范。在build.gradle
文件中修改versionName
以及在 GitHub 上为新版本创建标签时,请确保也包含补丁号,例如v0.1.0
而不仅仅是v0.1
。 build.gradle
文件和attach_debug_apks_to_release
工作流程也会验证版本,如果versionName
不符合规范,则构建/附件将失败。
提交消息必须使用常规提交规范,以便create-conventional-changelog
脚本可以根据保留变更日志规范自动生成变更日志,请检查其存储库以获取有关该规范的更多详细信息。 type
和description
的首字母必须大写,描述应采用现在时。冒号:
后面的空格是必要的。对于重大更改,请添加感叹号!
在冒号:
之前,以便它在 chagelog 中自动突出显示。
[optional scope]:
[optional body]
[optional footer(s)]
仅下面列出的types
必须完全按照变更日志标题中的使用方式使用。例如, Added: Add foo
、 Added|Fixed: Add foo and fix bar
、 Changed!: Change baz as a breaking change
等。您也可以选择添加范围,例如Fixed(terminal): Fix some bug
。不要使用其他任何内容作为类型,例如add
而不是Added
等。
TermuxConstants
javadocs 以获取有关在应用程序中进行哪些更改以更改包名称的说明。termux-shared
库中的TermuxConstants
并具有硬编码的com.termux
值,需要手动修补。