adb常用命令教程

1.Android Debug Bridge -

adb常用命令

1.1简介

Android Debug Bridge,我们一般简称为adb,主要存放在sdk安装目录下的platform-tools文件夹中,它是一个非常强大的命令行工具,通过这个工具你能够与你的android设备进行交互。同时这是一个包含了以下三部分的cs模式的程序:

1) adb client

  从图中,我们知道client是运行在PC端的,每当我们发起一个adb命令的时候,就会开启一个client程序。当然,当我们开启DDMS或者ADT的时候,也会自动创建client。

  当我们开启一个client的时候,它首先会去检测后台是否已经有一个server程序在运行着,否则会开启一个adb-server进程。

  所有的client都是通过5037端口与adb-server进行通信的。

2)adb daemon(adbd)

  从图中,我们知道daemon是作为一个后台进程运行在模拟器/真实Android设备中的。

  daemon使用端口的范围是5554-5585,每个模拟器/设备连接到PC端时,总会开启这么一个后台进程,并且为其分配了两个连续的端口,比如:

    Emulator 1, console: 5554

    Emulator 1, adb: 5555

  也正因为每个设备都分一组两个端口,也已adb连接手机的最大数量为16。

  说回端口的作用,在这两个端口中,其中偶数端口是用于server 与设备进行交互的,可以让server直接从设备中读取数据,而奇数端口是用来与设备的adbd进行连接通信的。

2) adb server

  从图中,我们同样可以知道,server也是作为一个后台的程序运行在PC端的,他负责管理client进程以及adb daemon之间的通信。

  当一个server开启的时候,他会自动绑定并且监听5037端口,接收client通过该端口发送过来的命令。同时server还会对5555-5585间的奇数端口进行扫描,进行对已连接设备的定位。

1.2 常用的adb命令

首先我们先来介绍一下,adb命令的使用格式吧:

 
 

adb是必须的,接下来方括号[]里面的内容不是必须的,最后才是我们需要执行的命令操作,例如 adb -s emulator-5554 install UCBrowser.apk (这是安装UC浏览器的意思)

下面先介绍下,前面几个参数的含义吧:

  -d: 让唯一连接到该PC端的真实安卓设备执行命令,如果发现USB中连接有多部设备,将会报错

  -e: 让唯一连接到该PC端的模拟器执行命令,如果发现开启了多个模拟器,将会报错

  -s:通过设备的序列号进行指定设备执行命令

如果设备只连接有一个设备或者一个模拟器的时候,可以不用声明这三个参数,adb默认会让这部唯一连接到的设备进行命令执行。

ok,下面开始讲解常用的命令吧:

1) 查看当前PC端连接有多少设备:
 
 

终端中的执行结果为:

从上图中,我们看到了设备有的两种状态,其实执行该命令,可能返回的状态有三种:

  I. device 设备已经成功连接到了adb-server

   II. offline 设备并没有连接到adb或者没有响应

  III. no device 并没有设备/模拟器连接

2) 查看adb的版本
 
 

终端中的执行结果为:

3) 给设备进行软件的安装

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

 
 

其中[options]中最常用的选项是-r,代表着本次安装是重新安装,会保留用户数据。

4) 卸载设备中已经安装的软件
 
 

终端中的执行结果为:

除了上面这种方法,我们还有另外一个命令:

 
 

这里的options是-k,加上该参数表明卸载软件后依旧保留用户数据

5) 将数据从设备复制到PC中

终端的执行结果:

 

在D://盘中我们也可以发现stericson-ls文件

6) 讲数据从PC端复制到设备中

  终端的执行结果:

 

7) 获取连接到的手机的序列号
 
 

  终端的执行结果:

 

8)获取设备的连接状态
 
 

  终端的执行结果:

9) 等待设备连接成功
 
 

该命令将会阻塞一直到默认连接的那部机器状态变为device,也就是连接成功。

10) adb-server 的开启与关闭
 
 

终端的执行结果:

有时候我们开启server会失败,这是因为我们装了的手机助手,豌豆荚或者其他软件自带有自己的adb,导致端口冲突开启失败。主要关掉那些软件并且杀掉那些软件自带的adb进程重来即可。

1.2 手机执行Shell命令

众所周知,Android的内核本身就是Linux,所以Android本身也支持Linux命令,但是因为是手机系统,所以进行了一定的删减,部分命令不支持,而不支持的部分,我们可以通过安装busybox这个软件进行

填补。

