adbpackage及activity

Posted --D

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了adbpackage及activity相关的知识,希望对你有一定的参考价值。

1.   adb

adb连接手机参考:https://www.cnblogs.com/mind18/p/12592252.html,中的三.5

 

1.1.  adb介绍

  ADB全名Andorid Debug Bridge。 是一个Debug工具。adb是一个标准的C/S结构的工具,其允许电脑与模拟器实例或连接的 android 设备进行通信。它可为各种设备操作提供便利,如安装和调试应用。

  包含如下几个部分:

  1.Client端,运行在开发机器中,即你的开发PC机。用来发送adb命令。

  2.Daemon守护进程, 运行在调试设备中, 即调试手机或模拟器。

  3.Server端, 作为一个后台进程运行在开发机器中, 即你的开发PC机. 用来管理PC中的Client端和手机的Daemon之间的通信。

  三者之间的通信:Client<—>Server<—>Daemon

 

1.2.  工作原理

  启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。当服务器启动时,它与本地 TCP 端口 5037 绑定,并侦听从 adb 客户端发送的命令—所有 adb 客户端均使用端口 5037 与 adb 服务器通信。

  目前很多PC客户端手机助手也是基于adb连接原理进行封装的。

1.3.  常用命令

1.查看adb版本号:adb version

2.连接夜神模拟器:adb connect 127.0.0.1:62001(夜神模拟器的端口是规律的,第一个模拟器端口是62001,第二个模拟器端口是62025,第三个是62025+1,依此类推。)

a)模拟器1:Android 4.4.2 地址:127.0.0.1:62001

b)模拟器2: Andriod 5.1.1 地址:127.0.0.1:62025

3.设备:

  获取设备号(查看连接设备是否成功):adb devices

  获取设备的状态:adb get-state(device:设备正常连接,offline:连接出现异常,设备无响应;unknown:没有连接设备)

  返回设备序列号SN值:adb get-serialno

  获取设备的ID:adb get-product

  获取设备分辨率:adb shell wm size

4.获取系统版本:adb -s 设备号 shell getprop ro.build.version.release

5.adb shell(手机shell命令行):进入adb shell后有两种状态显示:#代表有root权限,$代表没有root权限

 

  获取 root 权限:adb root

 

  adb remount:可以直接获取 root 权限,并挂载系统文件系统为可读写状态。

 

6.安装app到手机:

  adb install 路径/xx.apk(默认安装)

      adb install -r 路径/xx.apk(覆盖安装)

  adb –s 127.0.0.1:62001 install 路径/xx.apk(指定设备安装)

  如遇到报错:Failure [INSTALL_FAILED_INVALID_URI],解决方案: cmd命令行下执行以下命令:第一步、adb remount;第二步、adb shell;第三步、cd /data;第四步、chmod 777 local;重新安装apkok了。

7.卸载手机app

  首先进入设备的/data/app目录找到app包名:

adb shell

cd /data/app/

  执行命令删除:

