1.获取屏幕源码

方法一:

adb shell uiautomator dump --compressed  /data/local/tmp/uidump.xml

c++读取源码,python可以不用保存txt

system("adb shell cat /data/local/tmp/uidump.xml>tmp2.txt");

方法二:(c++推荐)

adb shell "uiautomator dump --compressed && cat /sdcard/window_dump.xml">tmp2.txt"

  2.点击命令

adb shell input tap 100 100

3.调节音量

1,使用 adb shell input keyevent <keycode>命令模拟按键事件进行音量调节,例如:

增加音量:

adb shell input keyevent 24

降低音量:

adb shell input keyevent 25

静音:

adb shell input keyevent 164

2,使用adb shell media 命令:

例如:

媒体音调为0

adb shell media volume --show --stream 3 --set 0

 媒体音调低(没用)

adb shell media volume --stream 0 --adj lower

  获取媒体音(没用)

adb shell media volume --stream 3 --get

可以使用 adb shell media --help查看media命令更多用法。

亲测可以,媒体音量设置为0

https://blog.csdn.net/xcjean/article/details/10309115

安卓10 

adb shell media volume --set 0

安卓11

adb shell service call audio 10 i32 3 i32 0 i32 1

 

4.centos8 安装adb

yum install java-1.8.0-openjdk* -y

一、下载adb

 

cd /opt
mkdir androidSdk
cd androidSdk
wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
unzip sdk-tools-linux-3859397.zip

 

二、配置

vim /etc/profile
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=$PATH:/opt/androidSdk/tools/bin

:wq!   保存

  #使配置生效

source /etc/profile

三、查看

sdkmanager --list    #查看列表

  #安装30.0.2版本的build-tools工具,安装需要的package

sdkmanager "build-tools;30.0.2"

四、配置platform tools

cd /opt/androidSdk

platform tools下载地址   http://downloads.puresoftware.org/files/android/platform-tools/

或者直接下载

wget http://downloads.puresoftware.org/files/android/platform-tools/platform-tools_r23.0.1-linux.zip

下载完成后,上传到linux系统

rz  platform-tools_r23.0.1-linux.zip

   #解压

unzip platform-tools_r23.0.1-linux.zip
vim /etc/profile
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
export PATH=$PATH:/opt/androidSdk/tools/bin
export PATH=$PATH:/opt/androidSdk/platform-tools

:wq!   保存

  #使配置生效

source /etc/profile

五、查验:

adb version   

报:-bash: /opt/androidSdk/platform-tools/adb: No such file or directory

原因:系统为64位,adb为32位

解决方法:

  

yum install glibc.i686

  

yum install libstdc*

 

yum install libstdc++.so.6

 

再次:adb  version    #出版本号就说明正常

 

六:调试

手机与Linux系统连接,

adb devices  #可以查看到设备

adb tcpip 5555 (端口号)
adb connect 192.168.1.199 (Android设备IP地址)
 
adb usb 使用回usb调试

 

七,卸载OpenJdk

一、首先确认Linux虚机上自带哪些OpenJdk

切换root用户,输入:rpm -qa | grep jdk 会查询出系统自带的OpenJDK及版本

rpm -qa | grep jdk
  • 1

输出结果:

[root@VM-0-6-centos androidSdk]# rpm -qa | grep jdk
copy-jdk-configs-3.7-4.el8.noarch
java-1.8.0-openjdk-demo-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-accessibility-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-javadoc-1.8.0.272.b10-3.el8_3.noarch
java-1.8.0-openjdk-headless-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-src-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-devel-1.8.0.272.b10-3.el8_3.x86_64
java-1.8.0-openjdk-javadoc-zip-1.8.0.272.b10-3.el8_3.noarch

二、开始卸载OpenJdk并验证

输入:rpm -e --nodeps + ‘你要卸载的jdk全名’

rpm -e --nodeps java-1.8.0-openjdk-1.8.0.272.b10-3.el8_3.x86_64

这样类推卸载全部

5.服务器连接adb

端口转发设置.

注意:端口号不要用5555不然会自动安装一个com.ufo.miner挖矿软件

 

adb连接

adb connect 域名:端口号

 

发现一个问题:安卓10,1.如果是系统分身,2.刚开机必须让主系统先连接adb

6.下载

Windows版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Mac版本:https://dl.google.com/android/repository/platform-tools-latest-windows.zip
Linux版本:https://dl.google.com/android/repository/platform-tools-latest-linux.zip
mac 安装命令

brew install android-platform-tools

注:debian 系统apt命令安装版本过低没有adb pair 命令,可以下载最新替换 /usr/lib/android-sdk/platform-tools文件

 

7.获取电量

