android默认开启adb调试方法分析

默认 打开 usb adb 调试 

    用adb调试android时,每次接入usb线,都会提示一个确认打开usb调试功能的窗口,有时候,我们需要默认打开usb调试功能。或者无需弹出对话框,直接默认开启。这个我们需要分析adb的流程了。

 

adb认证流程如下图:

 

认证流程:

1. 我们如果在PC端使用过adb命令,则会在当前用户目录生成一对密钥,密钥存放在.android目录,其中adbkey为私钥,adbkey.pub为公钥。

2. adb会把公钥(adbkey.pub)发送给android设备来获取认证,建立adb连接。

3. android 会根据属性ro.adb.secure来判断,是否进行认证,如果为0,则不需要认证,允许建立adb连接。如果为1,则需要进行密钥认证。

4. 如果需要进行adb密钥认证,则把接收到的adbkey.pub与本地的/data/misc/adb/adb_keys进行对比,如果相同,则表明是允许此设备进行adb连接,如果不相同,则弹出对话框,提示用户是否允许打开usb调试功能。

 

解决方法:

从上面的流程我们可以通过如下三种方法来默认打开usb调试功能:

1. 在/frameworks/base/packages/SystemUI/src/com/android/systemui/usb 该目录下修改 UsbDebuggingActivity.java

 

privateclassUsbDisconnectedReceiverextendsBroadcastReceiver{privatefinalActivity mActivity;publicUsbDisconnectedReceiver(Activity activity){mActivity = activity;}@Overridepublicvoid onReceive(Context content,Intent intent){String action = intent.getAction();if(!UsbManager.ACTION_USB_STATE.equals(action)){return;}boolean connected = intent.getBooleanExtra(UsbManager.USB_CONNECTED,false);//boolean connected = false;//直接关闭对话框if(!connected){mActivity.finish();}/*//直接确认允许通过//allowUsbDebuggingtry {IBinder b = ServiceManager.getService(USB_SERVICE);IUsbManager service = IUsbManager.Stub.asInterface(b);service.allowUsbDebugging(true, mKey);} catch (Exception e) {Log.e(TAG, "Unable to notify Usb service", e);}*/}}

直接默认允许通过

 

2. 修改属性ro.adb.secure=0,关闭认证即可。
不同的android版本修改的地方不一样,主要达到的目的是使得最终的default.prop中的ro.adb.secure=0即可。

 

3. 我们把PC端的公钥adbkey.pub直接导入到android的密钥文件/data/misc/adb/adb_keys中,这样每次认证的时候,就能够保证认证通过了,但是换一台PC之后,则需要把之前认证过的密钥拷贝到新的PC中,否则还是不能认证通过。

 

参考链接:http://blog.csdn.net/a623891391/article/details/51097315

 

更多相关文章

  1. Android(安卓)无线调试
  2. Android(安卓)AIDL Service调试方法
  3. Android的内存泄漏和调试
  4. Android可视化调试工具Hierarchy Viewer的使用
  5. android 修改AVD的存放位置
  6. 关于 Android(安卓)默认字体以及对比微软雅黑字体
  7. 《Android(安卓)串口驱动回眸:andriod虚拟机与串口调试精灵通讯》
  8. Android(安卓)内存泄漏调试
  9. android:exported对ContentProvider的影响

随机推荐

  1. Android(安卓)中的数据库 SQLite
  2. android 局域网聊天工具(可发送文字/语音
  3. 长按power键Android9.0关机耗时分析
  4. Android内核的简单分析
  5. android Instrumentation
  6. Android:Android学习路线图
  7. Android开发之旅:android架构
  8. 浅谈android的selector,背景选择器
  9. Android内存分析和调优
  10. Android应用程序的基本组件之Activity