IMPORTANT
Escrcpy基于以下开源项目构建。相关内容按原样提供,仅供用户参考,并将定期更新。
Gnirehtet (v2.5.1)
该项目通过adb
为Android设备提供反向网络共享功能:允许设备使用所连接计算机的网络连接。它不需要任何_root_权限(设备或计算机均无需)。支持_GNU/Linux_、Windows_和_Mac OS。
目前,它通过IPv4转发TCP和UDP流量,但不支持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:
gnirehtet-rust-linux64-v2.5.1.zip
(SHA-256: dee55499ca4fef00ce2559c767d2d8130163736d43fdbce753e923e75309c275) - Windows:
gnirehtet-rust-win64-v2.5.1.zip
(SHA-256: 7f5b1063e7895182aa60def1437e50363c3758144088dcd079037bb7c3c46a1c) - MacOS:
gnirehtet-rust-macos64-v2.2.1.zip
(旧版本)
(SHA-256: 902103e6497f995e1e9b92421be212559950cca4a8b557e1f0403769aee06fc8)
下载后解压文件。
Linux和MacOS压缩包包含:
gnirehtet.apk
gnirehtet
Windows压缩包包含:
gnirehtet.apk
gnirehtet.exe
gnirehtet-run.cmd
Java
- 全平台:
gnirehtet-java-v2.5.1.zip
(SHA-256: 816748078fa6a304600a294a13338a06ac778bcc0e57b62d88328c7968ad2d3a)
解压后包含:
gnirehtet.apk
gnirehtet.jar
gnirehtet
gnirehtet.cmd
gnirehtet-run.cmd
运行(简单方式)
注意:在Windows上,以下命令中的./gnirehtet
需替换为gnirehtet
。
该应用无用户界面,需通过计算机控制。
若需为单一设备启用反向网络共享,直接执行:
./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
输出多个设备时,才需指定_serial_参数。
高级选项可通过不带参数的./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
为什么叫_gnirehtet_?
rev <<< tethering
(在_Bash_中)
开发者
阅读开发者页面。
许可证
版权所有 (C) 2017 Genymobile
根据Apache许可证2.0版(“许可证”)授权;
除非符合许可证,否则不得使用此文件。
您可在以下网址获取许可证副本:
http://www.apache.org/licenses/LICENSE-2.0
除非适用法律要求或书面同意,按“原样”分发的软件
无任何明示或暗示的担保或条件。
详见许可证中特定语言规定的权限和限制。