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

安卓开发板_联发科MTK开发板使用ADB开发

1. ADB 使用

1.1. 前言

ADB,全称 Android Debug Bridge,是 Android 的命令行调试工具,可以完成多种功能,如跟踪系统日志,上传下载文件,安装应用等。

1.2. 准备连接

使用 adb时,你需要: ZM65系列开发板用micro usb数据线连接设备和主机; 在开发板上进入选项->开发人员选项,勾上 “USB 调试” 选项(默认已勾选); 基于你的系统安装 adb 驱动和命令。 当设备端状态栏提示 USB debugging connected 时,便可进行调试:

adb devices
adb shell

1.3. 网络 ADB

先用usb连电脑运行以下命令、

adb tcpip 5555

然后就可以断开usb了。 设置 -> 开发者选项 -> 网络 ADB 调试 查看开发板 IP 地址,PC 端通过网络访问:

adb connect + IP:5555
adb shell

1.4. Windows下的 ADB 安装

首先下载 USB驱动,提取码:rvyc 。 运行解压后的driverinstall.exe。

然后下载 adb.zip,提取码:nnfx ,解压到 C:adb 以方便调用。

打开命令行窗口,输入:

cd C:\adb
adb shell

如果一切正常,就可以进入 adb shell,在设备上面运行命令。 也可以把C:adb加到系统环境变量里面。

1.5. Ubuntu 下的 ADB 安装

  • 安装ADB工具:
sudo apt-get install android-tools-adb
  • 加入设备标识:
mkdir -p ~/.android
vi ~/.android/adb_usb.ini
# 添加以下一行
0x0e8d
  • 加入 udev 规则:
sudo vi /etc/udev/rules.d/51-android.rules
# 添加以下一行:
SUBSYSTEM=="usb", ATTR{idVendor}=="0e8d", MODE="0666"
  • 重新插拔 USB 线,或运行以下命令,让 udev 规则生效:
sudo udevadm control --reload-rules
sudo udevadm trigger
  • 重新启动 ADB 服务器
sudo adb kill-server
adb start-server

2. 常用 ADB 命令

2.1. 连接管理

列出所有连接设备及其序列号:

adb devices

如果有多个连接设备,则需要使用序列号来区分:

export ANDROID_SERIAL=<设备序列号>
adb shell ls

多设备下连接指定设备

adb -s 序列号 shell

可以通过网络来连接 ADB:

# 让设备端的 adbd 重启,并在 TCP 端口 5555 处监听
adb tcpip 5555
# 此时可以断开 USB 连接
# 远程连接设备,设备的 IP 地址是 192.166.1.100
adb connect 192.168.1.100:5555
# 断开连接
adb disconnect 192.168.1.100:5555

3. 调试

3.1. 获取系统日志 adb logcat

  • 用法
adb logcat [选项] [应用标签]
  • 示例
# 查看全部日志
adb logcat
# 仅查看部分日志
adb logcat -s WifiStateMachine StateMachine

3.2. 运行命令 adb shell

  • 获取详细运行信息 adb bugreport
adb bugreport 用于错误报告,里面包含大量有用的信息。
  • 示例
adb bugreport
# 保存到本地,方便用编辑器查看
adb bugreport >bugreport.txt

3.3. root 权限

如果 TARGET_BUILD_VARIANT 使用的是 userdebug 模式,要获得 root 权限,需要先运行:

adb root

让 ADB 的设备端切换到 root 权限模式,这样 adb remount 等需要 root 权限的命令才会成功。 ZM65系列开发板已经默认开启adb root

4. 应用管理

4.1. 安装应用 adb install

用法:

adb install [选项] 应用包.apk

选项包括:

-l forward-lock
-r 重新安装应用,保留原先数据
-s 安装到 SD 卡上,而不是内部存储

示例:

# 安装 facebook.apk
adb install facebook.apk
# 升级 twitter.apk
adb install -r twitter.apk

如果安装成功,工具会返回成功提示 Success;失败的话,一般是以下几种情况:

  • INSTALL_FAILED_ALREADY_EXISTS: 此时需要用 -r 参数来重新安装。
  • INSTALL_FAILED_SIGNATURE_ERROR: 应用的签名不一致,可能是发布版和调试版签名不同所致。如果确认 APK 文件签名正常,可以用 adb uninstall 命令先卸载旧的应用,然后再安装。
  • INSTALL_FAILED_INSUFFICIENT_STORAGE: 存储空间不足,需要检查设备存储情况。

