ubuntu adb(ubuntu驱动安装)

各位老铁们好,相信很多人对ubuntu adb都不是特别的了解,因此呢,今天就来为大家分享下关于ubuntu adb以及ubuntu驱动安装的问题知识,还望可以帮助大家,解决大家的一些困惑,下面一起来看看吧!

Ubuntu 环境变量及 ADB 配置

Ubuntu Linux系统环境变量包括两类:系统环境变量和用户环境变量。系统环境变量对所有用户有效,而用户环境变量仅对当前用户生效。

用户环境变量通常保存在以下文件中:

~/.profile,~/.bash_profile,或者~/.bash_login,~/.bashrc。在Ubuntu 10.0以前版本中不推荐使用这些文件。

系统环境变量一般存储在以下位置:

/etc/environment,/etc/profile,/etc/bash.bashrc。在Ubuntu 10.0版本中不推荐使用这些文件。

Ubuntu Linux环境变量的优先级依次为:

/etc/profile-在用户登录时,操作系统定制用户环境时使用的第一个文件,为每个用户设置环境信息,在用户第一次登录时自动执行。

/etc/environment-操作系统在读取用户自己的profile前设置环境文件的环境变量。

~/.bash_profile-包含每个用户的shell信息,在登录时执行一次,设置环境变量并执行用户的.bashrc文件。

/etc/bashrc-为运行bash shell的每个用户执行此文件,当bash shell打开时,该文件被读取。

~/.bashrc-包含专用于用户的bash信息,在登录时以及每次打开新shell时被读取。

/etc/bash.bashrc-用户进入shell或桌面系统自动执行的脚本。

环境变量优先级:1> 2> 3

Ubuntu Linux中配置adb环境变量:

对于当前用户(homer),编辑~/.bashrc文件,在其中加入:

export PATH=/home/homer/android-sdk-linux/platform-tools/:$PATH

重启或重新登录后生效,立即生效时执行:source~/.bashrc

对于超级用户(root),同样在~/.bashrc文件中加入相同的路径。

全局设置(homer、root、sudo):在PATH默认的bin目录下新建adb的软链接。

查看sudo$PATH:echo‘echo$PATH‘| sudo sh/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

进入sudo默认PATH:cd/usr/local/bin

建立软链接:sudo ln-s/home/homer/android-sdk-linux/platform-tools/adb

这样,普通用户(homer)、超级用户(root)、sudo用户均可以直接使用adb命令,因为这些用户的PATH环境变量都包含了目录/usr/local/bin。

Ubuntu Linux无法识别手机:

homer@ubuntu:~$ adb devices

结果为:List of devices attached?no permissions

Ubuntu Linux启动手机识别:执行以下命令解决问题。

homer@ubuntu:~$ sudo adb kill-server

homer@ubuntu:~$ sudo adb start-server

* daemon not running. starting it now on port 5037** daemon started successfully*

*homer@ubuntu:~$ adb devices

List of devices attached FM6111131707 device

ubuntu下adb shell安装

在Ubuntu系统下安装ADB Shell,需要分步骤进行,包括ADB的安装、环境变量的配置和执行一系列命令。首先,通过以下命令进行安装:

sudo add-apt-repository ppa:nilarimogard/webupd8

sudo apt-get update

sudo apt-get install android-tools-adb

安装后,使用以下命令启动ADB Server:

adb start-server

若需结束当前ADB Server,可以使用:

adb kill-server

为了在Ubuntu中连接Android设备,需要配置ADB环境变量,以支持非root身份下的USB调试。请下载ADB for Linux工具包并解压到任意目录。接着,使用以下命令查看USB设备的使用情况:

$ lsusb

从输出中找到当前使用的USB端口,例如Bus 002 Devices 004:ID 230b:0100。接下来,打开并编辑/etc/udev/rules.d/70-android.rules文件,根据设备ID添加以下规则:

SUBSYSTEM=="usb", ATTRS{idVendor}=="230b", ATTRS{idProduct}=="0100", MODE="0666"

然后,保存并退出文件,并调整权限:

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

接着,在用户主目录下的~/.bashrc文件中添加ADB工具路径:

vi~/.bashrc

在文件末尾加入以下内容,将红色部分替换为解压ADB工具包的路径:

export PATH=${PATH}:/home/luobin/platform-tools

执行命令重新启动udev服务:

$sudo service udev restart

为启用USB调试,请重启Ubuntu系统。接着,通过USB连接Android设备并确保USB调试已开启。在终端中执行以下命令:

