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
等等。
如果您希望從其他來源安裝,則必須先從裝置中移除所有現有 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
應用程式設定 -> <APP_NAME>
-> 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 中自動反白顯示。
<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
僅下面列出的types
必須完全按照變更日誌標題中的使用方式使用。例如, Added: Add foo
、已Fixed(terminal): Fix some bug
Added|Fixed: Add foo and fix bar
、 Changed!: Change baz as a breaking change
等。不要使用其他任何內容作為類型,例如add
而不是Added
等。
TermuxConstants
javadocs 以取得有關在應用程式中進行哪些更改以更改套件名稱的說明。termux-shared
庫中的TermuxConstants
並具有硬編碼的com.termux
值,需要手動修補。