命令相关-ADB

adb官方链接

调试相关

adb服务

开启adb服务

adb start-server

关闭adb服务

adb kill-server

adb连接

1
2
3
4
adb connect 127.0.0.1:5037
adb connect 127.0.0.1:5554
adb connect 127.0.0.1:5555
adb connect 127.0.0.1:5556

发布端口

可以设置任意的端口号,做为主机向模拟器或设备的请求端口。如:

1
adb forward tcp:5555 tcp:8000

设备

查看当前设备 cpuInfo

1
2
3
adb shell
cd /proc
cat cpuinfo

打印出内核的调试信息

1
adb shell dmesg

列出设备(验证手机是否连上adb)

  • 列出设备及其id
    adb devices
  • 使用特定设备操作
    adb -s device_id
    例如:adb -s 47db0de20304 shell

获取设备的ID和序列号

1
2
3
adb get-product
#与adb devices获取的值一样
adb get-serialno

查看安卓版本

1
2
3
4
5
# 获取系统版本
adb shell getprop ro.build.version.release

# 获取系统api版本
adb shell getprop ro.build.version.sdk

重启设备

正常重启

1
adb reboot
1
2
指定某台机器进行重启
adb -s 真机序列号 reboot

重启到 bootloader (刷机模式)

adb reboot bootloader

重启到 recovery (恢复模式)

进入Recovery 模式可以使用组合键,也可以使用adb 命令 adb 命令进入recovery 模式如下

adb reboot recovery

1
adb -s 真机序列号 reboot

跳过Google 开机向导的命令

1
2
3
adb shell pm disable com.google.android.setupwizard
adb shell settings put global device_provisioned 1
adb shell settings put secure user_setup_complete 1

启动开机向导命令

1
2
3
4
C:\Users\Administrator>adb shell am start  com.google.android.setupwizard/.user.WelcomeActivity
Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.google.android.setupwizard/.user.WelcomeActivity }

C:\Users\Administrator>

查看手机系统进程

列出进程列表及其pid(使用 ps 命令查看系统进程)

adb shell ps

杀死指定pid的进程

adb shell kill pid

查看指定进程信息

adb shell ps -x pid

使用Top命令查看系统进程

1
adb shell top

结合findstr 命令 过滤多余的信息

1
adb shell ps | findstr qq

查看 service

1
adb shell service list

查看系统当前内存使用情况

1
adb shell cat /proc/meminfo

查看指定包名应用内存使用情况

adb shell dumpsys meminfo package

示例:【因为命令行窗口展示不全所以打印到具体文件中】

1
adb shell dumpsys meminfo com.xm597.app >d:meminfo.txt
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
Applications Memory Usage (in Kilobytes): //应用程序内存使用情况(以千字节为单位)
Uptime: 2398651762 Realtime: 2398651762 //运行时间、实时

Total PSS by process: //按进程的总 PSSProportional Set Size
474,082K: com.tencent.mm (pid 12503)
344,542K: system_server (pid 1917)
。。。

Total PSS by OOM adjustment: //OOMOut of Memory)调整的总 PSS
6,016,369K: Native //本机(Native
474,082K: com.tencent.mm (pid 12503)
344,542K: system_server (pid 1917)
314,535K: com.sina.weibo (pid 4753)
。。。
226,120K: Foreground //前台(Foreground
226,120K: com.xm597.app (pid 10282 / activities)

Total PSS by category: //按类别的总 PSS
692,168K: Native //本机(Native
566,750K: .art mmap
492,547K: .dex mmap
460,641K: Dalvik
428,202K: .so mmap
337,887K: Unknown
289,652K: EGL mtrack
281,160K: GL mtrack
264,478K: .apk mmap
122,646K: Dalvik Other
73,943K: Other mmap
57,874K: .jar mmap
43,450K: .oat mmap
10,436K: .ttf mmap
3,364K: Stack //堆栈(Stack
2,088K: Other dev //其他开发(Other dev
1,467K: Ashmem
0K: Cursor //游标(Cursor
0K: Gfx dev
0K: Other mtrack