adb kill-server

adb devices

adb root

最后,使用以下命令启动ADB Server并连接Android设备:

adb start-server

adb devices

此时,应能通过以下命令在Ubuntu终端执行Android Shell命令:

adb shell

至此,Ubuntu下ADB Shell的安装过程完成,实现了与Android设备的连接与调试。确保在执行adb shell命令前,ADB Server已经正常启动并连接到Android设备。

怎样在Ubuntu下安装Android SDK/ADB

Ubuntu电脑安装Android SDK/ADB

第一步,你要下载Linux版Android SDK的安装或文件包,然后你需要从Android SDK Manager内下载Platform Tools

Package

请从Google官方获取Android

SDK安装或文件包,通常情况,你下载的文件名为android-sdk_rxx-linux.tgz的形式,rxx代表版本,比如,r16版,即android-sdk_r16-linux.tgz,r24版,即android-sdk_r24-linux.tgz

请放置Android SDK安装或文件包在你的用户主目录

在你的Ubuntu电脑上打开终端窗口

解压Android SDK文件:

cd~

tar-zxvf android-sdk_r16-linux.tgz

在~/android-sdk-linux/tools字目录,有一个叫做android的可执行文件,尽管名字是android,但它实际上是Android

SDK Manager

运行Android SDK Manager:

./~/android-sdk-linux/tools/android

选择Android SDK

Tools与Android SDK Platform-tools项,点Install

packages安装Platform Tools

Package工具包。包括ADB与Fastboot可执行的文件在内的工具包都会被下载,由于下载的文件较多而需要一定的时间,你能去喝点东西

你下载的Platform Tools

Package工具包文件将位于新创建的~/android-sdk-linux/platform-tools目录

第二步,修改ADB与Fastboot可执行文件的默认PATH路径环境。PATH环境变量可以是在~/.profile(或~/.bash_profile)或者~/.bashrc文件内修改,~/.profile文件是读取所有交互式Shell的登录,~/.bashrc文件读取所有非交互式Shell的登录(如sftp),在大多数默认情况下,~/.profile文件导入所有~/.bashrc文件的设置。PATH命令设定的改变必须包括/android-sdk-linux/tools与/android-sdk-linux/platform-tools目录

kevdog的PATH命令设定通过Ubuntu系统内初始的默认编辑器Gedit在~/.bashrc文件底部增加了一行:

export

PATH=${PATH}:${HOME}/android-sdk-linux/tools:${HOME}/android-sdk-linux/platform-tools

第三步,我们需要为Ubuntu创建udev设备管理规则,从而让设备在通过USB端口连接到电脑时能被正确地识别

将设备连接到电脑,然后执行命令:

lsusb

你会看到类似于下面的输出信息:

Bus 001 Device 001: ID 1d6b:0002 Linux Foundation

2.0 root hub

Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 004

Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 005 Device 001:

ID 1d6b:0001 Linux Foundation 1.1 root hub

Bus 001 Device 063: ID 04e8:6860

Samsung Electronics Co., Ltd

由于kevdog的设备是Samsung的某款设备,因此你能看到相应的识别信息:

Bus 001 Device 063: ID

04e8:6860 Samsung Electronics Co., Ltd

我们来解释下上面的识别信息:

Bus 001 Device

063,设备端的名称是/dev/bus/usb/001/063,即这个信息可以帮助我们确定设备端的名称

04e8,vendorID,即供货商编号

6860,productID,即产品编号

使用设备端的名称/dev/bus/usb/001/063可以让我们查询设备的属性,查询这些属性有时很有必要,因为udev设备管理匹配设备是基于特定标准的。为此,我们需要一个正确的udev设备匹配规则集,这个过程的第一步就是查询能被连接或插入到我们规则集的准则,这可以通过udevadm程序来实现,并且有两种方式现,它们生成的输出信息为我们的设备构建udev设备管理规则:

udevadm查询udev设备管理规则方法1:

udevadm info-q all-n<name of device

node>

根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:

udevadm info-q all-n/dev/bus/usb/001/063

你会看到类似于下面的输出信息:

$ udevadm info-q all-n/dev/bus/usb/001/063

P:

/devices/pci0000:00/0000:00:1d.7/usb1/1-8

N: bus/usb/001/063

S:

libmtp-1-8

S: GalaxyNexus

E: UDEV_LOG=3

E:

DEVPATH=/devices/pci0000:00/0000:00:1d.7/usb1/1-8

