安卓系统与ADB详解

一、android系统

1. android系统的结构

  1. Linux内核层
    Android系统基于Linux2.6内核,这一层为Android设备各种硬件提供了底层驱动,如显示驱动,音频驱动,照相机驱动,蓝牙驱动,WIFI驱动,电源管理等

  2. 系统运行库层
    程序库:
    Android包含一些C/C++库,这些库能被Android系统中不同的组件使用。他们通过Android应用程序框架为开发者提供服务

    Android运行库:
    Android包括了一个核心库,该核心库提供了Java编程语言核心库的大多数功能。

  3. 应用框架层

    这一层主要提供构建应用程序是可能用到的各种API,Android自带的一些核心应用就是使用这些API完成的,开发者也可以通过使用API来构建自己的应用程序
    活动管理者(Activity Manager):控制应用程序生命周期和活动栈的所有方面
    内容提供器(Content Providers):允许程序之间发布和分享数据。
    资源管理器(Resource Manager):提供对非代码嵌入资源的访问,如字符串、颜色设置和用户界面布局。
    通知管理器(Notification Manager):允许应用程序显示对话框或者通知给用户
    视图系统(View System):一个可拓展的视图集合,用于创建应用程序用户界面

  4. 应用程序
    顶层中有所有的Android应用程序,包括通讯录、浏览器等,你写的应用程序也被安装在这层;所有的的应用程序都是使用Java语言编写的。

2. Android应用的构成

  1. Android四大组件(活动,服务,内容提供者,广播接收器)
    1. 活动(Activity)
      Activity从字面上的意思理解是活动行动的意思
      在Android中,activity指与用户交互的界面,从你打开一个android应用所见到的第一个页面,就是一个Activity。
      Activity作为一个可见的界面,给用户以良好的体验很重要,所以布局的漂亮与否决定一个应用用户体验
      activity的生命周期:即“产生、运行、销毁”,但是这其中会调用许多方法
      onCreate(创建)
      onStart(激活)
      onResume(恢复)
      onPause(暂停)
      onStop(停止)
      onDestroy(销毁)
      onRestart(重启)
    2. 服务(Service)
      Android下的服务是在后台运行,也是没有界面,一旦启动就会在后台运行,直到手机关机为止。
      比如:用户可以使用QQ音乐在后台进行音乐播放,虽然退出了操作界面但是还在正常运行。
      Service承担着大部分的数据处理工作。
    3. 内容提供者( ContentProvider )
      Android 平台提供了Content Provider 使一个程序的指定数据集提供给其他应用程序。
      可以理解为是一个特殊的“数据库”,主要是用来存取数据。
    4. 广播接收器( BroadcastReceiver )
      主要用于接收系统或者app发送的广播事件
      广播:发送消息和接收消息

3. Android应用测试的常用术语

  1. 系统碎片化:通俗的讲亦是指整个安卓平台的差异化越来越大。
  2. 屏幕尺寸:屏幕对角线的长度。(英寸)
  3. 分辨率:分辨率(屏幕分辨率)是屏幕图像的精密度,是指显示器所能显示的像素有多少。
    由于屏幕上的点、线和面都是由像素组成的,显示器可显示的像素越多,画面就越精细,同样的屏幕区域内能显示的信息也越多,所以分辨率是个非常重要的性能指标之一。
  4. 像素:像素是指由图像的小方格组成的,这些小方块都有一个明确的位置和被分配的色彩数值,小方格颜色和位置就决定该图像所呈现出来的样子。
    可以将像素视为整个图像中不可分割的单位或者是元素
  5. 网络制式:手机网络制式主要包括GSM、CDMA、3G、4G四种。

4. Android环境搭建介绍

  1. 真机测试环境
  2. 第三方模拟器测试
  3. Android自带的模拟器测试(需要搭建Android开发环境)

5. 真机环境的搭建

真机环境的搭建(将真机连接在pc上,通过pc上操作来控制手机设备的app)

  • Android手机用usb数据线连接到pc的usb口上
  • 打开手机的开发者模式(默认没打开):设置->关于手机->版本号10.0.0.162,连续点五次以上,会提示已经打开开发者模式
  • 在设置的最上端,搜索“开发人员选项”,点进去
  • 勾选其中的USB调试,弹出的提示框,要点确定确认
  • 勾选仅充电模式下允许ADB调试
  • 在屏幕的通知栏(屏幕从上往下划),其中usb连接的通知,点进去,都选传输文件mtp
  • 在cmd->adb devices,如果能够列出设备的序列号就说明环境搭建成功

6. 第三方模拟器

  • 夜神
  • iTools

7. Android开发环境

  1. jdk环境搭建
  2. adt环境搭建
    配置Android环境。使得其可以使用adb命令。
    配置变量“ANDROID_SDK_HOME”
    用户名:ANDROID_SDK_HOME
    变量值:D:\alsp\java_android\adt-bundle-windows-x86_64_20140101\sdk
    修改Path。
    在path的变量值的最后加上:
    .;%ANDROID_SDK_HOME%\platform-tools;%ANDROID_SDK_HOME%\tools;
    打开cmd,输入adb进行验证

二、ADB

1. ADB简介