Total RAM: 7,788,984K (status normal) //RAM: 7,788,984K (状态正常)
Free RAM: 1,844,924K ( 0K cached pss + 1,591,928K cached kernel + 252,996K free) //空闲 RAM
Used RAM: 6,932,701K (6,242,489K used pss + 690,212K kernel) //已用 RAM
Lost RAM: 511,031K //丢失的 RAM:
ZRAM: 614,064K physical used for 2,145,976K in swap (4,194,300K total swap) //614,064K 物理用于 2,145,976K 在交换中 (总交换 4,194,300K)
Tuning: 384 (large 512), oom 322,560K, restore limit 107,520K (high-end-gfx) //384 (512)oom 322,560K,恢复限制 107,520K (高端图形)

内存top10【3秒刷新一次】

1
2
adb shell
top -m 10 -d 3

示例:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Tasks: 719 total,   3 running, 715 sleeping,   0 stopped,   1 zombie
Mem: 7.4G total, 7.1G used, 324M free, 8.9M buffers
Swap: 4.0G total, 2.2G used, 1.7G free, 2.4G cached
800%cpu 9%user 1%nice 10%sys 775%idle 0%iow 3%irq 2%sirq 0%host
PID USER PR NI VIRT RES SHR S[%CPU] %MEM TIME+ ARGS
1917 system 20 0 12G 340M 199M S 4.3 4.4 274:09.49 system_server
11285 shell 20 0 30M 5.0M 3.4M R 2.3 0.0 0:00.35 top -m 10 -d 3
9677 u0_a548 20 0 42G 261M 208M S 2.3 3.4 4:26.66 com.mihoyo.hyperion
10282 u0_a708 10 -10 40G 417M 194M S 1.6 5.4 0:09.26 com.xm597.app
5944 u0_a216 20 0 6.6G 296M 204M S 1.3 3.8 1:25.20 com.alibaba.android.+
5726 u0_a216 20 0 57G 531M 383M S 1.3 6.9 2:20.80 com.alibaba.android.+
21543 root RT 0 172M 7.2M 5.9M R 1.3 0.0 0:12.88 aptouch_daemon
9561 root 20 0 0 0 0 I 0.6 0.0 0:04.41 [kworker/u16:3]
9106 root 20 0 0 0 0 I 0.6 0.0 0:07.22 [kworker/u16:4]
20790 u0_a89 1 -19 7.5G 165M 152M S 0.6 2.1 1:07.34 com.huawei.hwid.core

[!参数解释]

任务相关的参数

  1. Tasks(任务):
    • Total: 表示系统中总共有多少个任务(进程)。在此例中是 719 个。
    • Running: 当前正在运行的任务数量。在此例中是 3 个。
    • Sleeping: 当前处于“休眠”状态的任务数量,即正在等待某些事件(如 I/O 操作)的进程。此例中是 715 个。
    • Stopped: 当前被停止的任务数量。此例为 0。
    • Zombie: 僵尸进程的数量。这是已经完成,但尚未被其父进程收集的进程。在此例中是 1 个。

内存使用情况参数

  1. Mem(内存):

    • Total: 总内存大小,单位为 GB(千兆字节)。在此例中是 7.4G。
    • Used: 已使用的内存量。此例中是 7.1G,这表示系统内存几乎耗尽。
    • Free: 当前空闲的内存,表示可以使用的内存量。此例中是 324M(兆字节)。
    • Buffers: 内核用于临时保存文件的缓冲区的内存量,帮助提高 I/O 性能。在此例中是 8.9M。
  2. Swap(交换空间):

    • Total: 总交换空间的大小。此例中是 4.0G。
    • Used: 已使用的交换空间。此例中是 2.2G,表明还有一部分交换空间可用。
    • Free: 当前可用的交换空间。此例中是 1.7G。
    • Cached: 被缓存以加速访问的数据量。此例中为 2.4G。