下面我们讲解下如何在手机中执行Shell命令:

  1) 每次都加上adb shell来进行命令的发送与执行

 
 

  2) 先通过adb shell进入手机Shell执行状态,然后直接输入Linux命令,如图:

  

1.3 Activity Manager 常用命令与参数说明

一般情况下,我们最常用它来进行app的开启,并且传递一定的参数过去,比如:

 
 

详情的可以参考:http://developer.android.com/tools/help/adb.html#IntentSpec

在这里就不做太过详细和重复的说明了

1.4 Package Manager 常用命令与参数说明

1) 使一个apk处于禁用状态,相当于卸载了:
 
 

终端执行结果:

同时我们在手机上发现,UC浏览器的图标不见了

2) 让一个apk从禁用状态恢复过来
 
  
 
 

终端执行结果:

同时我们从手机上发现,UC浏览器的图标又回来啦。

3) 查看一个apk所在的路径

终端执行结果:

4) 查看手机中装的所有的包
 
 

具体更多的详情,可以参考:http://developer.android.com/tools/help/adb.html#IntentSpec

再次不做过多的说明

1.5其他常用的adb命令

1) 屏幕录像

例如,屏幕开始录像并且储存到/sdcard中,同时名字为demo.mp4

 
 
2) 关闭设备请求,开启设备
3)设备关机以及重启

2 android -

android常用命令

2.1 查看机器上所有已经安装的Android版本和AVD设备

2.1.1查看机器上已经安装的AVD(Android Virtual Device)设备

通过下面的命令我们可以查看机器上安装了的所有的AVD:

 
 

终端执行结果:

从图中我们可以看到,在我的机器上总共建立了两个avd,其中一个是2.3.3版本的 ,另一个是4.0版本的

2.1.2 查看机器上所有已经安装的Android版本

通过下面这个命令,我们可以查看到机器上已经安装了的Android版本:

 
 

终端执行结果:

上图中显示的只是其中的 一部分。

2.2 AVD设备管理

2.2.1创建AVD设备

首先,通过上面的命令我们可以查询到我们机器上所安装又的android版本,接下来,我们就可以根据我们的需求以及已安装的版本进行avd设备的创建。具体命令格式如下:

 
 

举个例子:

 
 

这样子我们就可以创建一个最简单的avd了,通过android list avd我们可以查看到这个avd:

2.2.2 升级AVD设备使之符合新的SDK环境
 
 

举个例子:

 
 
2.2.3 重命名AVD设备或者修改路径
2.2.4 删除AVD设备
 
 

2.3 Android项目管理

2.3.1创建一个新的Android项目
复制代码
 
  
复制代码

举个例子,我要在当前路径下的xiaoxuetu文件夹中创建一个名字为xiaoxuetu,包名是com.xiaoxuetu,activity名字为MainActivity的项目:

 
 

终端的执行结果为:

从结果中,我们就可以看到,执行命令后他为我们生成了一系列的文件,关于一个项目的具体架构,我们后面讲到。

2.3.2 更新一个Android项目

所谓的更新是什么呢?意思就是可以为一个已经存在的Android项目,添加库,修该项目名字,设置项目的针对的Android版本,同时还可以更新他的子项目,如测试项目。

复制代码
复制代码

我们先来给个简单的使用例子,后来再来介绍 -l 和 -s参数吧:

 
 

终端的执行结果:

 

2.3.3 创建库项目(lib project)

上面的属性 -l 其实指的就是库项目,而库项目(lib project)本身也是一个标准的android 项目。我们可以像之前那样创建一个库项目,也可以直接利用android工具本身自带的工具进行创建:

复制代码
 
  
复制代码

下面我们来举一个例子吧:

 
 

终端的执行结果为:

看起来,他本身和标准的Android 项目没有什么区别,差别主要在于project.properties文件中多了这么一个属性:

 
 

如果你想吧其他已经存在的项目更改成库项目,只要在它的project.properties文件中加入上面那一句即可。

2.3.4 更新库项目

更新库项目,比如说更新库项目针对的Android版本:

 
 

具体使用方法,跟前面 2.3.2 更新一个Android项目 一样,在此不做过多的说明

2.3.5 库项目的引入

其实这个在前面 Android项目创建和更新 的时候已经讲解过,使用的就是 -l (或者--library)这个参数:

当引入成功后,我们就会发现在project.properties文件中多了这么一行:

 
 

如果你引入的是多个库项目,那么将会使用.n来决定各个库项目的优先权:

 
 

