Android设备的USB功能,是现有产品中一个必要组成部分,但常用的ADB调试,需要运行在USB模式下,导致USB被占用,无法挂载USB外设,所以采用WIFI模式来进行ADB调试可以更加方便和直观。
- 环境准备
- Android Studio开发环境;
- Android设备具备无线功能;
- 开发环境与Android设备处于同一无线局域网下;
- Android系统的源码(签名时需获取系统秘钥文件)
- ADB的WIFI模式
- Android Studio安装ADB WIFI插件,IDE支持多款ADB WIFI插件,根据个人习惯选择即可,如下图:
- 开启ADB WIFI调试模式:
- 开发环境通过USB连接到Android设备,并开启Android设备的USB调试模式;
- 开发环境中,运行ADB命令,重启ADB TCP端口(默认为5555),并建立TCP连接(如果不使用缺省端口,在IP后设置,形式为“:5600”),具体命令如下:
- “adb tcpip 5555”
- ”adb connect 192.168.1.2 ”
- Android设备重启后,需要“adb disconnect”再重连;
- 连接后,通过“adb devices”命令查看新连接设备是否存在,以确认ADB WIFI方式可用;
- 断开USB调试,空出USB接口以备挂载外设,具体操作如下:
- 关闭Android设备的USB调试模式;
- 开发环境通过其它方式连接Android设备,如串口方式;
- 从终端重启Android设备的ADBD服务,即执行命令“adbd &”;
- 断开USB连接,空出USB接口,以挂载U盘等设备;
*个人建议Android Studio的WIFI插件使用“Android wifi ADB”,在调试连接中较为稳定。
- APP系统签名
使用IDE调试APP的USB功能时,需要获取应用的system权限,否则文件夹的访问等功能将受限制,常用的方法是给APP进行系统签名。
- 获取系统秘钥文件,源码路径/build/target/product/security/下的platform.x509.pem和platform.pk8两个文件,不同系统环境,秘钥是不同的,所以要对应获取;
获取手动签名工具keytool-importkeypair,下载路径为https://github.com/getfatday/keytool-importkeypair;
- 将platform.x509.pem和platform.pk8放入keytool-importkeypair目录下;
- 使用Android Studio生成签名文件(.jks),如下:
- 设置签名信息,可根据实际情况随意填写;
- 将生成的 .jks文件同样放入keytool-importkeypair目录下,重新进行手动签名设置;
- 重新手动签名,KeyTool为Linux工具,需要在Linux环境使用,如在Windows下,可使用MinGW来执行,进入keytool-importkeypair目录下,执行命令如下:
“./keytool-importkeypair -k SignDemo.jks -p 123456 -pk8 platform.pk8 -cert platform.x509.pem -alias Demo”
注* SignDemo.jks : 签名文件,123456 : 签名文件密码,platform.pk8、platform.x509.pem : 系统签名文件,Demo: 签名文件别名。
- 将重新签名的 .jks文件移回原工程环境下,就可以使用自己的签名了;
- 当重新生成apk或ADB调试时,还需要在代码中添加system权限声明和编译签名注释,具体如下:
- 在APP的AndroidManifest.xml中添加申请system权限的声明”android:sharedUserId="android.uid.system”;
- 在build.gradle文件的android项下添加编译签名注释,例如:
- 编译新的apk后,重新安装,如之前已安装过此apk,需要先卸载旧版本,否则依然会存在安装失败的情况;
- 检查生成的apk是否已经签名,命令“jarsigner -verify MediaPlayer.apk”;
- 检查安装的app是否已经获取system权限;
完成以上操作后,就可以使用无线方式调试USB外设了,以上描述如有错误之处,还请指正。