2022-12-05

Samsung Tab S7+ DeX 模式透過 ADB 安裝嘸蝦米輸入法

前言


我慣用的是嘸蝦米輸入法,但是 Samsung Tab S7+DeX 模式下只能用三星輸入法,也就是只有注音輸入法,使得原本想拿 Tab S7+ 當輕便筆電用,卻因為不順手的輸入法導致工作效率大減。

就在查詢許多文章摸索著安裝完嘸蝦米並使用一段時間以後,一時不慎把 Termux 刪掉了,因此又回到了只能使用注音輸入法的狀態。想要重新來過卻一直遇到莫明的錯誤,在幾個月之間趁著工作空檔陸陸續續試了幾次未果,直到最近查到 Termux 的 Issues 中關於無法與 ADB Server daemon 取得連結的討論,才如願重新安裝嘸蝦米了。

從討論串中可以看到這是 Samsung 手機與平板特有的問題,其他品牌的手機並不會出現這個錯誤。

操作步驟

  1. 到 Google Play 安裝 GCIN 輸入法:它現在的名字是「TW 中文輸入法 注音/倉頡/大易/行列/語音/英數」,嘸蝦米所需要的 .gtab 檔請自行準備。
  2. 啟用「開發人員選項」並打開「無線偵錯」:原本「開發人員選項」是隱藏起來的,參考三星網站的教學,在「設定>關於手機>軟體資訊」連續點擊版本號碼,直至出現「開發者模式已啓用」 進入開發人員選項後,打開「無線偵錯(wireless debugging)」功能。
  3. 在 Termux 中安裝 ADB:apt update && apt install android-tools
  4. 使用 ADB 透過無線偵錯與平板本身配對並連結
    1. 先連上 Wi-Fi,並開啟「設定」視窗和 Termux 視窗,讓它們各佔螢幕的一半,因為等等要邊看著「設定」視窗裡的資訊,邊在 Termux 中輸入指令。
    2. 點選「無線偵錯」中的「使用配對碼配對裝置」就會跳出配對所需的 IP、PORT 以及配對碼,其中 PORT 是隨機跳動的。

    3. 輸入指令  adb pair IP:PORT 後再輸入配對碼,用來配對平板。
    4. 輸入指令 adb connect IP:PORT,用來連結平板。

  5. 修改預設輸入法為 GCIN
    • 查詢現在的預設輸入法指令是「adb shell settings get secure default_input_method」
    • 查詢所有已安裝的輸入法指令是「adb shell ime list」
    • 更換輸入法的指令是「adb shell ime set "輸入法名稱"」
    • GCIN 輸入法的名稱是:「com.hyperrate.gcinfree/.Gcin」
    • 三星輸入法的名稱是:「com.samsung.android.honeyboard/.service.HoneyBoardService」

錯誤排除


概述

這是專屬於 Samsung 手機或平板的錯誤,當發現以下錯誤訊息時,要改以 fakeroot 設定環境變數,以及執行上述各個 adb 指令。

錯誤訊息

* daemon not running; starting now at tcp:5037
* daemon started successfully
* daemon still not running
error: cannot connect to daemon at tcp:5037: Not a data message

解決方法

  1. 安裝 fakeroot:apt install fakeroot
  2. 設定環境變數:
    • export ADB_SERVER_SOCKET=localfilesystem:/data/data/com.termux/files/adb_socket
    • export ANDROID_NO_USE_FWMARK_CLIENT=1
  3. 執行 adb 指令:
    • fakeroot adb pair <your device wifi address:pairing port>
    • fakeroot adb connect <your device wifi address:wireless debug port>

注意事項與改進想法

  1. 一旦離開再重新進入 DeX 模式就會還原成三星輸入法,因此需要重新配對、連結、更換輸入法。
  2. 可以把指令寫成 shell script,這樣就不用特別記輸入法的路徑名稱。

 參考資料