开启5555端口用于adb网络编程管理



我想知道如何在android上为守护进程adb启用端口5555 ?基本上,我一直在用一个旧路由器设置一个家庭网络,这样我就可以保持所有设备的连接。但这里有一个问题:我不想每次都要连接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();
        }
    }

现在它永远不会到达异常,它说在端口上打开,但是当我通过网络连接时,它不工作。我该怎么做呢?

请记住,该应用程序被移动到系统应用程序与幸运补丁,所以它是一个系统应用程序。如果这很重要。

(代表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();
    }
}

我写了一个简单的类来执行来自App的Shell命令

https://gist.github.com/ricardojlrufino/61dbc1e9a8120862791e71287b17fef8

Comands
String return = Shell.execForResult("ls");

<<p> 脚本/strong>
Shell.execScript (res.openRawResource (R.raw.cpu_script));

开始亚行
Shell.startADB (5555),

最新更新