Skip to content

IMPORTANT

Escrcpy基于以下开源项目构建。相关内容按原样提供,仅供用户参考,并将定期更新。

Gnirehtet (v2.5.1)

该项目通过adb为Android设备提供反向网络共享功能:允许设备使用所连接计算机的网络连接。它不需要任何_root_权限(设备或计算机均无需)。支持_GNU/Linux_、Windows_和_Mac OS

目前,它通过IPv4转发TCPUDP流量,但不支持IPv6(未来可能支持?)。

该项目已不再积极维护,仅修复重大阻塞问题(如构建问题)。但功能仍可正常使用。

版本

_Gnirehtet_提供两种实现:

  • Java版本;
  • Rust版本。

如何选择?

推荐使用Rust版本。原生二进制文件占用更少的CPU和内存资源,且无需安装_Java_运行时环境。

_Gnirehtet_的中继服务器最初仅以Java实现,其优势在于支持所有安装了_Java 8_运行时的平台。目前仍保留该版本,以便在Rust版本出现问题时作为备选方案。

要求

Android应用至少需要API 21(Android 5.0)。

仅针对_Java_版本,计算机需安装_Java 8_(JRE)。在基于Debian的系统中,请安装openjdk-8-jre包。

adb

需要较新版本的adb(支持adb reverse命令,1.0.36版本已验证可用)。

可通过Android SDK平台工具获取。

在基于Debian的系统中,也可安装android-tools-adb包。

在Windows上,若仅为此应用需要adb,可直接下载平台工具,并将以下文件解压至_gnirehtet_目录:

  • adb.exe
  • AdbWinApi.dll
  • AdbWinUsbApi.dll

确保已在设备上启用adb调试

获取应用

Homebrew

若使用Homebrew,安装过程非常简单。安装Rust版本:

brew install gnirehtet

下载

最新发布中下载所需版本。

Rust

下载后解压文件。

Linux和MacOS压缩包包含:

  • gnirehtet.apk
  • gnirehtet

Windows压缩包包含:

  • gnirehtet.apk
  • gnirehtet.exe
  • gnirehtet-run.cmd

Java

解压后包含:

  • gnirehtet.apk
  • gnirehtet.jar
  • gnirehtet
  • gnirehtet.cmd
  • gnirehtet-run.cmd

运行(简单方式)

注意:在Windows上,以下命令中的./gnirehtet需替换为gnirehtet

该应用无用户界面,需通过计算机控制。

若需为单一设备启用反向网络共享,直接执行:

shell
./gnirehtet run

反向网络共享将持续生效,直至按下_Ctrl+C_终止。

在Windows上,为方便起见,可直接双击gnirehtet-run.cmd(其功能等同于gnirehtet run,无需打开终端)。

首次启动时会弹出权限请求窗口:

request

当_Gnirehtet_激活时,状态栏会显示“钥匙”图标:

key

若需为所有已连接设备(包括后续连接的设备)启用反向网络共享,可执行:

shell
./gnirehtet autorun

运行(分步操作)

可分别执行各步骤(适用于需同时为多台设备启用反向网络共享的场景)。

启动中继服务器并保持运行:

shell
./gnirehtet relay

在Android设备上安装apk

shell
./gnirehtet install [serial]

在另一终端中,为每个客户端执行:

shell
./gnirehtet start [serial]

停止客户端:

shell
./gnirehtet stop [serial]

重置隧道(当设备在_Gnirehtet_激活时断开并重新连接后,可用于恢复连接):

shell
./gnirehtet tunnel [serial]

仅当adb devices输出多个设备时,才需指定_serial_参数。

高级选项可通过不带参数的./gnirehtet命令查看详情。

手动运行

gnirehtet程序提供了简单的命令行接口,实际执行的是底层命令。用户也可手动调用这些命令。

启动中继服务器:

shell
./gnirehtet relay

安装apk:

shell
adb install -r gnirehtet.apk

启动客户端:

shell
adb reverse localabstract:gnirehtet tcp:31416
adb shell am start -a com.genymobile.gnirehtet.START \
    -n com.genymobile.gnirehtet/.GnirehtetActivity

停止客户端:

shell
adb shell am start -a com.genymobile.gnirehtet.STOP \
    -n com.genymobile.gnirehtet/.GnirehtetActivity

环境变量

ADB用于指定自定义的adb路径:

shell
ADB=/path/to/my/adb ./gnirehtet run

GNIREHTET_APK用于指定自定义的gnirehtet.apk路径:

shell
GNIREHTET_APK=/usr/share/gnirehtet/gnirehtet.apk ./gnirehtet run

为什么叫_gnirehtet_?

rev <<< tethering

(在_Bash_中)

开发者

阅读开发者页面

许可证

版权所有 (C) 2017 Genymobile

根据Apache许可证2.0版(“许可证”)授权;
除非符合许可证,否则不得使用此文件。
您可在以下网址获取许可证副本:

    http://www.apache.org/licenses/LICENSE-2.0

除非适用法律要求或书面同意,按“原样”分发的软件
无任何明示或暗示的担保或条件。
详见许可证中特定语言规定的权限和限制。

相关文章

Views , Visitors
Released under the MIT License.