[TOC]

概述

​ SDK的Tools文件夹下包含着Android模拟器操作的重要命令adb。adb的全称为(Android Debug Bridge)就是调试桥的作用。通过adb我们可以在Android Studio中方面通过DDMS来调试Android程序。借助这个工具,我们可以管理设备或手机模拟器的状态。还可以进行以下的操作:

  1. 快速更新设备或手机模拟器中的代码,如应用或Android 系统升级;

  2. 在设备上运行shell命令;

  3. 管理设备或手机模拟器上的预定端口;

  4. 在设备或手机模拟器上复制或粘贴文件;

基础命令

查看ADB版本号

1
2
3
4
(py36) baiduiov@FreweniUbuntuBaidu:~$ adb --version
Android Debug Bridge version 1.0.39
Version 1:8.1.0+r23-5~18.04
Installed as /usr/lib/android-sdk/platform-tools/adb

下面我们来看一下,我们常用的ADB命令,主要如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
// 1. 显示系统中全部Android平台:
$ android list targets

// 2.取得当前运行的模拟器/设备的实例的列表及每个实例的状态:
$ adb devices

// 3.对某一模设备执行shell命令:
$ adb -s 192.168.199.110 shell
//adb -s 模拟器编号(IP) shell 后面跟shell命令

// 4.获取管理员权限
$ adb root

// 5.ADB命令安装与卸载应用
$ adb install [-lrtsdg] <path_to_apk>
// adb install 后面可以跟一些可选参数来控制安装 APK 的行为,可用参数及含义如下:
//-l 将应用安装到保护目录 /mnt/asec
//-r 允许覆盖安装
//-t 允许安装 AndroidManifest.xml 里 application 指定android:testOnly="true" 的应用
//-s 将应用安装到 sdcard
//-d 允许降级覆盖安装
//-g 授予所有运行时权限

// ADB卸载应用的命令
$ adb uninstall <package> //例如:adb uninstall com.frewen.demo
$ adb uninstall -k <package> //卸载app但保留数据和缓存文件 例如:$ adb uninstall -k com.frewen.demo

// 6.查看adb命令帮助信息:
$ adb help

#8.展示下面的这份目录下列表
$ adb shell ls [目录绝对路径和相对路径]
// 显示/system/app目录下所有文件: $ adb shell ls /system/app

#9.终止adb服务进程
$ adb kill-server

#10.重启adb服务进程
$ adb start-server

#11.重启机器
$ adb reboot

#12、发布端口:
你可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:
adb forward tcp:5555 tcp:8000

ADB的高级命令

logcat命令

文章转自:https://developer.android.com/studio/command-line/logcat?hl=zh-cn

Logcat 是一个命令行工具,用于转储系统消息日志,其中包括设备引发错误时的堆叠追踪以及从您的应用使用 Log 类编写的消息。

本页介绍命令行 logcat 工具,但在 Android Studio 中,您也可以从 Logcat 窗口查看日志消息。有关从 Android Studio 查看和过滤日志的信息,请参阅使用 Logcat 编写和查看日志。

命令行语法:

1
[adb] logcat [<option>] ... [<filter-spec>] ...

您可以 adb 命令的形式运行 logcat,或在模拟器或所连接设备的 shell 提示符中直接运行。

下面我们来看看Logcat的各种命令参数:

常用logcat命令的使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
// 1.在命令行中输入 adb logcat --help 命令, 就可以显示该命令的帮助信息
$ adb logcat --help


// 2.设置默认的过滤器,使用adb logcat -s <TAG>
// "-s"选项:设置输出日志的标签,用于筛选出该标签的日志

adb logcat -v time -s MyTAG

adb logcat -v time -s MyTAG |grep uid // 显MyTAG的默认TAG中包含uid的内容


// 3.将日志写入对应的file文件中
// "-f"选项:将日志输出到文件, 默认输出到标准输出流中

adb logcat -f /sdcard/log.txt

// 4. 使用箭头,可以将日志对应文件中
adb logcat -v time > /Users/frewen/log.txt