当然我们也可以给library_projectC较高的优先权:

 
 

注意:.n一定是从1开始的

2.3.6 创建测试项目(test-project)

创建一个测试用的项目,可以用来测试安卓应用的Activity,Service等等,具体后面的博客会讲,在此不做详细的讲解,如果现在就想了解的话,可以先参考:http://developer.android.com/tools/testing/testing_android.html

 
 

下面主要讲解下-m这个参数,如果有这么一个项目/source/projectA,我们要建立一个测试项目/source/projectATest用于测试/source/projectA,那么,我们的m必须是../projectA,下面给出一个简单的例子,测试的是同一目录下之前创建的xiaoxuetu项目:

 
 

终端中的执行结果是:

2.3.7 更新测试项目(test-project)

更新该测试项目要测试的Android项目:

 
 

具体注意事项和执行结果跟前面的差不多,在此就不做多说明了。


3. emulator -

打包常用命令

一般情况下,我们使用这个命令进行模拟器的开启比较多

模拟器的开启方式如下:

 
 

一般情况下我们都是直接打开即可,具体的options可以参考http://developer.android.com/tools/help/emulator.html,在此不做重复说明

4. Android Asset Packaging Tool

Android Asset Packaging Tool,简称aapt,通过aapt,我们可以对打包的资源进行管理,包括查看,增加,删除。

4.1 查看资源包内的内容

 
 

终端的执行结果是:

4.2 查看APK内的指定内容

复制代码
复制代码

例如,我要查看这个包所使用到的权限:

 
 

终端的执行结果:

因为该项目并没有使用到权限,所以也就显示为空了。

4.3 打包生成资源压缩包

复制代码
 
  
复制代码

上面的参数有点多,下面给出一些常用参数的简单说明吧:

  -f    如果编译出来的文件已经存在,强制覆盖

  -m  使生成的包的目录存放在-J参数指定的目录

  -J    指定生成的R.Java 的输出目录

  -S    res文件夹路径

  -A    assert文件夹路径

  -I     某个版本平台的android.jar的路径

  -F    具体指定APK文件的输出

  -J    R.java文件的生成目录

在AAPT中常用的命令格式是:

 
 

-I 额外添加的包必须包含android.jar这个jar包

下面举一个例子:

 
 

终端执行结果:

当然,这里打出来的apk并不是完整可用的,真正的apk打包还需要经过dex的编译等流程。

4.4 从压缩包中删除指定文件

 
 

首先,我们查看下前面打包的xiaoxuetu.apk里面的内容

下面如果我们要删除里面的AnroidManifest.xml文件,执行下面命令:

 
 

终端的执行结果:

什么都没有输出表示已经删除成功了,我们再来查看下该apk中的AnroidManifest.xml是不是真的已经被删除了:

是的,我们再也看不到AndroidManifest.xml。说明已经删除成功了。

4.5 往压缩包中添加指定文件

 
 

假设我们要往xiaoxuetu.apk中加回AndroidManifest.xml文件,我们继续执行:

 
 

终端的执行结果是:

我们再来查看xiaoxuetu.apk中的内容发现AndroidManifest.xml又回来啦:

4.6查看aapt的版本号

 
 

终端的执行结果:

5. javac编译java文件

首先我们来讲解下javac的用法:

复制代码
 
  
复制代码

通过上面的选项可以知道在编译过程中:

1) 由于我们的Android编码使用的是UTF-8,所以需要指定 -encoding UTF-8

2) 由于我们还需要指定生成特定VM版本的类文件,所以我们需要制定 -target 为1.7

3) 由于我们编译的是Android项目,所以需要另外Android的jar包,才能在编译过程中,避免引入错误,因此需要用到 -bootclasspath选项,引入响应android版本的jar包。

4) 由于我们需要制定编译后的class文件的输出位置,所以我们还需要用到 -d这个选项

因此,一般情况下我们编译一个安卓项目中的class文件的命令格式为:

 
 

下面举一个例子,直接编译xiaoxuetu这个Android项目的java文件:

 
 

终端的执行结果是:

我们在来看看xbin目录下,编译好的class文件都存在了:

6.使用dex编译Android应用

6.1 使用方法

相信大家都知道,在Android平台中,使用的是并没有遵循JVM规范的Dalvik虚拟机,他并不直接运行java二进制文件,而是运行它特有的*.dex文件,因此我们需要通过DX工具将Android应用的*.class文件转换为*.dexwenjian .

