android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法_Android

步骤:分两步

一、usb连接:

在Ubuntu挂载使用MTP设备步骤如下:

1.将MTP设备连接至PC机

2.如果是第一次使用MTP设备需要安装以下软件,否则可以跳过此步骤:

复制代码 代码如下:

$ sudo apt-get install mtpfs libfuse-dev libmad0-dev

3.挂载MTP设备

复制代码 代码如下:

$ sudo mtpfs -o allow_other /media/mtp

如果提示设备忙,可以等一会再挂载。

二、adb调试:

复制代码 代码如下:

sudo gedit  /etc/udev/rules.d/50-android.rules   //在打开的文件中增加以下文本:

SUBSYSTEM=="usb", SYSFS{idVendor}=="2717", MODE=="0666"
SUBSYSTEM=="usb_device", SYSFS{idVendor}=="2717", MODE=="0666"
SUBSYSTEM=="usb", ATTR{idVendor}=="2717", ATTR{idProduct}=="9039", SYMLINK+="android_adb"

sudo chmod a+rx /etc/udev/rules.d/50-android.rules

注意,这个50-android.rules 文件名字应该是随意命名的,试过 51-android.rules ,52-android.rules 似乎是都可以的。

注意 “SUBSYSTEM==“usb”, SYSFS{idVendor}==“2717”, MODE==“0666” “这句是给ubuntu 7.01 以后的系统识别用的

而"SUBSYSTEM==“usb_device”, SYSFS{idVendor}==“2717”, MODE==“0666”“是给Ubuntu 7.01之前的系统识别用的。

复制代码 代码如下:

ubuntu@ubuntu:/etc/udev/rules.d$ sudo service udev restart    //or restart udev
udev stop/waiting
udev start/running, process 1666

在 android sdk 的 tools 目录下运行 (这一步很重要,必须要sudo,否则没效果)

复制代码 代码如下:

ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ sudo ./adb kill-server
ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ sudo ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ adb devices

到这一步了,结果发现 List of devices attached 下面没有设备出现,这就意味着 adb不识别新的USB 设备。

请执行如下操作:

复制代码 代码如下:

ubuntu@ubuntu:~$ ls -a   //可以发现有一个隐藏文件 以 “ . ”开头:  .android
ubuntu@ubuntu:~$ cd .android/
ubuntu@ubuntu:~/.android$ gedit adb_usb.ini

里面的内容一般如下:

复制代码 代码如下:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.

我们在其中加一行: 0x2717

请注意,这个 0x2717 就是我们得到的设备号码,如何获取设备号

1、usb连接手机,执行

复制代码 代码如下:

ubuntu@ubuntu:~$ lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 009: ID 2717:904e 
Bus 002 Device 003: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 002 Device 004: ID 413c:2107 Dell Computer Corp.
Bus 002 Device 006: ID 05c6:9039 Qualcomm, Inc.

2、拔掉usb数据线

复制代码 代码如下:

ubuntu@ubuntu:~$ lsusb
Bus 001 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 002 Device 002: ID 8087:0024 Intel Corp. Integrated Rate Matching Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 046d:c05a Logitech, Inc. Optical Mouse M90
Bus 002 Device 004: ID 413c:2107 Dell Computer Corp.
Bus 002 Device 006: ID 05c6:9039 Qualcomm, Inc.
ubuntu@ubuntu:~$

可以看到其中的差别的那一行:

复制代码 代码如下:

Bus 001 Device 009: ID 2717:904e

这就是小米手机的usb相关信息,2717就是设备号!

adb_usb.ini文件最后变成:

复制代码 代码如下:

# ANDROID 3RD PARTY USB VENDOR ID LIST -- DO NOT EDIT.
# USE 'android update adb' TO GENERATE.
# 1 USB VENDOR ID PER LINE.
0x2717

保存,关掉,然后:

复制代码 代码如下:

ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ sudo ./adb kill-server
ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ sudo ./adb start-server
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
ubuntu@ubuntu:~/android/android-sdk-linux/platform-tools$ adb devices
List of devices attached
434b880a    offline

但是我们发现最后还是offline,不用慌,打开手机屏幕,你能看到一个选项: 允许usb调试吗,选择允许。这就完事了!!如下图:

时间: 2024-09-14 21:14:21

android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法_Android的相关文章

android开发教程之ubuntu使用adb连接小米2的步骤和adb调试方法

