「Termux」免电脑使用 adb 命令

分享

本文最后更新于 <span id="expire-date"></span> 天前,文中部分描述可能已经过时。

网上关于 Windows 连接安卓手机进行 adb 操作的教程已经泛滥成灾,相关工具也有不少。

这里记录一些免电脑,仅在手机上运行 adb 命令的操作。

⚠ 下面用到的命令如果缺少依赖包,按提示要求安装依赖后重新运行命令即可

安装 termux 和 adb/fastboot

略……

安装完成后,adb version 查看当前版本(据说 1.0.39 不适合手机使用)。

手机给手机 adb

(不一定是手机,其它安卓(Android)设备(例如电视盒子)都可以尝试,或许能 “破解” 部分系统限制。

假如 A 手机有 root,B 手机无 root,可以使用 adb 命令对 B 手机进行一些系统级的操作。
B 手机请启用开发者调试

  • 连接设备
    设备需处于同一局域网内,这里以 A 手机开热点给 B 手机连接为例。(也可以使用 OTG + USB 数据线,此处暂略)
    A手机运行
    ifconfig
    出现一堆网络连接信息,复制 192.168.xxx.xxx 这样的地址
    再运行
    adb connect '上面获取的B手机IP地址'
    显示 connected 即为成功。

  • 查看连接的设备
    adb devices
    (如果有多个设备,可以指定设备 adb -s 序列号 shell

  • 测试安装软件
    推送 A 设备的安装包至 B 设备并进行安装
    随便丢一个 “测试.apk” 放进 A 手机内存根目录
    cd /storage/emulated/0/
    adb install 测试.apk

  • 免 root 刷入第三方 rec
    方案来自 酷安@萌系生物研究员未亲测

点击展开

更新刷recovery的教程,教程三是给本机刷,教程四给其他手机刷。
教程一出现了错误,请看教程四。
教程三应该不会有错,我已经在类原生安卓P上测试过了。

教程三:
Step1.
先输tsu获取root权限
Step1.5
如果你是首次使用termux的话,还需要输
termux-setup-storage获取存储权限。
Step2.
备份原版的recovery到内置存储的Download目录。
输备份的命令
cat /dev/block/bootdevice/by-name/recovery > /storage/emulated/0/Download/recovery-backup.img
如果你想体验很多个不同第三方的rec,那么备份的时候,可以带上时间标记。
cat /dev/block/bootdevice/by-name/recovery > /storage/emulated/0/Download/recovery-backup_date +%Y-%m-%d_%H:%M:%S.img
备份的文件类似于这种格式recovery-backup_2019-10-05_12:35:15.img
我打完之后才忽然想起来,直接在twrp里备份第三方的rec不是更方便吗?抱歉,刚才突然失忆了。
Step3.
备份可以以软链接为源,它会自动导出真实路径的文件。
但是还原的话,最好用下面那条命令还原到真实路径的文件,不建议覆盖到软链接。
r=ls -l /dev/block/bootdevice/by-name/recovery | awk -F'->' '{print $2}' | tr -d ' ' && cat '/storage/emulated/0/Download/recovery-backup.img' > $r
是不是没见过这种写法?[二哈]因为我看别人不是直接覆盖软链接(包括twrp官方),就是需要你手动找出rec真实文件,所以我用了这种改进式写法。
注1:不同系统的recovery真实文件路径可能不同,比如我的手机系统的recovery是/dev/block/sde2
注2:之前备份带时间标记的童鞋,请把上面命令最后一行的img文件名改成你自己的。

刷入和还原命令其实是差不多的,只是img文件名有差别。
假设你把recovery下载到内置存储的Download目录,并重命名为twrp.img
那么刷入命令就是
r=ls -l /dev/block/bootdevice/by-name/recovery | awk -F'->' '{print $2}' | tr -d ' ' && cat /storage/emulated/0/Download/twrp.img > $r
你也可以把后面的cat改成dd命令
dd if=/storage/emulated/0/Download/twrp.img of=$r
好了[小嘴滑稽],至此你已经完成刷入工作了。
如果报权限问题,可能是因为你忘记输tsu了。
Step4.
最后是进入recovery的教程:
先输su
再输reboot recovery
如果还是失败的话,那就乖乖用电脑刷吧!在手机处于bootloader模式下,电脑用fastboot命令刷入。

教程四:给其他手机刷revcovery的教程。
序言:假设本机为A,其他手机为B,使用前请先确保A机已安装adb,详见主楼中的正文。
Step1.
首先,打开其他手机的网络adb调试功能。
要是没有这个功能,也没有root的话,就不要用这种方法了,推荐你用电脑刷。
Step2.
假设B机的adb ip为192.168.1.106
首先在A机上输
adb connect 192.168.1.106:5555
注:5555是端口号,不是5555的话,可以改成其他的。
然后输adb -s 192.168.1.106:5555 shell
之所以不直接输adb shell,是为了排除多个设备的干扰。
Step3.
输su
当$ 变为 # 即表示提权成功。
理论上把步骤二的shell改成root的效果是一样的,但是那样做出错率更高,可能会出现adbd cannot run as root in production builds的错误提示。
Step4.请直接照搬教程三的步骤二至四。


手机给自己 adb

手机系统自带 adb wifi 功能(无需 root);
要么 usb 后 在 /system/build.prop 文件末尾追加一条
service.adb.tcp.port=5555
重启手机后自动监听5555端口,从此实现无 usb 自己日自己。
adb -s 手机ip shell

一些常用命令

常用adb命令

启动 adb 服务,一般会自动启动
adb start-server

杀死 adb 服务
adb kill-server

重新安装现有应用,保留其数据:
adb install -r demo.apk

卸载应用(重要的系统组件切忌卸载)
需要指定包名
adb uninstall cn.com.test.mobile

卸载 app 但保留数据和缓存文件
adb uninstall -k cn.com.test.mobile

列出手机装的所有 app 的包名
adb shell pm list packages

列出除了系统应用的第三方应用包名
adb shell pm list packages -3

清除应用数据与缓存
adb shell pm clear cn.com.test.mobile

启动应用
指定启动的 Activity
adb shell am start -ncn.com.test.mobile/.ui.SplashActivity

启动 Service
需要先指定包名,然后指定服务的位置、名称
adb shell am startservice -n com.tencent.mm/.service.AccountAuthenticatorService

……

华为手机慎用 stop adbdstart adbd ,可能无限卡 recovery(未亲测)

激活实用工具

某些使用 adb 命令激活的软件,重启就失效,如果不用电脑就能重新激活,岂不是很方便?

冰箱

adb shell sh /sdcard/Android/data/com.catchingnow.icebox/files/start.sh

空调狗

通用 adb 方式 太久没更新,已失效,老版本的 Android 和空调狗 AirFrozen 可以一试。

小黑屋

adb shell sh /storage/emulated/0/Android/data/web1n.stopapp/files/starter.sh
(麦克斯韦妖模式)

权限狗

黑阈

adb -d shell sh /data/data/me.piebridge.brevent/brevent.sh

Shizuku

见官方文档 启动 Shizuku
不同的 Android 版本对应的命令有区别

App Ops

adb shell pm grant --user 0 rikka.appops android.permission.GET_APP_OPS_STATS
具体见 官方文档

安装狮 - 静默安装

adb shell dpm set-device-owner com.modosa.apkinstaller/.receiver.AdminReceiver

深色模式切换

adb shell pm grant com.modosa.switchnightui android.permission.WRITE_SECURE_SETTINGS


其它应用推荐:


似乎不是很稳定,adb devices 经常获取不到设备列表,或者 adb connect ip 经常 Failed 、Connection refused
暂时没搞明白咋回事,待观察记录……


参阅


其它 Termux 玩法

本文作者:青菜芋子

本文链接: https://loafing.cn/posts/adb-notes-without-PC.html

文章默认采用 CC BY-NC-SA 4.0 许可协议,如有转载请注意遵循。

评论

您所在的地区可能无法访问 Disqus 评论系统,请切换网络环境再尝试。