zoukankan      html  css  js  c++  java
  • adb命令

    1.adb shell命令

    adb shell cat /system/build.prop 查看设备信息

    cat /system/build.prop | grep "product 查看手机型号,名称等

    cat /proc/cpuinfo 查看手机cpu架构

    cat /data/misc/wifi/*.conf 查看wifi 需要root权限,凡是在data目录下的东西,都需要root权限,因为这存储的是app的数据

    adb shell /system/bin/screencap -p /sdcard/screenshot.png保存截图

    进入指定的device的shell

    1
    adb shell

    或者

    1
    adb -s 47Q6R17104004796 shell

    adb 查看所有安装的包

    1
    pm list packages

     根据某个关键字查找包

    1
    shell@hwliszt:/ $ pm list packages | grep tencent

    查看包安装位置

    1
    pm list packages -f

     同样可以进行筛选

    1
    pm list packages -f | grep tencent

    2.adb命令

    常用命令

    adb pull /data/app/com.tencent.tbs-1/base.apk ~/Downloads/   将apk拉到pc中 

    adb start-server 启动adb服务

    adb kill-server 终止adb服务

    adb shell 进入adb运行环境

    adb version 查看adb版本

    adb reboot [bootloader|recovery] 重启设备,可选参数进入bootloader(刷机模式)或recovery(恢复模式)

    adb shell dumpsys window | findstr mCurrentFocus 命令查看当前运行的包名和Activity更清晰一些。

    adb install test.apk -r 覆盖安装,保留数据和缓存文件 -d 解决低版本version问题 -s 安装apk到sd卡

    adb uninstall -k <package_name> 可选参数-k的作用为卸载软件但是保留配置和缓存文件

    adb shell dumpsys package <package_name> 查看app相关所有信息,包括action,codepath,version,需要的权限等等信息

    adb shell pm path <package_name>查看app的路径

    adb shell dumpsys package <package_name> | grep version 查看apk的版本信息

    如果你得到的是下图的两个version版本,则为系统app,下面是系统app本身的版本,上面是升级之后的系统app的版本信息

    versionCode=8 targetSdk=22 versionName=V0.08 versionCode=6 targetSdk=22 versionName=V0.0

    adb shell am start -n <package_name>/.<activity_class_name>启动activity

    adb shell cat /system/build.prop/ 查看设备名称,豌豆荚等应用就是通过此来获得设备的名称

    adb shell getprop | grep product查看手机型号信息

    adb get-serialno 获取序列号,获取到的序列号即为adb devices列出来的序列号

    adb devices 查看连接的设备

    adb -s 1b71651 shell 进入1b71651设备的命令为

    adb shell cat data/misc/wifi/*.conf 查看wifi密码(需要root权限)

    adb shell cat /sys/class/net/wlan0/address 查看wifi_mac

    文件操作相关:

    1、拷贝文件/目录到设备

    adb push <local>...<remote>
    2、从设备拷贝文件/目录,-a参数保留了文件的时间戳和模式

    adb pull [-a] <remote>...<local>
    3、查看设备log,和studio和eclipse的logcat相同,可通过参数控制输出的日志

    adb logcat -s 过滤指定参数log -v time 保留日志时间 >> 追加写 > 覆盖写
    下面的命令含义为:打印出log信息中的时间并且包含关键字 “Test” 的所有log以覆盖写的方式保存到test文件

    adb logcat -v time -s Test > test.txt
    4、列出目录下的文件和文件夹,可选参数-al可查看文件和文件夹的详细信息

    adb shell ls [-al]
    5、进入文件夹

    adb shell cd <folder>
    6、查看文件

    adb shell cat <filename>
    7、重命名文件

    adb shell rename path/oldfilename path/newfilename
    8、删除文件/文件夹

    adb shell rm path/filename -r 可选参数用于删除文件夹及下面的所有文件 eg:adb shell rm -r <folder>
    9、移动文件

    adb shell mv path/filename newpath/filename
    10、拷贝文件

    adb shell cp file newpath/file1
    11、创建目录

    adb shell mkdir path/folder
    12、设置文件最高读写权限

    adb shell chmod 777 filename
    13、手机未root 查看data/data/某一app文件信息

    笔者的小米3没有root,但是又想方便地查看data/data/目录下的一些文件,直接进入data会提示没有权限,查看的方式为进入data/data/后,运行下面的命令,就能直接进入你应用的包下了,可通用cp或者mv拷贝或移动到sdcard目录进行其他操作

    run-as package_name

    数据库相关

    数据库的操作和今天的主题关系不大,增删改查操作不再列举。但是平时的开发过程中只是查看数据库中某个表或者某个字段,也无需每次都pull出来之后再查看,用命令行会更加方便快捷,进入到test.db的目录后,运行如下命令1、操作db

    sqlite3 test.db
    2、对db使用sqlite3命令后,通过.help查看各种使用指导

    .help
    3、列举数据库的table名称

    .tables
    4、列表数据库的schema,个人觉得下面两个命令很有用,效果等同,可以方便快捷地查看数据库字段对应的数据类型,.schema更加简洁

    .schema
    或者

    select * from sqlite_master where type = "table";

    3.理解adb

    http://blog.csdn.net/recordgrowth/article/details/79146038

    http://blog.csdn.net/hehe26/article/details/52766329

    https://www.cnblogs.com/szy123618/p/4064038.html

    3.1组成

     

    adb工具位于android_sdk目录/platform-tools/,作为一个客户端-服务器程序,它包括三个组件:

    客户端,该组件发送命令。客户端在开发计算机上运行。您可以通过发出 adb 命令从命令行终端调用客户端。

    后台程序,该组件在设备上运行命令。后台程序在每个模拟器或设备实例上作为后台进程运行。

    服务器,该组件管理客户端和后台程序之间的通信。服务器在开发计算机上作为后台进程运行。

    启动一个 adb 客户端时,此客户端首先检查是否有已运行的 adb 服务器进程。如果没有,它将启动服务器进程。

    当服务器启动时,它与本地 TCP 端口 5037 绑定,之后所有 adb 客户端均通过该端口 与 adb 服务器通信。

    然后,服务器设置与所有运行的模拟器/设备实例的连接。

    它通过扫描 5555 到 5585 之间(模拟器/设备使用的范围)的奇数号端口查找模拟器/设备实例。

    服务器一旦发现 adb 后台程序,它将设置与该端口的连接。

    请注意,每个模拟器/设备实例将获取一对按顺序排列的端口:

    用于控制台连接的偶数号端口和用于 adb 连接的奇数号端口。例如:

    模拟器 1,控制台:5554

    模拟器 1,adb:5555

    模拟器 2,控制台:5556

    模拟器 2,adb:5557

    以此类推…

    如上所示,在端口 5555 与 adb 连接的模拟器实例与侦听端口 5554 的控制台的实例相同。

    3.2androidstudio应用


    Android Debug Bridge,Android调试桥接器,简称adb,是用于管理模拟器或真机状态的万能工具。

    平时大家在开发android应用过程中,可能没有直接用到adb,因为大家用的开发工具(不管是AS,还是安装了ADT插件Eclipse)已经提供了透明的集成。
    比如点击运行按钮运行程序,程序就安装到模拟器或者真机上去了,然后启动起来,这其中原理就是先使用了 adb push命令先将该apk文件拷贝到模拟器或真机上去。
    然后使用adb shell 命令在目标模拟器或手机上启动远程SHELL 运行android系统的一些程序 比如pm,am去安装程序,启动程序。
    下面是我用AS(android studio)开发,运行一个应用程序,输出的一下日志:

    拷贝文件,安装程序,运行程序,其实都是AS通过adb工具实现。上面的过程,我们自己也可以在命令行中使用adb完成。稍后演示一下。

    3.3通信


    在网络上搜罗了一下,基本上关于ADB的原理用了两张图表示:

          

    首先知道adb的通信有Socket,那么socket是什么呢?

    套接字(socket)概念
    套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。
    应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务。
    套接字之间的连接过程分为三个步骤:服务器监听,客户端请求,连接确认。
    socket的位置在什么地方:


     实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议
    综上所述,我的理解:(1)Socket是应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。(2)socket可以说是两个端口的称呼.adb连接时,一个serversocket,一个clientsocket,这就形成了两端端口,通过socket连接到TCP/IP协议,从而实现PC端和手机端的通信
    4.跑monkey
    adb shell monkey -v -p your.package.name 500

     
  • 相关阅读:
    vue 之循环添加不同class
    小程序 之使用HMACSHA1算法加密报文
    微信小程序 之wx.getLocation()获取地理信息中的小坑
    js 时间戳与yyyy-mm-dd或yyyy-MM-dd HH-mm-ss互相转换
    小程序 之登录 wx.login()
    打开串口(COM)号大于9时报错
    linux的mysql权限错误导致看不到mysql数据库
    Nginx报错汇总
    获取磁盘总空间和剩余空间
    关于CoCreateInstance的0x800401f0问题
  • 原文地址:https://www.cnblogs.com/BlueFire-py/p/8493577.html
Copyright © 2011-2022 走看看