CPU 使用情况参数

  1. CPU:
    • CPU%: 显示系统总的 CPU 使用情况。800%代表可以用的最大 CPU 时间(如在 8 核心的系统中,每个核心最多 100%)。
    • %user: 在用户空间中运行的进程所占用的 CPU 百分比。在此例中为 9%。
    • %nice: 以“好”优先级(nice priority)运行的进程占用的 CPU 百分比。在此例中为 1%。
    • %sys: 内核和系统进程占用的 CPU 百分比。在此例中为 10%。
    • %idle: CPU 处于空闲状态的百分比。在此例中高达 775%,这表明系统有大量空闲 CPU。
    • %iowait: 进程等待 I/O 操作所占用的 CPU 百分比。此例为 0%,表示没有进程因 I/O 等待而占用 CPU。
    • %irq: 硬中断占用 CPU 的百分比。在此例中为 3%。
    • %sirq: 软件中断占用 CPU 的百分比。在此例中为 2%。
    • %host: 此值为 0,表示没有被标记为主机进程占用。

进程相关的参数(进程列表)

每个进程的表格包含以下参数:

  1. PID: 进程标识符。每个进程都有一个唯一的 PID。

  2. USER: 启动该进程的用户。

  3. PR: 进程的优先级(Priority)。数值越低优先级越高。

  4. NI: niceness值,影响用户进程的优先级(正值降低优先级,负值提升优先级)。

  5. VIRT: 进程所使用的虚拟内存量,包括内存使用量、交换空间、共享库等。

  6. RES: 进程占用的实际物理内存(RAM)的量。

  7. SHR: 进程共享的内存(如共享库)量。

  8. S: 进程状态:

    • R: 正在运行。
    • S: 休眠中。
    • I: 空闲。
    • 其他状态也会被标记。
  9. %CPU: 该进程所占用的 CPU 百分比。

  10. %MEM: 该进程所占用的内存百分比。

  11. TIME+: 进程所使用的 CPU 总时间。

  12. ARGS: 执行该进程的命令或名称。

查看某个进程的使用情况

1
2
adb shell
top -d 0.5 | grep 13588

-m num Maximum number of processes to display. // 最多显示多少个进程
-n num Updates to show before exiting. // 刷新次数
-d num Seconds to wait between updates. // 刷新间隔时间(默认5秒)
-s col Column to sort by (cpu,vss,rss,thr). // 按哪列排序
-t Show threads instead of processes. // 显示线程信息而不是进程
-h Display this help screen. // 显示帮助文档

Activity 调试

启动应用(adb启动Activity)

adb shell am start -n 包名/类名

adb shell am start -n your.package.name/your.package.name-activity

1
2
3
如:启动浏览器
am start -n
com.android.browser/com.android.browser.BrowserActivity
1
2
3
4
如:找到并启动正在运行的某个activity
adb shell dumpsys activity|findstr Run

adb shell am start -n com.tencent.mobileqq/.activity.SplashActivity

启动&耗时

adb shell am start -S -W 包名/类名

-S 表示重启当前应用

展示内容解析:

  • ThisTime:最后一个Activity的启动耗时(例如从LaunchActivity->MainActivity【adb命令输入的Activity】,只统计MainActivity的启动耗时)

  • TotalTime:启动一连串的Activity的总耗时(有几个Activity就统计几个)

  • WaitTime:应用进程的创建过程+TotalTime

强行停止应用

adb shell am force-stop package

1
2
3
4
5
6
7
8
9
10
11
12
13
例子:
找到某个正在运行的activity
adb shell dumpsys activity|findstr Run

查看正在运行的应用情况
adb shell ps|findstr mobileqq

强行停止这个应用
adb shell am force-stop com.tencent.mobileqq

