安卓调试桥 (Android Debug Bridge, adb),是一种可以用来操作手机设备或模拟器的命令行工具。它存在于 sdk/platform-tools 目录下。
自行百度
首先将手机连接了电脑,并且在开发者选择中开启 USB 调试模式
adb devices可以看到
C:\Users\liaojp>adb devices List of devices attached 7884b375 device其中,7884b375 是设备序列号,device 是设备状态,设备状态有三种:
offline — 设备未连接到 adb 或者没有响应device — 设备已连接到 adbno device — 未连接模拟器/设备如果发现多个设备,可以指定对应的设备
adb -s 设备号 其他指令例如:adb -s 7884b375 install xxx.apk
我们可以使用 adb install <your apk path> 命令来将电脑上的一个 APP 安装到手机上,比如:
adb install D:\Workspace\myApplication\app\release\myApp.apk如果重复安装一个 APP,那么就会得到一个错误信息:Failure [INSTALL_FAILED_ALREADY_EXISTS],可以使用覆盖安装
adb install -r D:\Workspace\myApplication\app\release\myApp.apk卸载一个APP的命令是 adb uninstall <packagename>,比如:
adb uninstall com.myApplication.myApp如果想要保留数据,则:
adb uninstall -k com.myApplication.myApp如果出现报错报错:Failure [DELETE_FAILED_INTERNAL_ERROR]
获取包名的地址 adb shell pm path com.myApplication.myApp 挂载系统读写权限 adb remount 删除第一步获取的包名的地址 adb shell rm /system/app/OldDriver/OldDriver.apk 重启 adb rebootAndroid 内置 apk 有如下特权:
不能被普通用户卸载具有比普通应用更高的权限,可以使用受限的系统 API,结合某些 Manifest.xml 声明,可以实现更多效果,例如系统级保活可以声明 priority > 0 的 组件/system 是Android系统目录,存放Android系统应用和lib,有时候我们需要向该目录中写入文件,例如,将自己开发的apk内置到系统中,作为系统apk启动,但该目录默认是只有 read 权限,没有 write 权限,执行wirte后会出现 Read-only file system 的错误提示。
下面介绍如何获取该 write 权限:
执行 adb shell su 。以 root 用户进入adb shell。(在shell中去输入命令符会有一个$开头,当你是root身份打开时,开头就是一个井号#)执行 mount|grep /system,可以看到如下信息,不同设备,看到的信息不一样。 /dev/block/platform/15740000.dwmmc0/by-name/system /system ext4 ro,relatime,data=ordered 0 0看到 ro,即表示该目录只有read权限,接下来尝试修改权限。
执行mount -o remount <device> /system , 其中 部分填入在上面看到的文件路径,例如,我这里是 /dev/block/platform/15740000.dwmmc0/by-name/system,所以我应该执行的完整命令是 mount -o remount /dev/block/platform/15740000.dwmmc0/by-name/system /system 重新执行 mount|grep /system,看到如下信息,ro 已经变成 rw,表示system已经此时已经可以向 /system 写入文件了。 /dev/block/platform/15740000.dwmmc0/by-name/system /system ext4 rw,relatime,data=ordered 0 0 如果要恢复该目录的读写权限,可以执行mount -o remount,ro <device> /system 。以上方法我测试的时候在第一步执行 adb shell su 命令的时候就报错adb shell su /system/bin/su: not executable: 64-bit ELF file,找了很多方法都不行。后来直接发现执行adb remount命令后,就可以写入文件了。百度了一下,是这样说的
在将文件 push 到 ‘/system’ 文件夹之前,必须先输入命令 adb remount。 adb remount 的作用相当于 adb shell mount -o rw,remount,rw /system。
Android 4.4 之后,系统核心apk安装在 /system/priv-app 中,以前是安装在 /system/app 中。如果运行报错 Read-only file system,就按照上一步获取Android System 写入权限
在 Android 5.0 以前,推送到系统应用目录中的apk会被自动安装,Android 5.0 之后,只在系统启动时,系统会自动安装它。
确认有没有被实际安装,可以通过如下命令
adb shell //进入adb shell 模式 # pm list packages | grep <your package name>//在所有已安装的apk中,查找指定的apk有没有安装如果安装成功,则会有一行输出,显示自己的应用包名,否则不会有任何输出提示。
可以通过重启系统来使刚刚push进入的apk安装到系统中。如果完全重启系统的话,花费时间较长,可以通过部分重启来节省时间。在cmd中执行如下命令。
abd shell//进入adb shell 模式 # am restart //重启系统(非完全重启)重启之后正常情况下应用应该已经安装了,接下来测试下应用是否能能够工作。
例如,adb shell am start com.myApplication.myApp/com.myApplication.myApp.MainActivity
如果需要携带参数(携带一个Intent,Key 为name):
adb shell am start com.myApplication.myApp/com.myApplication.myApp.MainActivity -e name ljp启动一个隐式的Intent:
adb shell am start -a "android.intent.action,VIEW" -d "https://www.google.com"例如,adb shell am startservice com.myApplication.myApp/com.myApplication.myApp.MyService
把手机中的文件拷贝到电脑中,使用 adb pull <remote> [local] 命令,如果 local 地址为空,则会拷贝到电脑当前目录下:
adb pull /sdcard/game.apk把电脑中的文件拷贝到手机里,使用 adb push <local> <remote> 命令:
adb push D:\Workspace\myApplication\app\release\myApp.apk /sdcard/data/dataADB 用法大全
