普通网友 2025-04-23 22:50 采纳率: 98.6%
浏览 29
已采纳

setprop service.adb.tcp.port 设置后为何重启设备失效?如何永久生效?

**问题:为何使用 `setprop service.adb.tcp.port` 设置后重启设备失效,如何实现永久生效?** 在Android开发中,通过命令 `setprop service.adb.tcp.port 5555` 可以开启ADB无线调试功能。然而,这种设置仅对当前会话有效,设备重启后会恢复默认值(通常为未设置或0)。这是因为 `setprop` 修改的是内存中的属性,而非持久化存储。 要实现永久生效,需将设置写入系统属性文件(如 `/default.prop` 或 `/system/build.prop`),但这要求设备已获取Root权限。操作步骤包括:1) 使用文本编辑器修改目标文件;2) 添加或修改 `service.adb.tcp.port=5555`;3) 保存并重启设备。注意,不当修改可能引发系统异常,建议备份原始文件。对于非Root设备,可考虑利用脚本在开机时自动执行 `setprop` 命令。
  • 写回答

1条回答 默认 最新

  • Jiangzhoujiao 2025-04-23 22:50
    关注

    1. 问题背景与基础理解

    在Android开发中,`setprop service.adb.tcp.port` 是一个常见的命令,用于开启ADB无线调试功能。然而,许多开发者发现,使用该命令设置的端口仅对当前会话有效,设备重启后便失效。这是由于 `setprop` 修改的是内存中的属性,而非持久化存储。

    • setprop 命令的作用: 它允许开发者动态修改系统属性。
    • 临时性原因: 系统属性文件(如 `/default.prop` 或 `/system/build.prop`)是持久化的配置文件,而 `setprop` 的更改并未写入这些文件。

    为了解决这一问题,我们需要深入探讨如何实现永久生效。

    2. 深入分析:为何重启后失效?

    Android 系统启动时,会从特定的属性文件加载系统属性。这些文件包括:

    • /default.prop
    • /system/build.prop

    当设备重启时,内存中的属性会被清空,并重新从上述文件加载。因此,通过 `setprop` 修改的属性不会被保留。

    # 示例:通过 setprop 设置 ADB 端口
    adb shell setprop service.adb.tcp.port 5555
    

    为了实现永久生效,我们需要将 `service.adb.tcp.port=5555` 写入到系统属性文件中。

    3. 解决方案:Root 设备的实现步骤

    对于已获取 Root 权限的设备,可以通过以下步骤实现永久生效:

    1. 备份原始属性文件:
      adb pull /system/build.prop build.prop.bak
    2. 挂载系统分区为可写:
      adb shell su -c "mount -o remount,rw /system"
    3. 编辑属性文件并添加或修改属性:
      使用文本编辑器打开 `/system/build.prop`,添加以下内容:
      service.adb.tcp.port=5555
    4. 保存文件并重启设备:
      adb shell reboot

    注意:不当修改可能导致系统异常,建议谨慎操作。

    4. 非 Root 设备的解决方案

    对于未获取 Root 权限的设备,可以利用脚本在开机时自动执行 `setprop` 命令。以下是具体步骤:

    步骤描述
    1创建一个包含 `setprop` 命令的脚本文件,例如 `set_adb_port.sh`。
    2将脚本放置在设备的适当位置,例如 `/data/local/tmp/`。
    3确保脚本具有执行权限:
    adb shell chmod +x /data/local/tmp/set_adb_port.sh
    4配置设备在开机时运行该脚本。可以借助第三方工具或自定义 ROM 实现。

    5. 流程图:Root 设备操作流程

    graph TD; A[开始] --> B{设备是否已Root}; B --是--> C[备份build.prop]; C --> D[挂载系统分区为可写]; D --> E[编辑build.prop]; E --> F[保存并重启]; B --否--> G[无法直接修改系统属性];

    以上流程展示了 Root 设备的操作逻辑,帮助开发者更清晰地理解实现步骤。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 已采纳回答 10月23日
  • 创建了问题 4月23日