再次查看这个正在运行的应用情况
adb shell ps|findstr mobileqq
adb shell dumpsys activity|findstr Run

查看当前所有栈列表和栈内activity

1
adb shell dumpsys activity activities

查看当前 Activity 名称(查看当前最上层activity)

adb shell dumpsys activity | findstr “mFocusedActivity”

获取当前运行的Activity

1
2
3
4
5
6
7
8
9
adb shell dumpsys activity | findstr Run


当前运行的Activity
adb shell "dumpsys activity top | grep ACTIVITY | tail -n 1"
当前运行的Fragment
adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
查看Activity任务栈(仅适用android11及以上)
adb shell "dumpsys activity activities | grep '* ActivityRecord{'"

获取当前运行的Activity.bat

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
@echo off &PUSHD %~DP0 &TITLE Settings Tool
color 0a

:menu
cls
echo Notes: Please connect device with adb, it's only adapter for Android 11.
echo === Menu ===
echo [1] view top activity
echo [2] view top fragment
echo [3] view activity stack
echo ============
set /p user_input=Please choose menu:
if %user_input%==1 goto topActivity
if %user_input%==2 goto topFragment
if %user_input%==3 goto activityStack
if not %user_input%=="" goto menu

:topActivity
adb wait-for-device
adb shell "dumpsys activity top | grep ACTIVITY | tail -n 1"
echo. & pause
goto menu

:topFragment
adb wait-for-device
adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
echo. & pause
goto menu

:activityStack
adb wait-for-device
adb shell "dumpsys activity activities | grep '* ActivityRecord{'"
echo. & pause
goto menu

在 mac 中 findstr 要换成 grep

1
adb shell dumpsys activity | grep Run

获取当前指定包名的Activity栈

1
adb shell "dumpsys activity|grep" 包名

‘grep’不是内部或外部命令,也不是可运行的程序 或批处理文件。所以加双引号

获取apk 版本号,权限等信息的方法

1
adb shell dumpsys package com.xxx.xxx(包名)

在低电耗模式下测试您的应用

您可以按以下步骤在低电耗模式下测试您的应用:

  1. 使用 Android 6.0(API 级别 23)或更高版本的系统映像配置硬件设备或虚拟设备。

  2. 将设备连接到开发计算机并安装您的应用。

  3. 运行您的应用并使其保持活动状态。

  4. 运行以下命令,强制系统进入闲置模式:

    1
    adb shell dumpsys deviceidle force-idle
  5. 准备就绪后,运行以下命令,使系统退出闲置模式:

    1
    adb shell dumpsys deviceidle unforce
  6. 执行以下命令,重新激活设备:

    1
    adb shell dumpsys battery reset   
  7. 在重新激活设备后观察应用的行为。确保应用在设备退出低电耗模式时正常恢复。

在应用待机模式下测试您的应用

如需在应用待机模式下测试您的应用,请执行以下操作:

  1. 使用 Android 6.0(API 级别 23)或更高版本的系统映像配置硬件设备或虚拟设备。

  2. 将设备连接到开发计算机并安装您的应用。

  3. 运行您的应用并使其保持活动状态。

  4. 运行以下命令,强制应用进入应用待机模式:

    1
    2
    adb shell dumpsys battery unplug
    adb shell am set-inactive <packageName> true
  5. 使用以下命令模拟唤醒您的应用:

    1
    2
    adb shell am set-inactive <packageName> false
    adb shell am get-inactive <packageName>
  6. 在唤醒应用后观察它的行为。确保应用从待机模式正常恢复。您应特别检查应用的通知和后台作业是否继续按预期运行。

adb启动service

adb shell am startservice -n 包名/类名

adb shell am startservice -n {包(package)名}/{包名}.{服务(service)名称}

如:启动自己应用中一个service

adb shell am startservice -n com.android.traffic/com.android.traffic.maniservice

adb shell am startservice -n com.programandroid/.Service.BindServiceMethod