adb uninstall com.wandoujia.phoenix2(安装后的包名系统会在末尾加上-1之类的数字,要去掉才可以成功卸载。软件名称为包名,不要包含.apk

adb uninstall | -k <apkName>(加-k参数,为卸载软件但是保留配置和缓存文件)

8.查看设备上面安装的应用包名:adb shell pm list package

  列出指定应用的 dump 信息:adb shell pm dump 包名

  列出对应包名的 .apk 位置:adb shell pm path 包名

9.获取app启动包名和启动名(手机需要先打开对应app)

Mac/Linux: \'adb shell dumpsys window windows | grep mFocusedApp’

Windows 终端运行 \'adb shell dumpsys window windows | findstr mFocusedApp

10.获取app启动时间:adb shell am start -W 包名/启动名

示例:adb shell am start -W com.yly.drawpic/.MainActivity

解释:TotalTimeapp自身启动时间;WaitTime:系统启动应用时间

11.文件读取写入:

  发送文件到手机:adb push 电脑端文件路径 手机端存储的路径

 示例:adb push C:\\Users\\win\\Desktop\\xx.png /sdcard

  从手机拉取文件到pcadb pull 手机端文件的路径 电脑端存储文件路径

 示例:adb pull /sdcard/xx.png C:\\Users\\win\\Desktop

  注意:由于权限问题,不能直接pull到电脑磁盘根目录,否则会报错:

 C:\\Users\\Shuqing>adb pull /sdcard/server.log  D:\\\\

 adb: error: cannot create file/directory \'D:\\\\\': No such file or directory

12.屏幕截图:

$ adb shell screencap /sdcard/screen.png

adb pull /sdcard/screen.png  C:\\Users\\Shuqing\\Desktop

录制视频并保存至sdcard:adb shell screenrecord sdcard/record.mp4,执行命令后操作手机,ctrl + c   结束录制,录制结果保存至 sdcard。

13.查看手机运行日志:adb logcat

  清除日志:adb logcat –c

  生成bugreport文件:adb bugreport

  打印dumpsys、dumpstate、logcat的输出,也是用于分析错误,输出比较多,建议重定向到一个文件中,如adb bugreport > d:\\bugreport.log

14.查看当前终端中的进程信息:adb shell ps

15.重启:

  重启 Android 设备:adb reboot

  重启到Recovery界面:adb reboot recovery

  重启到bootloader界面:adb reboot bootloader

16.adb服务启动和关闭:

adb kill-server(关闭adb服务)

adb start-server(开启adb服务)

如果5037端口被占用可以使用如下命令释放端口

  C:\\Users\\Shuqing> netstat -ano | findstr "5037"

TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       11072

TCP    127.0.0.1:5037         127.0.0.1:59519        TIME_WAIT       0

   taskkill -f -pid XXX

17.adb帮助:adb –help

 

2.   package和activity

2.1.  package

  • app中这个Package是唯一的,在做app自动化时,我们就需要知道Package。注意:和.apk文件包名不同。
  • Package获取:

  A.通过UIAuto可获取不同app的包名。

  B.查看设备上面安装的应用包名:adb shell pm list package

  C.获取app启动包名和启动名(手机需要先打开对应app):

   Mac/Linux: \'adb shell dumpsys window windows | grep mFocusedApp’

   Windows 终端: \'adb shell dumpsys window windows | findstr mFocusedApp’

 

2.2.  activity

1、介绍:

  Android中,activity是所有程序的根本,所有程序的流程都运行在activity之中,activity可以算是开发者遇到的最频繁,也是android当中最基本的模块之一。

  在android的程序中,activity一般代表手机屏幕的一屏。如果把手机比作一个浏览器,那么activity就相当于一个网页。在activity当中可以添加一些Button、Checkbox等控件,可以看到activity概念和网页的概念相当类似。

  一般一个android应用是由多个activity组成的,多个activity之间可以进行相互跳转。例如,按下一个Button按钮后,可能会跳转到其他的activity,与网页跳转稍微有点不一样的是,activity之间的跳转有可能返回值。

2、activity的生命周期:

  “产生、运行、销毁”,但是这其中会调用许多方法onCreate(创建) 、onStart(激活) 、onResume(恢复) 、onPause(暂停) 、onStop(停止) 、onDestroy(销毁) 、onRestart(重启)。

3、Activity获取:

  研发提供

  Aapt(t即Android Asset Packaging Tool,在SDK的build-tools目录下。该工具可以查看,创建, 更新ZIP格式的文档附件(zip, jar, apk)。也可将资源文件编译成二进制文件),获取命令如下:

  aapt dump badging xxxx.apk

  aapt dump badging xxxx.apk | find "launchable-activity"

 

 

以上是关于adbpackage及activity的主要内容,如果未能解决你的问题,请参考以下文章

【UiPath 常见问题及解决办法】 介绍及目录

编程语言的发展趋势及未来方向

文件系统基础及ext文件系统创建及管理详解文件系统的使用及卸载fstab文件格式及自动挂载系统的

c#面试问题及答案

Docker运行MongoDB及Redis及ssh端口映射远程连接

关于面试题目及答案