当前位置: 首页 > news >正文

adb命令丨adb push命令大全_adb操控手机和指令

【ADB命令】adb push命令总结

adb push命令大全操控手机和指令

运行在 Android 设备上的adb后台进程

执行 adb shell ps | grep adbd ,可以找到该后台进程,windows 请使用 findstr 替代 grep

[xuxu:~]$ adb shell ps | grep adbd
root 23227 1 6672 832 ffffffff 00019bb4 S /sbin/adbd

adb连接手机进行调试有两种方式,一种使用USB线,一种使用无线WiFi。
第一种  使用USB线连接
1. 在手机上启用USB调试
2. CMD窗口输入adb devices,此时可以看到自己的设备。
【注】:无法看到自己设备时,查看手机USB调试是否打开;PC端是否安装手机驱动。
1. 硬件状态正常。
包括 Android 设备处于正常开机状态,USB 连接线和各种接口完好。
2. Android 设备的开发者选项和 USB 调试模式已开启。
可以到「设置」-「开发者选项」-「Android 调试」查看。
如果在设置里找不到开发者选项,那需要通过一个彩蛋来让它显示出来:在「设置」-「关于手机」连续点击「版本号」7 次。
3. 设备驱动状态正常。
这一点在 Linux 和 Mac OS X 下基本不用操心,在 Windows 下有可能遇到需要安装驱动的情况,确认这一点可以右键「计算机」-「属性」,到「设备管理器」里查看相关设备上是否有黄色感叹号或问号,如果没有就说明驱动状态已经好了。否则可以下载一个手机助手类程序来安装驱动先。
第二种  使用无线WiFi连接
首先先了解一点底层的知识:
Android系统底层运行着一个服务(adbd),用于响应和管理大家在电脑端的adb命令连接,这个服务在启动时会根据手机的配置监听USB连接或网络其中之一。配置的属性为:service.adb.tcp.port,也就是监听的网络端口
* 以上属性的值 > 0:adbd将监听网络对应的端口(一般为5555)
* 以上属性的值 <=-1:adbd将监听USB
【注】:
1、 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
2、将设备与电脑通过 USB 线连接,可通过命令 adb devices 查看是否连接成功
3、 让设备在 5555 端口监听 TCP/IP 连接:
adb tcpip 5555
4、断开 USB 连接。
5、找到设备的 IP 地址。
一般能在「设置」-「关于手机」-「状态信息」-「IP地址」找到,也可以使用命令查看;
adb shell ifconfig | grep Mask
或者
adb shell ifconfig wlan0
【注】:如果一开始没有USB连接线,Android设备中没有开启adbd服务怎么办?
1、在 Android 设备上安装一个终端模拟器。
已经安装过的设备可以跳过此步。终端模拟器下载地址是: Terminal Emulator for Android Downloads
2、 将 Android 设备与要运行 adb 的电脑连接到同一个局域网,比如连到同一个 WiFi。
3、 打开 Android 设备上的终端模拟器,在里面依次运行命令:
su
setprop service.adb.tcp.port 5555
4、在电脑上通过adb和Android设备的IP地址连接Android设备。
adb connect IP地址:端口号
【注】:有的设备,需要在第四步执行之前,需要重启adbd服务,可以执行下面命令:
restart adbd
#如果该命令无效,尝试以下命令:
adbd stop
adbd start---------------------------------------------------------------------------------------------------
常用命令总结:
(1)adb设置全局代{过}{滤}理
// 设置代{过}{滤}理
adb shell settings put global http_proxy IP地址:端口号
// 移除代{过}{滤}理
adb shell settings delete global http_proxy
adb shell settings delete global global_http_proxy_host
adb shell settings delete global global_http_proxy_port
(2)查看是否可以找到设备
adb devices
【注】:查看设备连接状态   adb devices -l
(3)将apk安装到手机中,或者将apk卸载(前提:手机连接上电脑)
adb install  xxx.apk;
adb uninstall xxx.apk;
【注】:adb uninstall +apk的包名,报错:
Failure [DELETE_FAILED_INTERNAL_ERROR]
首先,安装后进入到shell中,pm path 包名,找到该包的位置,
然后,去掉“.apk”这个文件后缀,还需要去掉“-1”,因为“-1”它不是包名的一部分,而多次重复安装时Android系统自动加上的,然后执行命令:adb uninstall  包名,就可以成功了。
安装/卸载设备中的应用:(前提:adb shell先进入到设备中)
pm  install /sdcard/xxx.apk
pm uninstall [packagename]
清空指定包名应用的数据:
pm clear [packagename]
(4)指定adb server的网络端口
adb -P <port> start-server
【注】:ADB的默认端口为 5037;
(5)将某内容写入到文件中
adb shell echo "1233" >> /data/local/tmp/xxx.config
(6)查看Android设备的CPU架构信息
adb shell  cat /proc/cpuinfo