adb发送broadcast

adb shell am broadcast -a <广播动作>

adb shell am broadcast -a 广播Action

1
2
3
4
5
如:发送一个网络变化的广播
adb shell am broadcast -a android.net.conn.CONNECTIVITY_CHANGE

如:发送一个启动成功的广播
adb shell am broadcast -a "android.intent.action.BOOT_COMPLETED"

发送 intent

1
adb shell am start -a android.intent.action.VIEW

设备应用管理

安装apk

  • 安装
    adb install xxx.apk
  • 覆盖安装(保留缓存和数据)
    adb install -r xxx.apk
1
adb -s 真机序列号 install **.apk
1
2
//
adb -s 127.0.0.1:6555 install -r **.apk

其中 -s SD卡;-r 覆盖安装

如果只有一台真机,那么直接adb -s install **.apk

卸载apk

  • 卸载
    adb uninstall package
  • 卸载时保留数据和缓存目录
    adb uninstall -k package
1
adb shell pm uninstall 包名

查看设备应用

  • 查看设备所有应用包名(查看手机中所有apk 包名)
    adb shell pm list packages
  • 列出指定包名对应的apk路径
    adb shell pm path your.package.name
  • 清空指定包名对应的应用的数据和缓存文件(清除app 数据)
    adb shell pm clear your.package.name
  • 查看已知权限组

    adb shell pm list permission-groups

  • 查看手机Feature 支持

1
adb shell pm list features
  • 根据包名,查看apk 安装路径
1
adb shell pm path 包名

多用户相关

  • 查看支持最多用户数

    adb shell pm get-max-users

  • 查询系统所有用户

    adb shell pm list users

  • 创建新用户

    adb shell pm create-user user_name

  • 移除指定id用户

    adb shell pm remove-user user_id

文件管理

查看文件

1
2
adb -s 真机序列号 shell
cd到文件目录下,ls

将电脑文件复制到设备sd卡上

1
adb push 电脑文件路径 /sdcard

如:

1
adb push D:\Desktop\安装包\保意\20200302正式线替换图标\laiDianYi-release.apk sdcard

设备文件复制到电脑上

1
adb pull /sdcard/text.txt 电脑文件路径

删除

adb shell rm /sdcard/text.txt
-f 强制删除文件不需要确认
-r 递归删除文件夹内文件
-i 删除文件前需要确认

1
2
//例子(%1替换为具体imei)
adb -s %1 shell rm -rf /sdcard/jcap.png

创建目录

adb shell mkdir -p /sdcard/temp/test/
指定 -p 递归创建目录

创建文件

adb shell touch /sdcard/text.txt

复制文件

adb shell cp /sdcard/text.txt /sdcard/test/

移动文件

adb shell mv /sdcard/1.txt /sdcard/2.text
移动同一目录下文件相当于重命名文件

常用 ADB 命令

adb连接模拟器

1
2
3
4
adb connect 127.0.0.1:5037
adb connect 127.0.0.1:5554
adb connect 127.0.0.1:5555
adb connect 127.0.0.1:5556

导出bug日志(anr也可以查看)

1
2
3
4
//1. 生成bug日志
adb bugreport
//2. cd到d盘下。拉取上一步生成的bugreport
adb pull /data/user_de/0/com.android.shell
  1. 找到d:/com.android.shell/files/bugreports,解压zip文件,其中anr日志在zip内的FS/data/anr内

我在windows桌面新建个bat,内容是adb bugreport,居然直接在桌面生成了个zip文件(前提是usb连接好手机)

记录无线通讯日志

一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:

1
2
adb shell
logcat -b radio

查看安卓包名

法一:adb shell am monitor

然后启动需要获取包名的应用

法二:adb shell pm list packages -3

查看自己安装的 app 包名

法三:安卓系统中:设置–应用–正在运行 查看

