如何在Android系统启动时启用adbd监听端口?

12

我有一部已经root的HTC Hero手机,我想要做的是在启动时启用adbd监听一个端口。

我尝试了一些在这里找到的代码:

setprop service.adb.tcp.port 5555
stop adbd
start adbd

我在Android shell中尝试了这个方法,效果很好。

我试图更改init.rc文件。我在init.rc文件中添加了上述代码,并通过以下命令将其替换为原始文件:

adb push init.rc sdcard

adb shell
adb su
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /
adb cp sdcard/init.rc /

文件已成功替换,但当我重新启动手机并尝试连接时:
adb connect <IP>:5555

连接未建立。

有什么想法吗?

(附:我不想使用 remoteADB 应用程序和像 am start -n ... 这样的 shell 命令)


这肯定会有帮助:https://dev59.com/yGkw5IYBdhLWcg3wm70h - nullpotent
3个回答

63

这将使其持久化:

setprop persist.adb.tcp.port 5555

在重新启动后,ADB 通过USB 可能不可用。要撤消此设置,请执行以下操作:

setprop persist.adb.tcp.port ""

5
你不知道这个发现救了我们多大的忙 - 很简单而且很有效 - 为什么没有更多的点赞呢?干杯。 - Peter Flower
2
这些属性存储在哪里?与 build.prop 相比呢? - JohnyTex
2
如果您正在使用adb,命令为adb shell setprop persist.adb.tcp.port 5555 - Lokesh
我需要一个微妙的区别 - 首先输入 adb shell,然后输入 su,最后输入 setprop persist.adb.tcp.port 5555 - RichardVNL
@JohnyTex 持久化属性存储在 /data/property/persistent_properties 中。 - Zibri
显示剩余4条评论

1

-1

为什么不尝试使用一个带有动作 BOOT_COMPLETEDBroadcastReceiver

你可以在 Manifest 中注册一个:

        <receiver
        android:name="com.myapp.BootCompleted"
        android:enabled="true"
        android:exported="false" >
        <intent-filter>
            <action android:name="android.intent.action.BOOT_COMPLETED" />
        </intent-filter>
    </receiver>

在类中,当启动完成时,您可以做任何想做的事情:

import java.util.*;
import android.content.*;

public class BootCompleted extends BroadcastReceiver
{
    @Override
    public void onReceive(Context context, Intent intent) 
    {
        // Do the actions you want
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接