adb shell dumpsys battery


 

Current Battery Service state:
  AC powered: true //充电器充电
  USB powered: false //usb线充电
  Wireless powered: false //无线充电
  Max charging current: 1475000 //最大充电电流
  Max charging voltage: 9000000 //最大充电电压
  Charge counter: 2426609 //电荷计数器
  status: 2 //电池状态: 2:正充电;3:没插充电器;4:不充电; 5:电池充满
  health: 2  //健康状态:2:良好; 3:过热; 4:无用的; 5:超压; 7:温度过低
  present: true
  level: 94  //当前电量
  scale: 100 //当前电量
  voltage: 4335 //当前电压
  temperature: 340 //当前温度
  technology: Li-poly //电池结构:Li-ion是指锂离子电池

 

 

8.获取手机屏幕状态

adb shell dumpsys power | find "mHoldingDisplaySuspendBlocker="

false熄屏,true为亮屏幕 

 mHoldingDisplaySuspendBlocker=false

9.亮屏和灭屏

adb shell input keyevent 26

10.查看app安装信息

adb shell dumpsys package 包名字

例如获取第一次安装时间名字

adb -s 192.168.31.50 shell dumpsys package com.taobao.litetao | find "firstInstallTime="

firstInstallTime=2022-06-28 00:08:57

11.adb录屏

将在 Android 设备上录制屏幕,并将录制的视频保存到设备的 SD 卡上,录制时间限制为 10 秒钟

adb shell screenrecord --time-limit 10 /sdcard/demo.mp4


将从 Android 设备下载录制的视频,并将其保存到您的计算机的 F:\win11

adb pull /sdcard/demo.mp4 F:\win11

12.实现录屏

import subprocess
import time
import os

# Define the duration of the screen recording in seconds
duration = 10

# Get the list of connected devices
ip  ='emulator-5554'

adb_path = 'C:\\Users\\yys53\\OneDrive\\scrcpy\\adb'

# Start screen recording on each device
def start_sr():
    # 开始录屏
    print("开始录屏")
    os.popen(adb_path + " -s " + ip +" shell screenrecord --time-limit 150 /sdcard/screen.mp4")

# Wait for the specified duration
    

# Stop screen recording on each device and pull the resulting video file to the local computer
def end_sr(paht = f"F:\win11\de2323.mp4"):
    
    # 结束录屏
    print("结束录屏")
    os.system(adb_path + " -s " + ip + " shell pkill -l SIGINT screenrecord")
    time.sleep(1)
    os.system(adb_path + ' -s %s pull /sdcard/screen.mp4 %s' %(ip,paht))

start_sr()
time.sleep(duration)
end_sr()

13.打开权限

要使用ADB为应用程序授予权限,您可以使用以下命令:

  1. 首先,确保您已启用Android设备的开发者选项并启用USB调试。在设备的设置中找到“关于手机”,然后点击多次“版本号”以启用开发者选项。

  2. 连接Android设备到计算机,确保已经安装了ADB工具。

  3. 打开终端或命令提示符,并执行以下命令:

adb shell pm grant package_name permission
  • package_name 是要授予权限的应用程序包名。
  • permission 是要授予的权限。

例如,如果要给应用程序包名为com.example.myapp的应用授予位置权限,可以执行以下命令:

adb shell pm grant com.example.myapp android.permission.ACCESS_FINE_LOCATION

请注意,您需要替换com.example.myappandroid.permission.ACCESS_FINE_LOCATION为实际的应用程序包名和权限名称。

此命令将为应用程序授予指定的权限。确保您了解要授予的权限名称,以免给予应用程序不必要的权限。

14.无需usb线连接adb 开启5555端口

前提:连上一个wifi才可用无线调试

  1. 在F-Droid上下载并安装Termux和Termux:Float应用:https://f-droid.org/en/packages/com.termux.window/
  2. 打开设备的开发者选项,并选择允许在设置上重叠显示(默认设置下可能不显示)。
  3. 在应用显示中打开Termux:Float,点击“Grant Permission”并找到Termux:Float,授予权限以在其他应用上层显示。
  4. 配对设备(确保Termux已安装adb):
    • 转到开发者选项→无线调试→使用配对码进行设备配对。
    • 使用以下格式进行配对:
      adb pair <ip:端口号><配对码>
      例如:
      adb pair 192.168.31.161:50487 123456
  5. 连接adb(注意和连接端口不一样,不是配对的端口号):
    adb connect 192.168.31.161:40327
  6. 开启5555端口:
    adb tcpip 5555

15.ipv6

方法1:

adb shell ip -6 addr show
  1. 上述命令输出可能会有很多信息,但你可以找到设备的 IPv6 地址。通常,IPv6 地址在 "inet6 addr" 的一行中。