install命令

文档参考:https://developer.android.com/studio/command-line/adb?hl=zh-cn

文档参考:https://blog.csdn.net/shift_wwx/article/details/78468397

adb install命令的相关详解。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
adb install [options] <apk path>   //将软件包(通过 apk path 指定)安装到系统。

options选项的相关

//选项:
-l:将应用安装到保护目录 /mnt/asec
-r:允许覆盖安装现有应用,保留其数据。
-t:允许安装测试 APK。AndroidManifest.xml 里 application 指定android:testOnly="true" 的应用
-i installer_package_name:指定安装程序软件包名称。
-s:在共享的大容量存储(如 sdcard)上安装软件包。
-f:在内部系统内存上安装软件包。
-d:允许版本降级覆盖安装。
-g:授予应用清单中列出的所有权限。

ADB卸载应用的命令

1
2
$ adb uninstall  <package>       //例如:adb uninstall com.frewen.demo
$ adb uninstall -k <package> //卸载app但保留数据和缓存文件 例如:$ adb uninstall -k com.frewen.demo

我们平时在安装的时候。总会出现各种莫名奇妙的问题。现将所有的问题总结如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
INSTALL_PARSE_FAILED_INCONSISTENT_CERTIFICATES //此apk已经安装过,且已经安装的apk和待安装的apk签名不一致

INSTALL_FAILED_ALREADY_EXISTS // 该应用已存在

INSTALL_FAILED_DUPLICATE_PACKAGE //已存在同名程序

INSTALL_FAILED_UPDATE_INCOMPATIBLE //版本不能共存

以上报错,只要卸载掉之前的已安装的应用即可,一定要确保卸载干净!不然可能会出现下面这种报错:

INSTALL_FAILED_UID_CHANGED //卸载不完全,有残留文件,导致无法安装
对于已经root过的测试机,可以进入/data/data中,把对应的包名文件夹删了,就可以正常安装了。

INSTALL_FAILED_INSUFFICIENT_STORAGE //没有足够的存储空间
这个情况就多删点手机的东西就行了


INSTALL_FAILED_CONFLICTING_PROVIDER // 存在同名的内容提供者。 需要将含有同名的内容提供者的APK删除。
// 这个一般是同一个应用修改了一些包名就进行安装导致的。


INSTALL_FAILED_TEST_ONLY // 不允许测试的测试程序。这个问题的解决方法。
// 具体请参考:https://blog.csdn.net/shift_wwx/article/details/78468397


// 只要安装的时候注意确认安装就行

// 下面的这些问题暂时没有遇到。遇到之后进行解决。

INSTALL_FAILED_INVALID_APK //无效的apk

INSTALL_FAILED_INVALID_URI //无效的链接

INSTALL_FAILED_NO_SHARED_USER //要求的共享用户不存在

INSTALL_FAILED_SHARED_USER_INCOMPATIBLE //需求的共享用户签名错误

INSTALL_FAILED_MISSING_SHARED_LIBRARY // 需求的共享库已丢失

INSTALL_FAILED_REPLACE_COULDNT_DELETE //需求的共享库无效

INSTALL_FAILED_DEXOPT //dex优化验证失败

INSTALL_FAILED_OLDER_SDK //系统版本过旧


INSTALL_FAILED_NEWER_SDK //系统版本过新


INSTALL_FAILED_CPU_ABI_INCOMPATIBLE //包含的本机代码不兼容

CPU_ABIINSTALL_FAILED_MISSING_FEATURE //使用了一个无效的特性

INSTALL_FAILED_CONTAINER_ERROR //SD卡访问失败

INSTALL_FAILED_INVALID_INSTALL_LOCATION //无效的安装路径

INSTALL_FAILED_MEDIA_UNAVAILABLE //SD卡不存在

INSTALL_FAILED_INTERNAL_ERROR //系统问题导致安装失败

INSTALL_PARSE_FAILED_UNEXPECTED_EXCEPTION //未知错误