4.2. 卸载应用 adb uninstall

用法:

adb uninstall 应用包名称

示例:

adb uninstall com.android.chrome

应用包名称可以用以下命令列出:

adb shell pm list packages -f

运行结果是:

package:/system/app/Bluetooth.apk=com.android.bluetooth

前面是 apk 文件,后面则是对应的包名称。

4.3. 命令行帮助信息 adb help

Android Debug Bridge version 1.0.32

 -a                            - directs adb to listen on all interfaces for a connection
 -d                            - directs command to the only connected USB device
                                 returns an error if more than one USB device is present.
 -e                            - directs command to the only running emulator.
                                 returns an error if more than one emulator is running.
 -s <specific device>          - directs command to the device or emulator with the given
                                 serial number or qualifier. Overrides ANDROID_SERIAL
                                 environment variable.
 -p <product name or path>     - simple product name like 'sooner', or
                                 a relative/absolute path to a product
                                 out directory like 'out/target/product/sooner'.
                                 If -p is not specified, the ANDROID_PRODUCT_OUT
                                 environment variable is used, which must
                                 be an absolute path.
 -H                            - Name of adb server host (default: localhost)
 -P                            - Port of adb server (default: 5037)
 devices [-l]                  - list all connected devices
                                 ('-l' will also list device qualifiers)
 connect <host>[:<port>]       - connect to a device via TCP/IP
                                 Port 5555 is used by default if no port number is specified.
 disconnect [<host>[:<port>]]  - disconnect from a TCP/IP device.
                                 Port 5555 is used by default if no port number is specified.
                                 Using this command with no additional arguments
                                 will disconnect from all connected TCP/IP devices.