法四:安卓系统:文件管理器访问目录/data/data 下,文件夹即为包名

法五:将 apk 反编译,查看 AndroidManifest.xml 中的 package

列出所有包名

1
adb shell pm list packages

另外可以加上 grep 查询词

1
adb shell pm list packages | grep 'miui'

查看手机上所有包名

1
2
adb shell
cd data/data ; ls

Linux多个命令一起执行可以用“;” 或者 “&&”进行分割

ADB 命令截屏

截屏 screencap

1
adb shell screencap 文件保存路径

ADB 命令录像

录像 screenrecord

1
adb shell screenrecord 文件保存路径

Control + C 停止屏幕录制,否则,到三分钟或 --time-limit 设置的时间限制时,录制将自动停止。

screenrecord 部分参数

选项 说明
–size width x height 设置分辨率 eg:1280x720
–bit-rate rate 视频比特率,默认值为 4Mbps,可以设6Mbps,这样质量更好 eg:adb shell screenrecord --bit-rate 6000000 /sdcard/demo.mp4
–time-limit time 设置最大录制时长(以秒为单位)。默认值和最大值均为 180(3 分钟)。

申请Root权限

1
adb shell su

非root设备通过adb命令授权应用为超级管理员

如应用“冰箱”

1
adb shell dpm set-device-owner com.catchingnow.icebox/.receiver.DPMReceiver

adb shell查看完毕退出

exit 或者 Ctrl + D

查看所有程序包名

1
adb shell pm list packages

加上grep查询词

1
adb shell pm list packages | grep 'miui'

查看当前图层的合成方式

1
adb shell dumpsys SurfaceFlinger

DEVICE:HWC合成(最多合成4个图层,多的就会标记为GPC合成。如弹多个弹窗就会多层,耗能)

CLIENT:GPU合成

关闭、开启系统升级

1
2
3
4
5
adb shell pm disable-user com.huawei.android.hwouc

adb shell pm clear com.huawei.android.hwouc(清理自动下载的更新缓存)

adb shell pm enable com.huawei.android.hwouc(启用)

关闭、开启快应用

1
2
3
adb shell pm disable-user com.huawei.fastapp

adb shell pm enable com.huawei.fastapp

使用logcat抓 log信息

在cmd窗口输出logcat信息

1
adb logcat

把logcat输出到文件中

1
adb logcat > D:\1.txt

例子:

1
2
3
4
5
#adb  logcat -d -b system -v time >本地文件.txt

adb logcat -d -b system -v time >C:\Users\Administrator\Desktop\temp\悦以国际\logcat.txt
adb logcat -d -b system -v time >C:\Users\Administrator\Desktop\temp\星球秀场\logcat.txt
adb logcat -d -b system -v time >C:\Users\Administrator\Desktop\temp\SBC2.0\logcat.txt

使用 -s 过滤log标签

1
adb logcat -s 关注log标签

e.g

1
adb logcat -s AndroidRuntime

使用 -c 清除缓存log

1
adb logcat -c

电量管理相关命令

模拟拔下设备电源

1
adb shell dumpsys battery unplug

低电量条件下的行为

1
adb shell settings put global low_power 1

恢复电源修改

1
adb shell dumpsys battery reset

ADB相关问题

adb 识别不出的问题

问题:

1
2
adb devices
adb server is out of date

方法一:

  1. 关闭eclipse

  2. cmd-->adb nodaemon server找出adb端口(软件默认5037)

    cmd-->netstat -ano|findstr 5037列出所有端口为5037的记录。找到本地的记录的pid

  3. 任务管理器中:结束掉该pid的进程,关闭adb.exe

  4. 重启eclipse

or 命令行关闭占用端口的进程

  1. 找出adb端口(软件默认5037)
    adb nodaemon server

  2. 列出所有端口为5037的记录。找到本地的记录的pid
    netstat -ano|findstr 5037

  3. 结束进程
    taskkill -f -im pid