步骤:分两步 一.usb连接: 在Ubuntu挂载使用MTP设备步骤如下: 1.将MTP设备连接至PC机 2.如果是第一次使用MTP设备需要安装以下软件,否则可以跳过此步骤: 复制代码 代码如下:$ sudo apt-get install mtpfs libfuse-dev libmad0-dev 3.挂载MTP设备 复制代码 代码如下:$ sudo mtpfs -o allow_other /media/mtp 如果提示设备忙,可以等一会再挂载. 二.adb调试: 复制代码 代码如下:sud

Android开发教程之shape和selector的结合使用

shape和selector是Android UI设计中经常用到的,比如我们要自定义一个圆角Button,点击Button有些效果的变化,就要用到shape和selector.可以这样说,shape和selector在美化控件中的作用是至关重要的. 1.Shape 简介 作用:XML中定义的几何形状 位置:res/drawable/文件的名称.xml 使用的方法: Java代码中:R.drawable.文件的名称 XML中:android:background="@drawable/文件的名称&

21天学习android开发教程之MediaPlayer_Android

本文介绍MediaPlayer的使用.MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了.MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView.SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库. 先贴出本文程序运行结果的截图,上面是播放/停止音频,可用SeekBar来调进度,下面

21天学习android开发教程之SurfaceView_Android

上一篇文章介绍了MediaPlayer相关内容,这次用两篇文章来介绍SurfaceView的用法.网上介绍SurfaceView的用法有很多,写法也层出不同,例如继承SurfaceView类,或者继承SurfaceHolder.Callback类等,这个可以根据功能实际需要自己选择,我这里就直接在普通的用户界面调用SurfaceHolder的lockCanvas和unlockCanvasAndPost. 先来看看程序运行的截图:   截图1主要演示了直接把正弦波绘画在SurfaceView上 

21天学习android开发教程之MediaPlayer

本文介绍MediaPlayer的使用.MediaPlayer可以播放音频和视频,另外也可以通过VideoView来播放视频,虽然VideoView比MediaPlayer简单易用,但定制性不如用MediaPlayer,要视情况选择了.MediaPlayer播放音频比较简单,但是要播放视频就需要SurfaceView.SurfaceView比普通的自定义View更有绘图上的优势,它支持完全的OpenGL ES库. 先贴出本文程序运行结果的截图,上面是播放/停止音频,可用SeekBar来调进度,下面

android开发教程之wifi开发示例

1. WIFI网卡的状态WIFI网卡的状态信息都以整型变量的形式存放在 android.net.wifi.WifiManager 类中,有以下状态:WIFI_STATE_DISABLEDWIFI网卡不可用WIFI_STATE_DISABLINGWIFI网卡正在关闭WIFI_STATE_ENABLEDWIFI网卡可用WIFI_STATE_ENABLINGWIFI网卡正在打开WIFI_STATE_UNKNOWNWIFI网卡状态未知2. 操作WIFI 网卡所需的权限CHANGE_NETWORK_STA

21天学习android开发教程之XML解析与生成_Android

本文使用SAX来解析XML,在Android里面可以使用SAX和DOM,DOM需要把整个XML文件读入内存再解析,比较消耗内存,而SAX基于事件驱动的处理方式,可以在各节点触发回调函数,不过SAX适合节点结构简单的XML文档,复杂的XML文档在后期的节点深度处理会有点麻烦. 本文要解析的test.xml文件如下: <?xml version="1.0" encoding="utf-8"?> <test> <title>testSA

21天学习android开发教程之SurfaceView与多线程的混搭_Android

上一篇简单介绍了SurfaceView的基本使用,这次就介绍SurfaceView与多线程的混搭.SurfaceView与多线程混搭,是为了防止动画闪烁而实现的一种多线程应用.android的多线程用法与JAVA的多线程用法完全一样,本文不做多线程方面的介绍了.直接讲解SurfaceView与多线程的混合使用,即开一条线程专门读取图片,另外一条线程专门绘图.         本文程序运行截图如下,左边是开单个线程读取并绘图,右边是开两个线程,一个专门读取图片,一个专门绘图:   对比一下,右边动

android开发教程之switch控件使用示例_Android

复制代码 代码如下: <Switchandroid:id="@+id/open"android:layout_width="wrap_content"android:layout_height="wrap_content"android:textOff="蓝牙关闭中"android:textOn="蓝牙开启中" /> 复制代码 代码如下: open.setOnCheckedChangeListe