E: MAJOR=189

E:

MINOR=62

E: DEVNAME=/dev/bus/usb/001/063

E: DEVTYPE=usb_device

E:

DRIVER=usb

E: PRODUCT=4e8/6860/216

E: TYPE=0/0/0

E: BUSNUM=001

E: DEVNUM=063

E: SUBSYSTEM=usb

E: ID_MTP_DEVICE=1

E:

ID_MEDIA_PLAYER=samsung_galaxy-s2

E: ID_VENDOR=samsung

E:

ID_VENDOR_ENC=samsung

E: ID_VENDOR_ID=04e8

E: ID_MODEL=Galaxy

E:

ID_MODEL_ENC=Galaxy

E: ID_MODEL_ID=6860

E: ID_REVISION=0216

E:

ID_SERIAL=samsung_Galaxy_0146B06501005018

E:

ID_SERIAL_SHORT=0146B06501005018

E: ID_BUS=usb

E:

ID_USB_INTERFACES=:ffff00:ff4201:

E: DEVLINKS=/dev/libmtp-1-8

/dev/GalaxyNexus

E: TAGS=:udev-acl:

我们使用的规则从有E:(E=ENV=Device

Property设备属性值)的行开始

udevadm查询udev设备管理规则方法2:

udevadm info-a-p$(udevadm info-q path

-n<name of device node>)

根据原作者的实际情况,设备端名称是/dev/bus/usb/001/063,因此命令是:

udevadm info-a-p

$(udevadm info-q path-n/dev/bus/usb/001/063)

你会看到类似于下面的输出信息:

$ udevadm info-a-p$(udevadm info-q path-n/dev/bus/usb/001/063)

Udevadm info starts with the device specified by the devpath and then

walks up the chain of parent devices. It prints for every device

found,

all possible attributes in the udev rules key format.

A rule to match, can

be composed by the attributes of the device

and the attributes from one

single parent device.

looking at device

'/devices/pci0000:00/0000:00:1d.7/usb1/1-8':

KERNEL=="1-8"

SUBSYSTEM=="usb"

DRIVER=="usb"

ATTR{configuration}==""

ATTR{bNumInterfaces}==" 2"

ATTR{bConfigurationValue}=="1"

ATTR{bmAttributes}=="80"

ATTR{bMaxPower}=="500mA"

ATTR{urbnum}=="29"

ATTR{idVendor}=="04e8"

ATTR{idProduct}=="6860"

ATTR{bcdDevice}=="0216"

ATTR{bDeviceClass}=="00"

ATTR{bDeviceSubClass}=="00"

ATTR{bDeviceProtocol}=="00"

ATTR{bNumConfigurations}=="1"

ATTR{bMaxPacketSize0}=="64"

ATTR{speed}=="480"

ATTR{busnum}=="1"

ATTR{devnum}=="63"

ATTR{devpath}=="8"

ATTR{version}==" 2.00"

ATTR{maxchild}=="0"

ATTR{quirks}=="0x0"

ATTR{avoid_reset_quirk}=="0"

ATTR{authorized}=="1"

ATTR{manufacturer}=="samsung"

ATTR{product}=="Galaxy"

ATTR{serial}=="0146B06501005018"

looking at parent device'/devices/pci0000:00/0000:00:1d.7/usb1':

KERNELS=="usb1"

SUBSYSTEMS=="usb"

DRIVERS=="usb"

ATTRS{configuration}==""

ATTRS{bNumInterfaces}==" 1"

ATTRS{bConfigurationValue}=="1"

ATTRS{bmAttributes}=="e0"

ATTRS{bMaxPower}==" 0mA"

ATTRS{urbnum}=="1403"

ATTRS{idVendor}=="1d6b"

ATTRS{idProduct}=="0002"

ATTRS{bcdDevice}=="0300"

ATTRS{bDeviceClass}=="09"

ATTRS{bDeviceSubClass}=="00"

ATTRS{bDeviceProtocol}=="00"

ATTRS{bNumConfigurations}=="1"

ATTRS{bMaxPacketSize0}=="64"

ATTRS{speed}=="480"

ATTRS{busnum}=="1"

ATTRS{devnum}=="1"

ATTRS{devpath}=="0"

ATTRS{version}==" 2.00"

ATTRS{maxchild}=="8"

ATTRS{quirks}=="0x0"

ATTRS{avoid_reset_quirk}=="0"

ATTRS{authorized}=="1"