adb的全称为Android Debug Bridge,就是起到调试桥的作用。借助adb工具,我们可以手机管理设备或模拟器的状态。还可以进行很多手机操作,如安装软件、系统升级、运行shell命令等等。其实简而言说,adb就是连接Android手机与PC端的桥梁,可以让用户在电脑上对手机进行全面的操作。

APK:APK是Android Package的缩写,即Android安装包,APK是类似Symbian Sis或Sisx的文件格式。通过将APK文件直接传到Android模拟器或Android手机中执行即可安装。把android sdk编译的工程打包成一个安装程序文件,格式为apk。

它就是一个命令行窗口,用于通过电脑端与模拟器或者真实设备交互。包括三大内容:
电脑上运行的客户端。
在你用于开发的机器上作为后台进程运行的服务器。
一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。

ADB命令的主要功能
1.运行Android设备的shell(命令行)
2.管理模拟器或Android设备的端口映射
3.安装/卸载APK程序
4.计算机和Android设备之间上传/下载文件

2. ADB指令的用法

  1. 关闭和启动adb服务 —ok

    adb kill-server    关闭ADB服务
    adb start-server     启动ADB服务
    
  2. 查看设备连接情况

    adb devices
    

    查看当前连接的设备, 连接到计算机的android设备或者模拟器将会列表显示
    输出信息格式为:

    [serialNumber] [state]
    

    例如:
    在这里插入图片描述

  3. 安装和卸载APK

    adb install <apk文件路径> ---将指定的apk文件安装到设备上 
    adb uninstall <软件名> ---卸载设备上的指定程序 这个软件名是手机上的程序包,如com.tencent.mm
    adb uninstall -k <软件名> --卸载程序但是保留其配置和缓存文件
    com.tencent.mobileqq --qq的包名
    
  4. 指定设备进行操作
    当有多个设备连接时,可以用下面的命令来直接选择执行命令的设备

    adb [-d|-e|-s <serial Number>] <command>
    d:真机(多个设备中只有一个真机时适用)
    e:模拟器(多个设备中只有一个模拟器时适用)
    s:序列号
    

    例如:
    adb -d install helloWorld.apk
    adb -s emulator-5556 install helloWorld.apk

  5. 列出当前设备上的程序包

    adb shell pm list packages
    

    删除微信APP

    adb uninstall com.tencent.mm
    
  6. 上传和下载文件

    1. adb push <本地路径> <远程路径>
      例如,把pc上的文件或文件夹上传到设备
      adb push foo.txt    /sdcard/foo.txt
      
    2. adb pull <远程路径> <本地路径>
      例如,把设备上的文件或文件夹下载到pc
      adb pull system/app  D:\apps`
      
      演示步骤:
      1.打开cmd,输入adb shell,然后进入cd data/app
      2.可以看到后缀为.apk的文件
      3.新打开一个cmd,输入adb pull /data/app/com.tencent.mobileqq-1.apk E:
      4.在e盘上可以看到后缀为.apk的文件
  7. 日志Logcat的操作

    adb logcat      在命令行中显示调试信息
    adb logcat  > 文件名   将logcat信息保存在文件中
    

    控制日志格式
    日志消息在标记和优先级之外还有很多元数据字段,这些字段可以通过修改输出格式来控制输出结果, -v选项加上下面列出的内容可以控制输出字段

    brief — 显示优先级/标记和原始进程的PID (默认格式)
    process — 仅显示进程PID
    tag — 仅显示优先级/标记
    thread — 仅显示进程:线程和优先级/标记
    raw — 显示原始的日志信息,没有其他的元数据字段
    time — 显示日期,调用时间,优先级/标记,PID
    long —显示所有的元数据字段并且用空行分隔消息内容
    

    比如:

    adb logcat -v thread
    

    日志等级
    每一条日志记录都有一个等级的

    V:所有的信息都打印 
    D:debug调试信息 
    I: Information,信息 
    W:warning,警告,编译器认为你可能有问题;实际上可能没问题 
    E:error,错误 
    F: fatal,致命的 
    S:静默的,啥也不打印到日志
    
    通过分析,v、s没啥用,D、I、W对我们测试人员来说用处也不大,需要过滤掉 adb logcat -v time *:W > e:\log1.txt
    
  8. 其他命令

    android                   启动SDK管理器
    adb bugreport     		  查看bug报告
    adb get-serialno 		  获取设备的序列号
    adb root                  获得Root权限
    adb  remount    		  将system分区从只读变成可读可写(需要ROOT权限)
    android list targets      显示系统内所有的android平台
    android list avd          显示系统中所有模拟器
    ddms         			  启动ddms
    adb reboot   		      重启
    dmesg     				  打印出内核的调试信息
    adb shell 				  挂载到Linux的空间 root:
    
    将adb指令挂载到Android的底层Linux下
    
    adb shell top: 获取linux下运行系统进程
    
    我们会关注其中最后一列:包名 adb shell top -n 1 -d 1 -n 1:表示获取后台进程的次数 -d 1:获取多次的时候,每次之间的时间间隔1秒
    
    adb push <local> <remote>:将本地的文件推送到远程设备上(模拟器或者是真机设备)
    adb pull <remote> <local>:将远程设备上文件拉取到本地(pc)
    adb shell dumpsys window | findstr mCurrentFocus :获取当前焦点的包名及activity名
    

猜你喜欢

转载自blog.csdn.net/yang_yang_heng/article/details/109123981