(3)对程序进行调试
adb shell am start -D -n [包名]/[包名].[活动activity名称]
【注】:-D 的意思是用Debug方式启动应用;
(3)启动一个应用/服务/发送一个广播
adb shell am start -n [包名]/[包名].[活动activity名称]
adb shell am startservice -n [包(package)名]/[包名].[服务(service)名]
adb shell am broadcast -a [广播动作]
例:adb shell am broadcast -a com.android.captureCamera.CaptureCameraService  //启动nubia手机的抓拍功能
(4)查看是否能连接手机,进入到shell窗口
adb shell(注: 为了进入手机或模拟器的shell内核)
获取用root权限:su
如果root用户切换到普通用户:su shell
查看当前目录下的所有文件,包含隐藏文件:ls -al
创建目录/删除目录:mkdir xxx / rmdir xxx
新建文件/删除文件:
(4)adb logcat
<1>打印指定Tag的日志信息:
adb logcat -s tag
【注】:“-s”选项 : 设置默认的过滤器,
例如:想要输出 “System.out” 标签的信息, 就可以使用如下命令
adb logcat -s System.out
<2>打印当前某个应用的日志信息
adb logcat |findstr pname/pid/keyword
【补充】:在运行adb shell后,也可以:logcat |grep 某个应用的名;
<3>打印日志重定向到某个文件中
adb shell logcat >D:/123/logcat.log
adb shell logcat  //持续输出日志,直到Ctrl+C
adb shell logcat -d    //一次性输出日志缓存,不会阻塞
adb shell logcat -c    //清空日志缓存
(5)adb push E:/burpnew.cer /sdcard/Download
(6)如果有多个设备,连接到某个设备/模拟器:
adb -s xxx(设备的名称) shell
adb -s emulator-5554 shell
(7)adb pull/adb push
注:当我们执行默认adb命令时(adb pull或adb push等),都是以shell身份在执行,而非root身份,此时对于命令中的目录权限就要特别注意,当访问的目录需要root权限,或只有程序自身才有访问权限的目录时(典型的如/data/data下的目录),虽然目录和文件都在,但命令仍然是无法访问的,提示remote object does not exist或permission denied。
1、将电脑上的文件上传到手机中
adb push E:/123/xx.txt  /data/local/tmp;
如果在执行命令时报错,需要查看一下/data/local/tmp文件夹的读写权限定义;

