解决Android设备mdnsd高耗电问题攻略

6次阅读
没有评论

解决Android设备上的mdnsd高耗电问题

近年来,由于苹果设备的广泛使用,对于许多用户来说,他们在安卓设备上注意到一个奇怪的现象——即快速电池消耗速率增加。通过分析发现,这通常与名为“mdnsd”的进程有关,而这种现象往往在开机启动或是通过ADB调试期间出现。这篇文章将教您如何彻底停止mdnsd服务以缓解此问题。

了解mdnsd

首先我们需要明确的是,“mdnsd”这个缩写实际上是指“Multicast DNS Daemon”。它主要用于实现零配置的技术(Zero-configuration Networking, ZC)中,主要是用于解决设备在网络中的DNS查找。在Android系统版本中,特别是在一些使用了Bonjour服务的应用程序、框架或启动特性的地方,可能会出现频繁运行mdnsd的情况。

停止解决方案

一. 根据权限限制进行处理
  1. 确认权限:若要真正停止此进程并持续阻止其启动(针对所有用户和root权限),您必须先获得相应的操作系统访问权限。这意味着,您的设备需要被解锁到根(root)水平状态。

  2. 普通用户的解决办法(仅限root情况)
    对于已root的设备来说,有几种可以直接关闭或者禁止服务的方式:

    • /etc/init/mdnsd.rc文件添加以下内容以启动时阻止服务:
      “`ini
      # stop mdnsd on startup
      on property:sys.boot_completed=1
      stop mdnsd

    # stop mdnsd when adbd starts/stops
    on property:init.svc.adbd=*
    stop mdnsd
    “`

    • 手动停用:可以通过命令 setprop ctl.stop mdnsd

    • 直接阻止服务启动后,不让其被重新调用(即直接禁用)服务:
      bash
      ~/.# chmod a-x /system/bin/mdnsd

    这些方法需要你的设备已进行root操作。如果不希望 root 设备,可以通过查找使用 NSD API 或直接启动 mdnsd 服务的特定应用或者功能来解决问题。

二. 使用 adb 暂停

另一种暂时停止的方法是通过 ADB 命令:
– 手动暂停:在开发者选项中关闭 UDB 调试,然后重启设备。可能的话,使用 adb 停止 mdnsd。

注意事项

  • 高权限操作警告:所有提到的解决方案需要对设备进行root,这对于许多用户来说可能相对棘手或不安全。因此建议在采取任何措施前仔细评估风险。

  • 确认原因:有时候,电池快速消耗可能不仅仅是由于mdnsd服务造成的,在使用ADB调试时也有这种现象。可能是由于persist.sys.usb.config=adb 的设置引起的问题,这会导致系统在连接到PC进行调试时频繁尝试启动 mdnsd 服务。

通过以上方法,您可以有效地控制 mdnsd 在非必要情况下的运行频率,从而帮助缓解因此导致的电池消耗问题。请根据实际情况选择最适合您的解决方案。

正文完