該專案透過adb
為 Android 提供反向網路共用:它允許裝置使用其所插入的電腦的網路連線。它不需要任何root存取權限(無論是在裝置上還是在電腦上)。它適用於GNU/Linux 、 Windows和Mac OS 。
目前,它透過 IPv4 流量中繼 TCP 和 UDP,但它不支援 IPv6(也?)。
該專案不再積極維護,僅修復了主要障礙(如建置問題)。不過,它應該仍然有效。
Gnirehtet有兩種可用的實作:
使用Rust實作。本機二進位檔案消耗較少的 CPU 和內存,且不需要Java執行環境。
Gnirehtet的中繼伺服器最初僅用 Java 實作。好處是,相同的「二進位檔案」可以在安裝了Java 8運行時的每個平台上運行。它仍然被維護,以在 Rust 版本出現問題時提供可行的替代方案。
Android 應用程式至少需要 API 21 (Android 5.0)。
僅對於Java版本,您的電腦上需要Java 8 (JRE)。在基於 Debian 的發行版上,安裝軟體包openjdk-8-jre
。
您需要最新版本的 adb(其中實現了adb reverse
,它適用於 1.0.36)。
它在Android SDK平台工具中可用。
在基於 Debian 的發行版上,您也可以安裝套件android-tools-adb
。
在 Windows 上,如果您僅需要adb
用於此應用程序,只需下載平台工具並將以下檔案解壓縮到gnirehtet目錄:
adb.exe
AdbWinApi.dll
AdbWinUsbApi.dll
確保您在裝置上啟用了 adb 偵錯。
如果您使用 Homebrew,啟動和運行會非常快。若要安裝 Rust 版本:
brew install gnirehtet
下載您想要的風格的最新版本。
gnirehtet-rust-linux64-v2.5.1.zip
gnirehtet-rust-win64-v2.5.1.zip
gnirehtet-rust-macos64-v2.2.1.zip
(舊版)然後將其提取。
Linux 和 MacOS 檔案包含:
gnirehtet.apk
gnirehtet
Windows 檔案包含:
gnirehtet.apk
gnirehtet.exe
gnirehtet-run.cmd
gnirehtet-java-v2.5.1.zip
然後將其提取。檔案包含:
gnirehtet.apk
gnirehtet.jar
gnirehtet
gnirehtet.cmd
gnirehtet-run.cmd
注意:在 Windows 上,將以下命令中的./gnirehtet
替換為gnirehtet
。
該應用程式沒有 UI,只能透過電腦進行控制。
如果您想為一台裝置啟動反向網路分享,只需執行:
./gnirehtet run
反向網路共享將保持活動狀態,直到您按Ctrl+C為止。
在 Windows 上,為了方便起見,您可以雙擊gnirehtet-run.cmd
(它只執行gnirehtet run
,而不需要開啟終端)。
第一次啟動應該會打開一個彈出視窗來請求權限:
只要Gnirehtet處於活動狀態,狀態列中就會出現一個「鑰匙」標誌:
或者,您可以透過呼叫以下命令為所有連接的裝置(當前和未來)啟用反向網路共用:
./gnirehtet autorun
您可以單獨執行這些操作(如果您想同時反向綁定多個設備,這可能很有用)。
啟動中繼伺服器並保持開啟狀態:
./gnirehtet relay
在您的 Android 裝置上安裝apk
:
./gnirehtet install [serial]
在另一個終端機中,對於每個客戶端,執行:
./gnirehtet start [serial]
要停止客戶端:
./gnirehtet stop [serial]
重置隧道(當 gnirehtet 處於活動狀態時拔出並重新插入設備時,有助於恢復連線):
./gnirehtet tunnel [serial]
僅當adb devices
輸出多個裝置時才需要串列參數。
對於進階選項,請呼叫不含參數的./gnirehtet
以取得更多詳細資訊。
gnirehtet
程式公開了一個執行較低階命令的簡單命令列介面。您可以手動調用它們。
啟動中繼伺服器:
./gnirehtet relay
要安裝APK:
adb install -r gnirehtet.apk
啟動客戶端:
adb reverse localabstract:gnirehtet tcp:31416
adb shell am start -a com.genymobile.gnirehtet.START
-n com.genymobile.gnirehtet/.GnirehtetActivity
要停止客戶端:
adb shell am start -a com.genymobile.gnirehtet.STOP
-n com.genymobile.gnirehtet/.GnirehtetActivity
ADB
定義了adb
可執行檔的自訂路徑:
ADB=/path/to/my/adb ./gnirehtet run
GNIREHTET_APK
定義gnirehtet.apk
的自訂路徑:
GNIREHTET_APK=/usr/share/gnirehtet/gnirehtet.apk ./gnirehtet run
rev <<< tethering
(在bash中)
閱讀開發者頁面。
Copyright (C) 2017 Genymobile
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.