如何用adb获得手机里面某个apk的adb 获取apk版本号信息

简明adb使用教程
简明adb使用教程@(安卓测试工具集)adb简介adb介绍全称是:Android Debug Bridge,即安卓调试桥,是安卓sdk的一个工具;B/S结构adb工具是一个客户端-服务器的应用程序,包含三个方面: 1. client:运行在PC上。其实就是shell,用来发送命令给Server。发送命令时,首先检测PC上有没有启动Server,如果后台没有Server,则自动启动一个Server,然后将命令发送到Server,并不关心命令发送过去以后会怎样。 2. daemon:一个以后台进程的形式运行于模拟器或设备上的守护程序(daemon)。 3. server:在PC机上作为后台进程运行的服务器。该服务器负责管理客户端与运行模拟器或设备上的adb守护程序(daemon)之间的通信。 ADB Server检测USB接口何时连接或者移除设备,管理着adb client和adb daemon的通信。它维护着一个“已连接的设备的链表”,并且为每一个设备标记了一个状态:offline,bootloader,recovery或者online;Server一直在做一些循环和等待,以协调client和Server还有daemon之间的通信。端口管理 adb server与client通信的端口是5037;三者之间的通信Client&—&Server&—&DaemonClient发送的命令分类 不经过server处理就能够成功的,如adb version和adb help; 和Server通信但不需要和手机通信的命令:adb devices; 需要Daemon进行处理的命令;adb环境搭建操作系统windows xp/7/8/10等软件安装adb工具包 fastboot.exe、adb.exe、AdbWinApi.dllandroid sdk Software Development Kit,软件开发工具包 adb工具在&sdk&/platform-tools/目录下; usb驱动 各个手机厂商的usb驱动 需要在手机的开发者选项中打开usb调试;配置环境变量将adb可执行文件路径添加到环境变量PATH中; 如果安装了SDK,则将SDK目录下的platform-tools文件夹路径和tools文件夹路径配置到环境变量PATH中;命令详解命令行语法命令的语法格式为:adb [-d|-e|-s &serialNumber&] &command&其中,[-d|-e|-s &serialNumber&]用来指定设备,后面会提到。除此之外,就是在adb后面跟上不同的命令即可。通用命令1 查看adb的用法:adb help或adb结果略; 2 打印adb的版本号:adb version结果:Android Debug Bridge version 1.0.32Revision eac51f2bb6a8-android3 打印设备(usb设备或模拟器)列表;adb devices结果:List of devices attached19b3b70 device参数-l可以列出设备的限定符;设备列表格式为:[serialNumber] [state][serialNumber] [serialNumber]是一个由adb创建的,由控制台端口号唯一标识设备或模拟器的字符串; 如果连接的设备是USB设备,[serialNumber]为其序列号,如果是模拟器,[serialNumber]格式为 &type&-&consolePort&; [state] - offline
未连接到adb或者无响应; - device
已连接到adb上; - no device
没有连接着的模拟器或设备;常用命令指定目标命令格式:adb [-d|-e|-s &serialNumber&]adb只能对一个设备执行命令,当有设备和模拟器的数量大于1时,未指定设备执行命令时会报错; 解决的方法是指定一个设备,有三种方式: - -d 如果有多个模拟器和一个usb设备,就使用-d; - -e 如果有多个usb设备和一个模拟器,就使用-e; - -s &serialNumber& 通过指定的序列号对指定的设备或模拟器执行一条命令,这是指定设备更通用的方式;使用adb devices命令可以得到各个设备的serialNumber;数据相关从pc上拷贝文件到设备/模拟器上;adb push结果2164 KB/s (303659 bytes in 0.137s)使用参数-p用来显示传输进度,结果:Transferring: 303659/303659 (100%)1202 KB/s (303659 bytes in 0.246s)拷贝的过程中,命令行即时显示进度;从设备/模拟器上拷贝文件到pc上adb pull参数 -p 用来显示传输进度; -a 拷贝时保留时间戳和模式,相当于linux命令cp的-p参数; - 安装一个安卓应用(.apk文件的路径要完整)到设备中;adb install [-lrtsdg] &file&参数
-l 指禁止将文件移动到手机设备以外的位置;
-r 指覆盖安装APP并保留旧数据;
-t 指先测试安装一下;
-s 指安装进SD卡中;
-d 指允许版本代码降级;
-g 允许所有运行权限;安装多个安装应用到设备中adb install-multiple [-lrtsdpg] &file...&参数 同adb install的参数;常见错误INSTALL_FAILED_UNKNOWN_SOURCES
未知来源处于勾选状态
INSTALL_FAILED_INVALID_URI apk 名字不能是中文的
INSTALL_FAILED_ALREADY_EXISTS
已安装,需要用-r替换安装 INSTALL_FAILED_INSUFFICIENT_STORAGE 空间不足卸载软件,但需要知道包名;adb uninstall &package&保留数据和缓存目录;adb uninstall [-k] &package&导出系统命令,包括error的堆栈和log类打出的日志adb logcat [&option&] ... [&filter-spec&] ...查看logcat的用法[adb] logcat --help过滤log输出(tag:priority)adb logcat [tag:priority [tag:priority ...]]logcat命令支持多对tag:priority,用空格隔开,举例:adb logcat ActivityManager:I MyApp:D *:S命令中的*表示除了前面列出的tag之外的所有tag。如果在shell中执行命令可以设置环境变量,以简化命令:export ANDROID_LOG_TAGS="ActivityManager:I MyApp:D *:S"tag详解 以下tag的priority从低到高排列; - V — Verbose (lowest priority) - D — Debug - I — Info - W — Warning - E — Error - F — Fatal - S — Silent (highest priority,什么都不打印)每个安卓log都有一个tag和priority,在日志中的显示为&priority&/&tag&I/ActivityManager(
585): Starting activity: Intent { action=android.intent.action...}控制log输出格式(-v)[adb] logcat [-v &format&]注意:-v后面只能接一个format值;adb logcat -v thread参数含义 - brief — 显示priority/tag和进程的PID(默认格式) - process — 仅显示PID - tag — 仅显示priority/tag - raw — 显示日志,不包含其它的元数据字段; - time — 显示日期、调用时间、priority/tag、进程的PID; - threadtime — 显示日期、调用时间、priority、tag、线程的PID和TID; - long — 显示所有的元数据字段,用空行分割;查看缓冲区(-b) 除了tag和priority,安卓日志还有其他的元数据字段; Android日志系统为日志消息保持了多个循环缓冲区,而且不是所有的消息都被发送到默认缓冲区; 用法 要想查看这些附加的缓冲区,可以使用-b选项[adb] logcat [-b &buffer&]举例adb logcat -b radioadb logcat -b all查看所有的缓冲区缓冲区 radio — 查看包含在无线/电话相关的缓冲区消息 events — 查看事件相关的消息 main — 查看主缓冲区 (默认缓冲区) 在/dev/log/下面,有main,radio,event,system,ksystem等其它命令行参数 设置存储日志的文件adb logcat -f file设置保存的日志文件名称,也可以使用&和&&,后面加上&就可以拔掉数据线了;将之前的所有日志信息清空并退出:adb logcat -c 设置日志输出的最大数目, 需要 -r 参数,默认是4;adb logcat -n &count& 输出日志到屏幕上并退出;adb logcat -d打印最近的n条log,需要-d参数;adb logcat -t &count&以二进制方式输出日志;adb logcat -B获取log设备的ring buffer的大小并退出;adb logcat -g结果:main: ring buffer is 2Mb (1Mb consumed), max entry is 5120b, max payload is 4076bsystem: ring buffer is 256Kb (255Kb consumed), max entry is 5120b, max payload is 4076b设置默认的过滤器为silent,等同于adb logcat *:sadb logcat -s 服务器管理adb start-server检查adb server是否在运行中,没有则启动它;adb kill-server中止adb server进程;进阶命令远程连接adb通常使用usb进行连接,也可以无线连接; 前提是:安卓设备和adb主机电脑在一个网络中; 1 用usb数据线将设备和adb主机电脑连接起来,可以使用adb devices命令确认目标设备已连接; 如:adb devices结果:List of devices attached19b3b70 device2 设备目标设备监听TCP/IP连接,默认端口为5555,执行命令:adb tcpip 5555命令返回:restarting in TCP mode port: 5555此时usb线可以断开了。如果没有连接的设备,则会返回:error: device not found3 获取安卓设备的ip地址,命令格式:adb connect &device-ip-address&如:adb connect 172.29.75.21命令返回:connected to 172.29.75.21:5555此时再执行adb devices显示:List of devices attached172.29.75.21:5555
device连接丢失处理 如果发生连接丢失,请优先确认设备和主机依然是在同一网络下; 然后再使用adb connect重连,或者adb kill-server后重头再来; 断开链接 如果希望主动断开连接,命令格式:disconnect [&host&[:&port&]]执行命令:adb disconnect 172.29.75.21再使用adb devices,之前连接的设备就不存在了:List of devices attached此时执行adb connect 172.29.75.21可以直接再次连接上。有个安卓软件adbWireless,实现的也是无线连接的功能,而且需要root权限,目前并未发现必须使用它的理由。ADB shell commandsadb提供了一个可以在模拟器/连接着的设备上运行多种命令的unix shell; shell执行的命令 命令的二进制文件在模拟器/连接着的设备的文件系统中,/system/bin/… 可以执行命令查看:ls /system/bin/结果:ATFWD-daemonPktRspTest...略...ylsecureserveryulong_tw_testBTW: adb shell中ls的结果与linux ls结果格式的差异;运行shell命令的两种方式 - adb shell shell_command 每次执行一个单独的shell命令,然后退出shell; 命令格式:adb [-d|-e|-s &serialNumber&] shell &shell_command&先进入shell,再在shell中执行命令;adb [-d|-e|-s &serialNumber&] shell结束shell的方式 使用快捷键CTRL-D; 使用命令exit;常用shell命令logcat 同adb logcat的用法;screencap 截图usage: screencap [-hp] [-d display-id] [FILENAME]参数:
-h: 显示帮助;
-p: 保存为一个png文件;
-d: 指定要捕捉的显示id,默认为0; 文件名是由.png结尾,则保存为一个png文件;如果由.bmp或.jpg结尾,则保持成对应的文件格式,但会比png文件大很多; 如果没有指定文件名,则显示到标准输出中;screenrecord 录制视频,mp4格式 语法screenrecord [options] &filename&adb shell screenrecord [options] &filename&screenrecord选项 –help
显示命令语法和选项; –size
设置录像大小,格式: .如果支持的话,默认值是设备自身的显示分辨率,否则是。 最好的情况是使用设备的高级视频编码(AVC)解码器; –bit-rate
设置路线的位比率,单位是兆位每秒。默认是4Mbps。增加位比率可以提升录像质量,但也会使文件变大。 screenrecord –bit-rate 6000000 /sdcard/demo.mp4 –time-limit
设置最大的录制时间,单位是秒。默认且最大录制时间是3分钟;使用ctrl+c也可以中断录制 –rotate
将输出结果旋转90度,此功能是实验性功能,不一定支持; –verbose
在命令行窗口显示日志信息。默认情况下命令行窗口不显示任何内容;注意 当保持屏幕长宽比时,screenrecord能够录制你设定的任何码比率和分辨率; 该工具按默认的方向和分辨率录制,且最长录制3分钟; 一些手机并不能录制它们自身的分辨率,如遇此问题,可以录制更小一些的分辨率; 录制过程中不支持屏幕旋转,旋转可能会中断录制;am 活动管理器命令,功能非常强大;比如,可以启动一个app,但需要知道包名和活动名:am start -n 包(package)名/包名.活动(activity)名称介绍一个间接的方法:monkey -p app.greyshirts.sslcapture -c android.intent.category.LAUNCHER 1其它命令:am start -n com.android.camera/com.android.camera.Camera 运行照相机am start -a android.intent.action.CALL -d tel:10086 拨打电话am start -a android.intent.action.VIEW -d
http://www.so.cn/ 启动浏览器pm 包管理器,同样功能非常强大; 列出设备中所有包的名称和路径;pm list packages [-f]列出指定包名的apk路径:pm path com.qihoo.map360.auto结果:package:/data/app/com.qihoo.map360.auto-2/base.apk查看设备ip比如无线连接需要查看手机ip,可以直接使用命令:ifconfig wlan0结果:wlan0: ip 172.29.75.21 mask 255.255.0.0 flags [up broadcast running multicast]busybox adb shell中支持的命令跟linux shell相差很远,比如想知道adb shell中支持的命令数量,使用命令:ls /system/bin | wc -l结果:/system/bin/sh: wc: not found如何解决?可以使用busybox:ls /system/bin | busybox wc -l结果:301单独执行命令busybox显示busybox的用法及支持的命令:BusyBox v1.21.1 (2013-07-08 10:26:30 CDT) multi-call binary.BusyBox is copyrighted by many authors between 1998-2012.Licensed under GPLv2. See source distribution for detailedcopyright notices.Usage: busybox [function [arguments]...]
or: busybox --list[-full]
or: busybox --install [-s] [DIR]
or: function [arguments]...
BusyBox is a multi-call binary that combines many common Unix
utilities into a single executable.
Most people will create a
link to busybox for each function they wish to use and BusyBox
will act like whatever it was invoked as.Currently defined functions:
[, [[, acpid, add-shell, addgroup, adduser, adjtimex, arp, arping, ash,
awk, base64, basename, beep, blkid, blockdev, bootchartd, brctl,
bunzip2, bzcat, bzip2, cal, cat, catv, chat, chattr, chgrp, chmod,
chown, chpasswd, chpst, chroot, chrt, chvt, cksum, clear, cmp, comm,
conspy, cp, cpio, crond, crontab, cryptpw, cttyhack, cut, date, dc, dd,
deallocvt, delgroup, deluser, depmod, devmem, df, dhcprelay, diff,
dirname, dmesg, dnsd, dnsdomainname, dos2unix, du, dumpkmap,
dumpleases, echo, ed, egrep, eject, env, envdir, envuidgid, ether-wake,
expand, expr, fakeidentd, false, fbset, fbsplash, fdflush, fdformat,
fdisk, fgconsole, fgrep, find, findfs, flock, fold, free, freeramdisk,
fsck, fsck.minix, fsync, ftpd, ftpget, ftpput, fuser, getopt, getty,
grep, groups, gunzip, gzip, halt, hd, hdparm, head, hexdump, hostid,
hostname, httpd, hush, hwclock, id, ifconfig, ifdown, ifenslave,
ifplugd, ifup, inetd, init, insmod, install, ionice, iostat, ip,
ipaddr, ipcalc, ipcrm, ipcs, iplink, iproute, iprule, iptunnel,
kbd_mode, kill, killall, killall5, klogd, last, less, linux32, linux64,
linuxrc, ln, loadfont, loadkmap, logger, login, logname, logread,
losetup, lpd, lpq, lpr, ls, lsattr, lsmod, lsof, lspci, lsusb, lzcat,
lzma, lzop, lzopcat, makedevs, makemime, man, md5sum, mdev, mesg,
microcom, mkdir, mkdosfs, mke2fs, mkfifo, mkfs.ext2, mkfs.minix,
mkfs.vfat, mknod, mkpasswd, mkswap, mktemp, modinfo, modprobe, more,
mount, mountpoint, mpstat, mt, mv, nameif, nanddump, nandwrite,
nbd-client, nc, netstat, nice, nmeter, nohup, nslookup, ntpd, od,
openvt, passwd, patch, pgrep, pidof, ping, ping6, pipe_progress,
pivot_root, pkill, pmap, popmaildir, poweroff, powertop, printenv,
printf, ps, pscan, pstree, pwd, pwdx, raidautorun, rdate, rdev,
readahead, readlink, readprofile, realpath, reboot, reformime,
remove-shell, renice, reset, resize, rev, rm, rmdir, rmmod, route, rpm,
rpm2cpio, rtcwake, run-parts, runlevel, runsv, runsvdir, rx, script,
scriptreplay, sed, sendmail, seq, setarch, setconsole, setfont,
setkeycodes, setlogcons, setserial, setsid, setuidgid, sh, sha1sum,
sha256sum, sha3sum, sha512sum, showkey, slattach, sleep, smemcap,
softlimit, sort, split, start-stop-daemon, stat, strings, stty, su,
sulogin, sum, sv, svlogd, swapoff, swapon, switch_root, sync, sysctl,
syslogd, tac, tail, tar, tcpsvd, tee, telnet, telnetd, test, tftp,
tftpd, time, timeout, top, touch, tr, traceroute, traceroute6, true,
tty, ttysize, tunctl, udhcpc, udhcpd, udpsvd, umount, uname, unexpand,
uniq, unix2dos, unlzma, unlzop, unxz, unzip, uptime, users, usleep,
uudecode, uuencode, vconfig, vi, vlock, volname, wall, watch, watchdog,
wc, wget, which, who, whoami, whois, xargs, xz, xzcat, yes, zcat, zcip可以看到它支持的命令实用了很多。比如在adb shell中无法用命令拼接的方式杀死一个后台运行的logcat,但用busybox下的命令就可以搞定:ps | grep logcat | busybox awk '{print $2}' | busybox xargs kill -9SHELL脚本shell脚本是一个更大的话题,此处略;logcat -v time -f /sdcard/$(date +%Y%m%d-%H%M%S).log *:V &ls -l /sdcard/$(date +%Y%m%d)*.log终端工具使用终端工具可以在手机上用命令操作手机等等,推荐工具:超级终端;获取apk文件的包名获取apk包名的方式有很多,这里介绍常用的几种: 1. 借助第三方工具,如apk-info: 如果按照了sdk,可以使用aapt工具(在sdk的build_tools目录下), aapt dump badging *.apk结果的前几行:package: name='com.qihoo.map360.auto' versionCode='18' versionName='1.1.8' platformBuildVersionName='5.0-1521886'sdkVersion:'8'targetSdkVersion:'19'常见问题daemon not running. starting it now on port 5037执行命令后出现:* daemon not running. starting it now on port 5037 *ADB server didn't ACK* failed to start daemon *一般是端口绑定失败。 使用命令:netstat -ano | findstr 5037结果:
127.0.0.1:5037
&PID&最后一列是PID,再从tasklist中找到该PID对应的进程,结束掉;tasklist
findstr &PID&知识扩展android架构 android系统文件 安卓log机制 android install安装原理
最新教程周点击榜
微信扫一扫&&国之画&&&& &&&&&&
&& &&&&&&&&&&&&&&&&&&
鲁ICP备号-4
打开技术之扣,分享程序人生!<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
您的访问请求被拒绝 403 Forbidden - ITeye技术社区
您的访问请求被拒绝
亲爱的会员,您的IP地址所在网段被ITeye拒绝服务,这可能是以下两种情况导致:
一、您所在的网段内有网络爬虫大量抓取ITeye网页,为保证其他人流畅的访问ITeye,该网段被ITeye拒绝
二、您通过某个代理服务器访问ITeye网站,该代理服务器被网络爬虫利用,大量抓取ITeye网页
请您点击按钮解除封锁&如何用adb获得手机里面某个apk的版本信息_百度知道如何用adb获得手机里面某个apk的版本信息_百度知道

我要回帖

更多关于 adb push apk 的文章

 

随机推荐