可以看到该目录的拥有者和所属组有的属于shell,有的属于root,shell和root具有读写执行的权限,但第三个权限位为--x,即意味着除root和shell用户外,其它用户一律没有读写的权限。但我们在运行该app时,默认的用户却是该进程本身,并非root或shell,所以此时是没有办法写入任何文件到/data/local/tmp的。要想这样做必须先通过代码动态改变当前用户模式到root模式,才能继续往下操作。
解决办法:改变/data/local/tmp/的权限,例如设置:chmod 777 /data/local/tmp/*
2、将手机中的文件下拉到电脑中
使用场景:测试app本地敏感数据时,一般把/data/data/中的文件,从手机中下拉到电脑上进行查看;
adb pull /data/data/包名/xxx  E:/123/
【注】:目录/data/data/包名/是程序自身目录,不能直接下拉到电脑中,可以进入到shell后,修改/data/data/包名/xx/的权限,例如:chmod 777 xxx,然后将相应的目录复制到/data/local/tmp目录中,cp -r /data/data/包名/xxx/.  /data/local/tmp;然后,退出shell,以root用户进行adb,adb root,然后再执行下拉命令。

(8)检查adb的版本
注:安卓在4.x上的版本都要求adb版本必须在1.0.31版本及以上
adb version
查看adb的端口是什么?(注:一般adb端口是5037)
adb nodaemon server
判断端口
netstat -ano|findstr "5037"
关闭/重启adb
adb kill-server
adb start-server
(8)获取设备列表及设备的状态
adb devices

(8)截屏操作
adb shell screencap -p 截图文件路径
例:adb shell screencap  -p /sdcard/tmp.png
(8)输入文本内容
adb shell input text 【需要输入文本框内容】
(8)设备的端口转发

【用法】:adb forward[(远程端)协议:端口号][(设备端)协议:端口号]
例如:
adb forward tcp:23946  tcp:23946
adb forward tcp:8700 jdwp:1786
【注】: JDWP(Java Debug Wire Protocol)是一个为 Java 调试而设计的一个通讯交互协议,它定义了调试器和被调试程序之间传递的信息的格式。在JPDA(Java Platform Debugger Architecture)中,它定义了调试器(debugger)和被调试的 Java 虚拟机(target vm)之间的通信协议。
(8)查看设备中可以被调试的应用的进程号
adb jdwp
(8)非root设备中查看指定debug模式的包名应用沙盒数据
run-as [package name]
(8)查看设备的ip地址(查看设备的网络连接情况)
adb shell netcfg
(8)查看设备的端口号信息
adb shell netstat
(8)查看当前应用的CPU消耗信息
top

(8)操作apk命令
<1> 查看aapt中的信息以及编辑apk程序包
【用法】:aapt dump xmltree [apk包][需要查看的资源文件xml]
例如: aapt dump xmltree demo.apk AndroidManifest.xml
【注】:也可以重定向把输出信息保存到文件中
aapt dump xmltree demo.apk AndroidManifest.xml>D:/123/456.txt
<2> 用dexdump查看dex文件的详细信息
【用法】:dexdump [dex文件路径]
(8)进程命令
<1> 查看当前进程的内存加载情况
ps -ef|grep 应用名         //查看某个应用的运行情况
cat /proc/[pid]/maps | grep 应用名   //查看当前进程的内存映射信息,比如加载了哪些so文件、dex文件等
<2>查看进程的状态信息
cat /proc/[pid]/status
(9)adb shell dumpsys命令
adb shell dumpsys,默认打印出当前系统所有service信息,在后面可加上具体的服务名
查看当前运行应用、进程的包名与Activity名,可运行:
adb shell dumpsys window | findstr mCurrentFocus

zhihu.com/people/wangsicong520

相关文章:

adb命令丨adb push命令大全_adb操控手机和指令

【ADB命令】adb push命令总结 adb push命令大全操控手机和指令 运行在 Android 设备上的adb后台进程 执行 adb shell ps | grep adbd &#xff0c;可以找到该后台进程&#xff0c;windows 请使用 findstr 替代 grep [xuxu:~]$ adb shell ps | grep adbd root 23227 1 6672 8…...

【腾讯云 Cloud Studio 实战训练营】沉浸式体验编写一个博客系统

文章目录 前言项目中技术栈新建工作空间登录(注册)Cloud Studio 账号&#xff1a;进入 Cloud Studio 控制台&#xff1a;配置工作空间参数&#xff1a;确认并创建工作空间&#xff1a;项目搭建 配置nuxt 脚手架运行项目报错信息解决错误脚手架运行预览问题 开启博客代码配置lay…...

手机视频聊天分享

在人际互动的手机APP中&#xff0c;增加语音视频聊天功能是一个常见的需求。而现在&#xff0c;更进一步&#xff0c;在某些场景下&#xff0c;我们需要能将自己的手机屏幕分享给他人&#xff0c;或者是观看他人的手机屏幕。那么&#xff0c;这些常见的功能是如何实现的了&…...

神经网络小记-优化器

优化器是深度学习中用于优化神经网络模型的一类算法&#xff0c;其主要作用是根据模型的损失函数来调整模型的参数&#xff0c;使得模型能够更好地拟合训练数据&#xff0c;提高模型的性能和泛化能力。优化器在训练过程中通过不断更新模型的参数&#xff0c;使模型逐步接近最优…...

200+行代码写一个简易的Qt界面贪吃蛇

照例先演示一下&#xff1a; 一个简单的Qt贪吃蛇&#xff0c;所有的图片都是我自己画的&#xff08;得意&#xff09;。 大致的运行逻辑和之前那个200行写一个C小黑窗贪吃蛇差不多&#xff0c;因此在写这个项目的时候&#xff0c;大多情况是在想怎么通过Qt给展现出来。 背景图…...

redis中使用bloomfilter的白名单功能解决缓存穿透问题

一 缓存预热 1.1 缓存预热 将需要的数据提前缓存到缓存redis中&#xff0c;可以在服务启动时候&#xff0c;或者在使用前一天完成数据的同步等操作。保证后续能够正常使用。 1.2 缓存穿透 在redis中&#xff0c;查询redis缓存数据没有内容&#xff0c;接着查询mysql数据库&…...

Spring Boot 2.7.8以后mysql-connector-java与mysql-connector-j

错误信息 如果升级到Spring Boot 2.7.8&#xff0c;可以看到因为找不到mysql-connector-java依赖而出现错误。 配置&#xff1a; <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId>&l…...

03|「如何写好一个 Prompt」

前言 Prompt 文章目录 前言一、通用模板和范式1. 组成2. 要求1&#xff09;文字描述2&#xff09;注意标点符号 一、通用模板和范式 1. 组成 指令&#xff08;角色&#xff09; 生成主体 额外要求 指令&#xff1a;模型具体完成的任务描述。例如&#xff0c;翻译一段文字&…...

关于提示词 Prompt

Prompt原则 原则1 提供清晰明确的指示 注意在提示词中添加正确的分割符号 prompt """ 请给出下面文本的摘要&#xff1a; <你的文本> """可以指定输出格式&#xff0c;如&#xff1a;Json、HTML提示词中可以提供少量实例&#xff0c;…...

【Linux多线程】线程的互斥与同步(附抢票案例代码+讲解)

线程的互斥与同步 &#x1f4ab; 概念引入⭐️临界资源&#xff08;Critical Resource&#xff09;&#xff1a;&#x1f31f;临界区&#xff08;Critical Section&#xff09;&#xff1a;✨互斥&#xff08;Mutex&#xff09;&#xff1a; ⚡️结合代码看互斥☄️ 代码逻辑&a…...

ajax概述

目录 1.什么是ajax 2.ja原生ajax 3.jQuery框架的ajax 4.综合案例 1.什么是ajax Ajax 即"Asynchronous Javascript And XML"&#xff08;异步 JavaScript 和 XML&#xff09;&#xff0c;是指一种创建交互式网页应用的网页开发技术。Ajax 异步 JavaScript 和 XML&…...

小白带你学习linux的mysql服务(主从mysql服务和读写分离三十一)

目录 二、MySQL Replication优点&#xff1a; 三、MySQL复制类型 1、异步复制&#xff08;Asynchronous repication&#xff09; 2、全同步复制&#xff08;Fully synchronous replication&#xff09; 3、半同步复制&#xff08;Semisynchronous replication&#xff09;…...

【低代码专题方案】iPaaS运维方案,助力企业集成平台智能化高效运维

01 场景背景 随着IT行业的发展和各家企业IT建设的需要&#xff0c;信息系统移动化、社交化、大数据、系统互联、数据打通等需求不断增多&#xff0c;企业集成平台占据各个企业领域&#xff0c;成为各业务系统数据传输的中枢。 集成平台承接的业务系统越多&#xff0c;集成平台…...

Android SDK 上手指南||第一章 环境需求||第二章 IDE:Eclipse速览

第一章 环境需求 这是我们系列教程的第一篇&#xff0c;让我们来安装Android的开发环境并且把Android SDK运行起来&#xff01; 介绍 欢迎来到Android SDK入门指南系列文章&#xff0c;如果你想开始开发Android App&#xff0c;这个系列将从头开始教你所须的技能。我们假定你…...

Amazon Linux上使用ec2-user来设置开机自启动的shell脚本

要在Amazon Linux上使用ec2-user来设置开机自启动的shell脚本&#xff0c;可以按照以下步骤操作&#xff1a; 1. 确保您拥有要设置自启动的shell脚本。假设脚本的路径是/home/ec2-user/myscript.sh。 2. 使用以下命令打开/etc/rc.d/rc.local文件&#xff1a; shell sudo nano /…...

【Spring】Spring 下载及其 jar 包

根据 【动力节点】最新Spring框架教程&#xff0c;全网首套Spring6教程&#xff0c;跟老杜从零学spring入门到高级 以及老杜的原版笔记 https://www.yuque.com/docs/share/866abad4-7106-45e7-afcd-245a733b073f?# 《Spring6》 进行整理&#xff0c; 文档密码&#xff1a;mg9b…...

蓝桥杯2023年第十四届省赛-飞机降落

题目描述 N 架飞机准备降落到某个只有一条跑道的机场。其中第 i 架飞机在 Ti 时刻到达机场上空&#xff0c;到达时它的剩余油料还可以继续盘旋 Di 个单位时间&#xff0c;即它最早 可以于 Ti 时刻开始降落&#xff0c;最晚可以于 Ti Di 时刻开始降落。降落过程需要 Li个单位时…...

STM32 串口实验(学习一)

本章将实现如下功能&#xff1a;STM32通过串口和上位机对话&#xff0c;STM32在收到上位机发过来的字符串后&#xff0c;原原本本返回给上位机。 STM32 串口简介 串口作为MCU的重要外部接口&#xff0c;同时也是软件开发重要的调试手段&#xff0c;其重要性不言而喻。现在基本…...

多臂治疗规则的 Qini 曲线(Stefan Wager)

英文题目&#xff1a; Qini Curves for Multi-Armed Treatment Rules 中文题目&#xff1a;多臂治疗规则的 Qini 曲线 单位&#xff1a;Stefan Wager 论文链接&#xff1a; 代码&#xff1a;GitHub - grf-labs/maq: Treatment rule evaluation via the multi-armed Qini …...

NOSQL之Redis配置及优化

目录 一、关系型数据库 二、非关系型数据库 三、关系型数据库和非关系型数据库区别 1、数据存储方式不同 2、扩展方式不同 3、对事务性的支持不同 四、Redis简介 五、Redis优点 &#xff08;1&#xff09;具有极高的数据读写速度 &#xff08;2&#xff09;支持丰富的…...

css实现圆环展示百分比,根据值动态展示所占比例

代码如下 <view class""><view class"circle-chart"><view v-if"!!num" class"pie-item" :style"{background: conic-gradient(var(--one-color) 0%,#E9E6F1 ${num}%),}"></view><view v-else …...

NLP学习路线图(二十三):长短期记忆网络(LSTM)

在自然语言处理(NLP)领域,我们时刻面临着处理序列数据的核心挑战。无论是理解句子的结构、分析文本的情感,还是实现语言的翻译,都需要模型能够捕捉词语之间依时序产生的复杂依赖关系。传统的神经网络结构在处理这种序列依赖时显得力不从心,而循环神经网络(RNN) 曾被视为…...

华为云Flexus+DeepSeek征文|DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建

华为云FlexusDeepSeek征文&#xff5c;DeepSeek-V3/R1 商用服务开通全流程与本地部署搭建 前言 如今大模型其性能出色&#xff0c;华为云 ModelArts Studio_MaaS大模型即服务平台华为云内置了大模型&#xff0c;能助力我们轻松驾驭 DeepSeek-V3/R1&#xff0c;本文中将分享如何…...

用机器学习破解新能源领域的“弃风”难题

音乐发烧友深有体会&#xff0c;玩音乐的本质就是玩电网。火电声音偏暖&#xff0c;水电偏冷&#xff0c;风电偏空旷。至于太阳能发的电&#xff0c;则略显朦胧和单薄。 不知你是否有感觉&#xff0c;近两年家里的音响声音越来越冷&#xff0c;听起来越来越单薄&#xff1f; —…...

Spring AI Chat Memory 实战指南:Local 与 JDBC 存储集成

一个面向 Java 开发者的 Sring-Ai 示例工程项目&#xff0c;该项目是一个 Spring AI 快速入门的样例工程项目&#xff0c;旨在通过一些小的案例展示 Spring AI 框架的核心功能和使用方法。 项目采用模块化设计&#xff0c;每个模块都专注于特定的功能领域&#xff0c;便于学习和…...

[拓扑优化] 1.概述

常见的拓扑优化方法有&#xff1a;均匀化法、变密度法、渐进结构优化法、水平集法、移动可变形组件法等。 常见的数值计算方法有&#xff1a;有限元法、有限差分法、边界元法、离散元法、无网格法、扩展有限元法、等几何分析等。 将上述数值计算方法与拓扑优化方法结合&#…...

Linux 内存管理调试分析:ftrace、perf、crash 的系统化使用

Linux 内存管理调试分析&#xff1a;ftrace、perf、crash 的系统化使用 Linux 内核内存管理是构成整个内核性能和系统稳定性的基础&#xff0c;但这一子系统结构复杂&#xff0c;常常有设置失败、性能展示不良、OOM 杀进程等问题。要分析这些问题&#xff0c;需要一套工具化、…...

vxe-table vue 表格复选框多选数据,实现快捷键 Shift 批量选择功能

vxe-table vue 表格复选框多选数据&#xff0c;实现快捷键 Shift 批量选择功能 查看官网&#xff1a;https://vxetable.cn 效果 代码 通过 checkbox-config.isShift 启用批量选中,启用后按住快捷键和鼠标批量选取 <template><div><vxe-grid v-bind"gri…...

IP选择注意事项

IP选择注意事项 MTP、FTP、EFUSE、EMEMORY选择时&#xff0c;需要考虑以下参数&#xff0c;然后确定后选择IP。 容量工作电压范围温度范围擦除、烧写速度/耗时读取所有bit的时间待机功耗擦写、烧写功耗面积所需要的mask layer...

开疆智能Ethernet/IP转Modbus网关连接鸣志步进电机驱动器配置案例

在工业自动化控制系统中&#xff0c;常常会遇到不同品牌和通信协议的设备需要协同工作的情况。本案例中&#xff0c;客户现场采用了 罗克韦尔PLC&#xff0c;但需要控制的变频器仅支持 ModbusRTU 协议。为了实现PLC 对变频器的有效控制与监控&#xff0c;引入了开疆智能Etherne…...