Android 13 设置自动进入wifi adb模式

Android 13 设置自动进入wifi adb模式

一、前言:

Android11之前 wifi adb 端口默认是 5555,adb connect ip即可完成adb 连接
Android13 上,wifi adb 端口默认是 随机的6位数,每次wifi adb 连接需要打开开发者模式里面的"无线调试",
并且最麻烦的是每次连接新的wifi,都需要重新打开开发者模式里面的"无线调试",会生成新的端口号,需要输入端口号才能进行adb 连接。

Android 13 wifi adb设置固定端口解决:
https://blog.csdn.net/wenzhi20102321/article/details/131056174

二、解决Android 13 wifi adb每次重启自动重置问题方法

上面说到Android13 开启wifi adb后,每次重启后都会自动关闭,那么如何解决这个问题呢?

提供下面两种思路。

1、分析系统中每次重置wifi adb属性的代码

大致要分析的代码:

packages\modules\adb\daemon\adb_wifi.cpp
framework\base\services\core\java\com\android\server\adb\AdbService.java

还有里面涉及到的相关类,这里不做具体分析。有兴趣的可以自己进一步进行分析。

2、在开机广播里面进行设置wifi adb 相关属性

无论是监听开机广播还是设置prop属性,都是要系统权限的!

(1)定义开机广播

src\main\AndroidManifest.xml


    <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

        <receiver android:name=".BootReceiver">
            <intent-filter>
                <action android:name="android.intent.action.BOOT_COMPLETED" />
            </intent-filter>
        </receiver>

(2)开机广播监听中进行设置adb 属性:


import android.os.SystemProperties;


public class BootReceiver extends BroadcastReceiver {

    private static final String ACTION_ANDROID_BOOT_COMPLETED = "android.intent.action.BOOT_COMPLETED";

    public static final String ADB_ENABLE_PROP = "persist.adb.tls_server.enable";
    public static final String ADB_PORT_PROP = "service.adb.tls.port";

    @Override
    public void onReceive(final Context context, Intent intent) {
        LogUtil.debugInform("action=" + intent.getAction());
        switch (intent.getAction()) {
            case ACTION_ANDROID_BOOT_COMPLETED: //开机广播
                //设置wifi adb 属性
                SystemProperties.set(ADB_ENABLE_PROP, "1");
                SystemProperties.set(ADB_PORT_PROP, "5555");
                Toast.makeText(context, "已设置wifi adb开启", Toast.LENGTH_LONG).show();
                break;
            default:
                LogUtil.error("no user receiver!");
        }
    }

3、值得注意

不要再SystemServer 系统服务启动的时候,进行设置adb wifi相关属性,会不生效的。
因为后面 AdbService 启动的时候会重新设置一次,所以在开机广播里面做设置时比较保险的。

wifi adb demo代码(需要自己配置对应平台的签名文件)
https://download.csdn.net/download/wenzhi20102321/88056639

猜你喜欢

转载自blog.csdn.net/wenzhi20102321/article/details/131774893