方法二:

  1. 停止ADB服务

    ./adb kill-server

  2. 开启ADB 服务

    ./adb start-server

方法三:

  1. 插拔USB重试

  2. 手机关机重启

  3. 插上USB后,重新装一下驱动,ADB驱动

  4. 关掉电脑上360手机助手,安全卫士之类的

  5. windows进程下关掉adb.exe; 关掉eclipse重试

  6. 输入命令:

    1
    2
    3
    4
    5
    adb kill-service

    adb start-server

    adb root adb devices
  7. 找到.android文件夹,在该文件夹下添加一个adb_usb.ini文件(若已存在,则直接打开修改),里面内容为0xVID号

    VID号获取方法:

    计算机管理 -〉设备管理 -〉android phone -> Android Composite ADB Interface ->右键属性-〉详细信息 -〉找到VID_后面的四位数字即可

设备android 5以下不能识别到的问题

  • 查看开发者是否开启USB调试
  • 查看是否选择了传输方式(不会主动弹出,需要去设置里找)

adb devices设备名称相同的问题

解决:

  1. 只留下一个设备

  2. adb shell

  3. echo 123321234 >/sys/class/android_usb/android0/iSerial

  4. exit 推出shell模式

  5. adb kill-server

  6. adb start-server

  7. adb devices

adb server is out of date

解决:

  1. 关闭eclipse
  2. cmd–>adb nodaemon server照出adb端口(软件默认5037)
  3. cmd–>netstat -ano|findstr 5037列出所有端口为5037的记录。找到本地的记录的pid
  4. 任务管理器中:结束掉该pid的进程,关闭adb.exe
  5. 重启eclipse

vivo手机连不上

  1. 确认开启开发者模式,开启其中的USB调试

  2. 如果没有看到有“MTP、传输照片、管理文件”的选项,windows得更新驱动

    windows版本MTP驱动下载地址:http://zs.vivo.com.cn/download.php?sel_type=2

Android Studio运行后选用了AS自带的签名文件

检查AS的Build Variants对应渠道的Active Build Variant(如果两个不同版本打开同一份代码会导致这个变量变掉)

改成对应渠道就是正常的签名文件了(与AS右侧Gradle--ZCZG4.0--daogou--Tasks--build--assembeZcZg打出来的包是一样的)

AS点选项打包和直接运行的签名区别.png

grep不是内部或外部命令,也不是可运行的程序 或批处理文件。

所以给命令加双引号

如:

1
2
//获取指定包名当前的activity栈
adb shell "dumpsys activity|grep" 包名

安装APK时报错:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]

安装APK时报错:Failure [INSTALL_FAILED_TEST_ONLY: installPackageLI]
可以使用adb install -t 解决
对于已经在手机的文件可以使用pm install -t解决。

其他adb命令

adb install 一共有lrtsdg六个选项

-l 锁定该应用程序
-r 替换已存在的应用程序,也就是说强制安装
-t 允许测试包
-s 把应用程序安装到sd卡上
-d 允许进行将见状,也就是安装的比手机上带的版本低
-g 为应用程序授予所有运行时的权限

命令行启动另一个程序失败

程序中启动另一个程序:

1
2
Runtime run = Runtime.getRuntime();
run.exec("am instrument --user 0 -w com.newland.cloudtest/com.newland.cloudtest.webapp.InstrumentationTestRunners");

cmd启动另一个程序:

1
2
Runtime run = Runtime.getRuntime();
run.exec("am instrument -e class com.newland.cloudtest.webapp.TestDemo1Apk#testcase001 -w com.newland.cloudtest/com.newland.cloudtest.webapp.InstrumentationTestRunners");

CloudTest用命令行启动CloudTestWeb,启动失败

原因:类包中gson包不能export出去,一export出去那么就不能启动另一个程序CloudTestWeb

CloudTest的类包导出情况截图如下:

程序中用命令行启动另一个程序失败.png