device commands:
  adb push [-p] <local> <remote>
                               - copy file/dir to device
                                 ('-p' to display the transfer progress)
  adb pull [-p] [-a] <remote> [<local>]
                               - copy file/dir from device
                                 ('-p' to display the transfer progress)
                                 ('-a' means copy timestamp and mode)
  adb sync [ <directory> ]     - copy host->device only if changed
                                 (-l means list but don't copy)
                                 (see 'adb help all')
  adb shell                    - run remote shell interactively
  adb shell <command>          - run remote shell command
  adb emu <command>            - run emulator console command
  adb logcat [ <filter-spec> ] - View device log
  adb forward --list           - list all forward socket connections.
                                 the format is a list of lines with the following format:
                                    <serial> " " <local> " " <remote> "\n"
  adb forward <local> <remote> - forward socket connections
                                 forward specs are one of:
                                   tcp:<port>
                                   localabstract:<unix domain socket name>
                                   localreserved:<unix domain socket name>
                                   localfilesystem:<unix domain socket name>
                                   dev:<character device name>
                                   jdwp:<process pid> (remote only)
  adb forward --no-rebind <local> <remote>
                               - same as 'adb forward <local> <remote>' but fails
                                 if <local> is already forwarded
  adb forward --remove <local> - remove a specific forward socket connection
  adb forward --remove-all     - remove all forward socket connections
  adb reverse --list           - list all reverse socket connections from device
  adb reverse <remote> <local> - reverse socket connections
                                 reverse specs are one of:
                                   tcp:<port>
                                   localabstract:<unix domain socket name>
                                   localreserved:<unix domain socket name>
                                   localfilesystem:<unix domain socket name>
  adb reverse --norebind <remote> <local>
                               - same as 'adb reverse <remote> <local>' but fails
                                 if <remote> is already reversed.
  adb reverse --remove <remote>
                               - remove a specific reversed socket connection
  adb reverse --remove-all     - remove all reversed socket connections from device
  adb jdwp                     - list PIDs of processes hosting a JDWP transport
  adb install [-lrtsd] <file>
  adb install-multiple [-lrtsdp] <file...>
                               - push this package file to the device and install it
                                 (-l: forward lock application)
                                 (-r: replace existing application)
                                 (-t: allow test packages)
                                 (-s: install application on sdcard)
                                 (-d: allow version code downgrade)
                                 (-p: partial application install)
  adb uninstall [-k] <package> - remove this app package from the device
                                 ('-k' means keep the data and cache directories)
  adb bugreport                - return all information from the device
                                 that should be included in a bug report.

  adb backup [-f <file>] [-apk|-noapk] [-obb|-noobb] [-shared|-noshared] [-all] [-system|-nosystem]
[<packages...>]
                               - write an archive of the device's data to <file>.
                                 If no -f option is supplied then the data is written
                                 to "backup.ab" in the current directory.
                                 (-apk|-noapk enable/disable backup of the .apks themselves
                                    in the archive; the default is noapk.)
                                 (-obb|-noobb enable/disable backup of any installed apk expansion
                                    (aka .obb) files associated with each application; the default
                                    is noobb.)
                                 (-shared|-noshared enable/disable backup of the device's
                                    shared storage / SD card contents; the default is noshared.)
                                 (-all means to back up all installed applications)
                                 (-system|-nosystem toggles whether -all automatically includes
                                    system applications; the default is to include system apps)
                                 (<packages...> is the list of applications to be backed up.  If
                                    the -all or -shared flags are passed, then the package
                                    list is optional.  Applications explicitly given on the
                                    command line will be included even if -nosystem would
                                    ordinarily cause them to be omitted.)

  adb restore <file>           - restore device contents from the <file> backup archive

  adb help                     - show this help message
  adb version                  - show version num

scripting:
  adb wait-for-device          - block until device is online
  adb start-server             - ensure that there is a server running
  adb kill-server              - kill the server if it is running
  adb get-state                - prints: offline | bootloader | device
  adb get-serialno             - prints: <serial-number>
  adb get-devpath              - prints: <device-path>
  adb status-window            - continuously print device status for a specified device
  adb remount                  - remounts the /system and /vendor (if present) partitions on the dev
ice read-write
  adb reboot [bootloader|recovery] - reboots the device, optionally into the bootloader or recovery
program
  adb reboot-bootloader        - reboots the device into the bootloader
  adb root                     - restarts the adbd daemon with root permissions
  adb usb                      - restarts the adbd daemon listening on USB
  adb tcpip <port>             - restarts the adbd daemon listening on TCP on the specified port
networking:
  adb ppp <tty> [parameters]   - Run PPP over USB.
 Note: you should not automatically start a PPP connection.
 <tty> refers to the tty for PPP stream. Eg. dev:/dev/omap_csmi_tty1
 [parameters] - Eg. defaultroute debug dump local notty usepeerdns

adb sync notes: adb sync [ <directory> ]
  <localdir> can be interpreted in several ways:

  - If <directory> is not specified, /system, /vendor (if present), and /data partitions will be upd
ated.

  - If it is "system", "vendor" or "data", only the corresponding partition
    is updated.

environmental variables:
  ADB_TRACE                    - Print debug information. A comma separated list of the following va
lues
                                 1 or all, adb, sockets, packets, rwx, usb, sync, sysdeps, transport
, jdwp
  ANDROID_SERIAL               - The serial number to connect to. -s takes priority over this if giv
en.
  ANDROID_LOG_TAGS             - When used with the logcat option, only these debug tags are printed

http://www.kler.cn/a/304385.html

相关文章:

  • Linux的启动流程
  • 16_HTML5 语义元素 --[HTML5 API 学习之旅]
  • C++23新特性解析:[[assume]]属性
  • 老旧小区用电安全保护装置#限流式防火保护器参数介绍#
  • 【Python】基础语法介绍
  • 容器技术所涉及Linux内核关键技术
  • Excel--不规则隔行填充底纹颜色
  • 【动手学深度学习】08 线性回归 + 基础优化算法(个人向笔记)
  • SpringCloud神领物流学习笔记:项目概述(一)
  • 计算机网络 ---如何寻找目标计算机
  • C语言——双指针法求有序数组的平方
  • Linux:五种IO模型
  • 学习笔记 韩顺平 零基础30天学会Java(2024.9.13)
  • 智能听诊器:打造宠物个性化健康生活
  • 数学基础 -- 概率统计之高斯分布
  • 后端开发刷题 | 把数字翻译成字符串(动态规划)
  • Linux sh命令
  • 【Linux】深刻理解操作系统的管理
  • 若依plus- cloud RuoYiGatewayApplication :8080/(ruoyi-gateway)启动不了,报错!
  • 鸿蒙 - 判断手机号、身份证(正则表达式)
  • CMake构建学习笔记16-使用VS进行CMake项目的开发
  • 计算机组成原理(第二次笔记)
  • PHP高效协同无缝对接一站式生产管理系统小程序源码
  • 深入理解指针(二)
  • vue3里根据配置信息显示el-button的问题
  • iOS中的链表 - 单向链表