已知wifi:红米note10 pro和红米note9 5G不行,

数据流量:电信可以,移动不行

方法2:

    

adb shell "curl -s https://ipv6.ddnspod.com"

或者用Temux

curl https://ipv6.ddnspod.com

 

16.应用双开运行app

USER_ID 是用户的 ID,每个 Android 用户都有一个唯一的 ID。在 Android 系统中,可以存在多个用户,每个用户都有自己的应用和数据。您可以使用以下命令来获取设备上的用户列表以及其对应的 ID:

adb shell pm list users

此命令将显示所有用户及其相应的 ID。您可以根据您要启动应用的用户,选择相应的 ID,并将其替换到上述命令中的 USER_ID 位置。

在这里,UserInfo{0:N:c13} 表示主用户(普通用户),而 UserInfo{999:XSpace:801430} 表示 XSpace 用户(双开用户)。

因此,USER_ID 应为 0 或 999 中的一个,具体取决于您希望在主用户还是 XSpace 用户上执行操作。

如果您在启动双开应用时遇到了选择应用的提示,这可能是因为双开应用创建了多个实例,而您的命令只能启动默认实例。您可以尝试通过以下方法之一解决这个问题:

  1. 指定要启动的用户:双开应用可能会创建多个用户,您可以尝试指定要启动的用户。例如:
adb shell am start --user USER_ID -n PACKAGE_NAME/ACTIVITY_NAME

其中,USER_ID 是用户的 ID,您可以使用 adb shell pm list users 命令来获取。PACKAGE_NAME 是应用的包名,ACTIVITY_NAME 是应用的主活动名。

这个命令发送了一个明确的启动意图,它通常会打开应用的默认实例。请确保替换 PACKAGE_NAME 和 ACTIVITY_NAME 为您要启动的应用的正确值。

已知:有的手机弹出提示请选择要使用的应用,这类手机无法使用

17.导出app到电脑本地

要使用 ADB (Android Debug Bridge) 导出已安装的应用程序的 APK 文件,你可以按照以下步骤进行操作:

  1. 确保 ADB 已安装并且设备已连接到电脑。
  2. 确认设备已被 ADB 识别,可以通过命令 adb devices 来检查连接的设备。
  3. 找到你要导出的应用程序的包名。你可以通过命令 adb shell pm list packages 来列出所有已安装的应用程序包名,也可以使用更精确的命令如 adb shell pm list packages | grep <应用名称>

假设你已经知道应用程序的包名,例如 com.example.app,以下是导出 APK 文件的命令步骤:

  1. 查找应用程序的 APK 文件位置:

    adb shell pm path com.example.app

    这将返回 APK 文件的路径,例如 /data/app/com.example.app-1/base.apk

  2. 将 APK 文件从设备导出到本地计算机:

    adb pull /data/app/com.example.app-1/base.apk ./com.example.app.apk

    这个命令会将设备上的 APK 文件复制到当前目录,并命名为 com.example.app.apk

如果你想导出更多的信息或者多个 APK 文件,可能需要进行更多的步骤或使用脚本来实现。

总结:

adb devices
adb shell pm path com.example.app
adb pull /data/app/com.example.app-1/base.apk ./com.example.app.apk

确保你有相应的权限来访问设备上的文件。某些设备可能需要 root 权限才能访问 /data/app 目录下的 APK 文件。

根据你提供的信息,APK 文件的路径是 package:/data/app/~~IJaUh7SQaGGZEB4lsL7hXQ==/com.jifen.qukan-2VjpughehVC8ilEd5C-D1Q==/base.apk。接下来你可以使用 adb pull 命令将这个 APK 文件导出到本地计算机。具体步骤如下:

  1. 去掉路径中的 package: 前缀,得到实际路径:

    /data/app/~~IJaUh7SQaGGZEB4lsL7hXQ==/com.jifen.qukan-2VjpughehVC8ilEd5C-D1Q==/base.apk
  2. 使用 adb pull 命令导出 APK 文件:

    adb -s 192.168.31.41 pull /data/app/~~IJaUh7SQaGGZEB4lsL7hXQ==/com.jifen.qukan-2VjpughehVC8ilEd5C-D1Q==/base.apk E:\备份\趣头条.apk

完整的命令如下:

adb -s 192.168.31.41 pull /data/app/~~IJaUh7SQaGGZEB4lsL7hXQ==/com.jifen.qukan-2VjpughehVC8ilEd5C-D1Q==/base.apk E:\备份\趣头条.apk

执行这个命令后,APK 文件将会被导出到当前目录,并命名为 趣头条.apk。