我想知道如何在android上启用端口5555 for daemon adb?基本上,我一直在用旧路由器建立一个家庭网络,这样我就可以保持所有设备的连接。但问题在于:我不希望每次都能连接到USB以启用这些端口,这会破坏整个目的。
我想知道如何通过点击按钮以编程方式使用Java甚至JNI转发端口?我见过telnetd
应用程序。所以我想自己做。我该如何实现这一目标?我试过一个函数,这里是:
public void openPort()
{
try
{
java.lang.Process process = Runtime.getRuntime().exec("setprop service.adb.tcp.port 5555");
int exitCode = process.waitFor();
if (exitCode != 0)
{
throw new java.io.IOException("Command exited with " + exitCode);
}
Runtime.getRuntime().exec("adb tcpip 5555");
Toast.makeText(this, "Listening on port "+ port + "...", Toast.LENGTH_LONG).show();
}
catch (Exception ex)
{
ex.printStackTrace();
Toast.makeText(this, "An error has occurred: " + ex, Toast.LENGTH_LONG).show();
port++;
openPort();
}
}
现在它永远不会到达异常,它说在端口上打开,但是当我通过网络连接它时它不起作用。那我怎么能这样做呢?
请注意,应用程序已移至使用幸运修补程序的系统应用程序,因此它是一个系统应用程序。如果那很重要。
答案 0 :(得分:2)
(代表OP发布解决方案)。
注意:需要Root。
我把它改了一下。它现在有效:
public void openPort()
{
try
{
String cmds[] = {
"setprop service.adb.tcp.port 2222",
"stop adbd",
"start adbd"
};
for (int i = 0; i < cmds.length; i++)
{
java.lang.Process process = Runtime.getRuntime().exec(cmds[i]);
int exitCode = process.waitFor();
if (exitCode != 0)
{
throw new java.io.IOException("Command exited with " + exitCode);
}
}
Toast.makeText(this, "Listening on port 2222...", Toast.LENGTH_LONG).show();
}
catch (Exception ex)
{
ex.printStackTrace();
Toast.makeText(this, "An error has occurred: " + ex, Toast.LENGTH_LONG).show();
openPort();
}
}
答案 1 :(得分:0)
我编写了一个简单的类来从App
执行Shell命令https://gist.github.com/ricardojlrufino/61dbc1e9a8120862791e71287b17fef8
<强>命令对应的强>
String return = Shell.execForResult(“ls”);
<强>脚本强>
Shell.execScript(res.openRawResource(R.raw.cpu_script));
启动ADB
Shell.startADB(5555);