dex工具的常用命令格式如下

 
 

注意:<需要编译到的路径> 和 <需要编译的java文件所在的路径> 必须是全路径,否则他是以dx.bat所在的路径为相对路径进行查找和编译的

下面举一个例子,假设我要把前面编译的class文件转换成*.dex文件,需要执行命令:

 
 

终端的执行结果:

再到E:\Workspaces\android\xiaoxuetu\xbin目录下我们就会找到classes.dex这个文件出来了。

6.2 常见的问题

问题1 : 在编译过程中,总是出现以下问题:

原因:这是因为我们写了相对路径,假设dx.bat所在的路径是D:\android_dev_tools/platform_tools下,那么在编译的时候,它将会到 D:\android_dev_tools/platform_tools 目录去寻找xbin文件夹,所以找不到xbin文件夹

解决方法:像示例中那样使用绝对路径

问题2:在编译过程中,总是出现以下问题:

原因:经过谷歌,在Stackflow的解释为:

 
 

解决方法:在javac编译的时候,通过source和target指定版本为1.6,详情见示例。

7.apkbuilder

这个工具用于将各种资源打包成一个Android应用。它的使用方法是:

复制代码
 
  
复制代码

 

下面讲解下常用的命令吧:

  -rf 参照源文件的目录的结构

  -u 创建一个没有签名的包

  -z 将某个压缩文件添加到包中

  -f 将某个文件添加到保重

那么常用的apkbuilder命令格式就是:

 
 

注意:<需要编译到的路径> 和 <需要编译的java文件所在的路径> 必须是全路径

下面举个例子吧:

 
 

终端的执行结果是:

 

同时在E:\Workspaces\android\xiaoxuetu\xbin\我们可以打包好的apk文件了。


8.keytool -

签名常用命令

这是我们JDK自带的密钥和证书管理工具

复制代码
复制代码

一般情况下,我们都是直接通过以下格式的命令进行证书生成:

 
 

比如生成一个别名为 tbb 证书名字为tbb.keystore的证书:

 
 

执行该命令后,按照提示进行密码等情况的输入即可。

9.jarsigner

使用这个工具我们可以给apk进行签名:

复制代码
 
  
复制代码

一般情况下,对apk文件进行签名的命令格式为:

 
 

-verbose : 指定生成详细输出

下面举一个例子,为我们前面博文中建立的xiaoxuetu.apk进行签名:

 
 

终端的执行结果为:

10 zipalign

zipalign是Android自带的一个档案整理工具,可用于优化APK安装包,从而提升Android应用与系统之间的交互效率,提升应用程序的运行速度。

复制代码
 
  
复制代码

一般情况下,我们直接使用该命令的基本格式为:

 
 

下面就针对我们的xiaoxuetu.apk进行一次优化做为例子:

 
 

转载于:https://www.cnblogs.com/hdk1993/p/6664694.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
adb logcat是一种Android开发工具,用于捕获和查看Android设备上的系统日志信息。下面将以300字的内容回答adb logcat教程adb logcat是通过Android调试桥(Android Debug Bridge,简称ADB)与Android设备进行通信的命令工具,它能够在开发阶段帮助开发者分析调试应用程序。首先,确保已安装adb工具并在命令行中可以正常运行。将Android设备连接到电脑上,并开启设备的USB调试模式。 接下来,在命令行中输入adb devices命令,可以列出已连接的设备列表。确认设备已被识别之后,输入adb logcat命令,就可以开始捕获设备的系统日志信息。 adb logcat命令有多个选项,可以根据需要进行使用。常用的一些选项包括: - -d:将当前日志消息输出到命令行,并停止日志输出。 - -v:指定日志消息的格式。例如,使用-v brief可以显示简洁的日志信息,-v thread会显示线程和优先级等信息。 - -s:按照指定的标签过滤日志输出。可以输入一个或多个标签,用空格分隔。 - -c:清除设备上的日志缓存。 - -f:将日志输出保存到指定文件中。 除了基本的命令选项外,adb logcat还可以按照不同的标签和优先级过滤日志信息,以便更好地定位和排除问题。对于开发过程中的调试和分析,还可以配合使用其他命令选项和工具来进行更深入的操作。 总的来说,adb logcat是一种简便而强大的工具,可以帮助开发者捕获和分析Android设备上的系统日志信息,从而更好地进行应用程序的调试和优化。通过学习和掌握adb logcat的使用方法,开发者可以更高效地进行Android应用程序开发。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值