ATTRS{manufacturer}=="Linux 3.0.0-14-generic

ehci_hcd"

ATTRS{product}=="EHCI Host Controller"

ATTRS{serial}=="0000:00:1d.7"

ATTRS{authorized_default}=="1"

looking at parent device'/devices/pci0000:00/0000:00:1d.7':

KERNELS=="0000:00:1d.7"

SUBSYSTEMS=="pci"

DRIVERS=="ehci_hcd"

ATTRS{vendor}=="0x8086"

ATTRS{device}=="0x27cc"

ATTRS{subsystem_vendor}=="0x103c"

ATTRS{subsystem_device}=="0x3010"

ATTRS{class}=="0x0c0320"

ATTRS{irq}=="20"

ATTRS{local_cpus}=="ff"

ATTRS{local_cpulist}=="0-7"

ATTRS{dma_mask_bits}=="32"

ATTRS{consistent_dma_mask_bits}=="32"

ATTRS{broken_parity_status}=="0"

ATTRS{msi_bus}==""

ATTRS{companion}==""

looking at

parent device'/devices/pci0000:00':

KERNELS=="pci0000:00"

SUBSYSTEMS==""

DRIVERS==""

我们使用的规则从有ATTRS(ATTRS=Device

Attributes设备属性)的行开始

不管是ENV,还是ATTRS,我们可以构建一个udev设备管理规则集。规则集的名称可以随意,根据原作者的意图,我们叫做51-android.rules:

你能这样建立规则集文件:

gksu gedit/etc/udev/rules.d/51-android.rules

之后,请在规则集文件中加入相关的规则,以原作者的规则来看,注意是一行一个:

SUBSYSTEM=="usb",

ENV{ID_VENDOR_ID}=="04e8", ENV{ID_MODEL}=="Galaxy", MODE="0666",

SYMLINK+="GalaxyNexus"

SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",

ENV{ID_MODEL_ID}=="6860", MODE="0666", SYMLINK+="GalaxyNexus"

SUBSYSTEM=="usb", ATTR{idVendor}=="04e8", ATTR{idProduct}=="6860",

ATTR{product}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus"

如上面所加的规则,这些规则匹配准则是SUBSYSTEM,

ENV,ATTR,它只会修改设备的模式MODE(0666=rw-rw-rw-)与创建链接于/dev/GalaxyNexus的GalaxyNexus标识。当然,更多的指令可以分配给设备,如插入或移除设备时的执行命令,你能这样指定指令:

ACTION=="add", RUN+="<name of action>"

ACTION==”remove”,

RUN+="<name of action>"

例如,我们要设定设备在插入或弹出时播放一个声音或MP3文件,可以如下指令设定:

ACTION=="add", RUN+="/usr/local/bin/NexusMount.sh"

ACTION==”remove”, RUN+="/usr/local/bin/NexusUnmount.sh"

需要注意的是,每个ACTION指令设定必须在它自己的命令行;目录必须正确;指令可以是多重设定

一旦规则构建完成,我们需要保存/etc/udev/rules.d/51-android.rules规则文件

在你执行规则集前,测试一下通常是一个好主意,因为那样你能很容易地找出编写规则集的错误:

你能使用udevadm工具简单地完成规则集的测试:

udevadm info-q path-n d=<device

name>

根据原作者的设备端名/dev/bus/usb/001/063,测试行为:

udevadm test--action="SUBSYSTEM=="usb", ENV{ID_VENDOR_ID}=="04e8",

ENV{ID_MODEL}=="Galaxy" MODE="0666", SYMLINK+="GalaxyNexus""$(udevadm info-q

path-n/dev/bus/usb/001/063)

虽然测试输出行相当长,两行输出信息正确地识别规则集的指令设定:

udev_rules_apply_to_event: MODE 0666

/etc/udev/rules.d/51-android.rules:1

udev_rules_apply_to_event: LINK

'GalaxyNexus'/etc/udev/rules.d/51-android.rules:1

一旦你确认了规则集正确,请重启udev设备管理服务:

sudo service udev restart

第四步,退出电脑的登录,然后重新登录回

在设备插入的情况下,执行ADB命令,如确认设备连接:

$ adb devices

你会看到设备识别号信息,根据原作者的设备,它是

0146B06501005018 device

如果你的设备已启动在Fastboot模式,许多设备不启动可能也行,你能执行Fastboot命令,如标准的Fastboot设备:

$

fastboot devices

阅读剩余
THE END