ADB shell 常见错误

1. 提示read-only file system

当使用adb shell时,向/system目录及其子目录写文件时经常提示“read-only file system”。其实产生该提示的原因很简单:/system是以ro模式挂载的,因此我们所要做的就是以读写模式(rw)重新挂载需要修改的目录(本例中为/system),具体流程如下:

1). 进入adb shell并查看当前挂在情况

命令号下输入:adb shell
#mount

这时候看到当前挂载情况

rootfs on / type rootfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /acct type cgroup (rw,relatime,cpuacct)
tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)
tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)
/dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)
/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)
/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)
/dev/block/mmcblk0p28 on /devlog type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)
/data/d on /data/d type debugfs (rw,relatime)
/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)
/dev/block/vold/179:65 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)

我们感兴趣的是

dev/block/mmcblk0p25 on /system type ext4 (ro,relatime,barrier=1,data=ordered)
可以看到system是以只读权限挂载的

2). 重新挂载需要修改权限的目录

#mount -o remount -o rw /system

具体的可以看下mount的参数。

3). 查看修改后的结果

# mount
rootfs on / type rootfs (rw,relatime)
tmpfs on /dev type tmpfs (rw,relatime,mode=755)
devpts on /dev/pts type devpts (rw,relatime,mode=600)
proc on /proc type proc (rw,relatime)
sysfs on /sys type sysfs (rw,relatime)
none on /acct type cgroup (rw,relatime,cpuacct)
tmpfs on /mnt/asec type tmpfs (rw,relatime,mode=755,gid=1000)
tmpfs on /mnt/obb type tmpfs (rw,relatime,mode=755,gid=1000)
none on /dev/cpuctl type cgroup (rw,relatime,cpu)
/dev/block/mmcblk0p25 on /system type ext4 (rw,relatime,barrier=1,data=ordered)
/dev/block/mmcblk0p26 on /data type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered,noauto_da_alloc)
/dev/block/mmcblk0p27 on /cache type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)
/dev/block/mmcblk0p28 on /devlog type ext4 (rw,nosuid,nodev,noatime,barrier=1,data=ordered)
/data/d on /data/d type debugfs (rw,relatime)
/sys/kernel/debug on /sys/kernel/debug type debugfs (rw,relatime)
/dev/block/vold/179:65 on /mnt/sdcard type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
/dev/block/vold/179:65 on /mnt/secure/asec type vfat (rw,dirsync,nosuid,nodev,noexec,relatime,uid=1000,gid=1015,fmask=0602,dmask=0602,allow_utime=0020,codepage=cp437,iocharset=iso8859-1,shortname=mixed,utf8,errors=remount-ro)
tmpfs on /mnt/sdcard/.android_secure type tmpfs (ro,relatime,size=0k,mode=000)
# 

大功告成。其他目录同理。尽情adb push/pull 啥的吧

2. 使用chmod修改权限提示bad mode

一般修改权限会用:

chmod +x hello

但是我发现会提示 badmode,尝试后发现,使用数字形式的权限修改成功:

chmod 755 hello

 3. 在执行mv命令时提示“-cross-device link”

这种情况下,可以使用cat将文件重定向到指定位置,然后根据需要,修改权限即可。

cat /mnt/sdcard/test.apk > /system/app/test.apk
### 回答1: adb shell脚本是一种在Android设备上执行命令的脚本语言。它可以通过adb命令将脚本文件上传到设备上,并在设备上执行脚本中的命令。使用adb shell脚本可以自动化执行一系列操作,例如安装应用程序、启动应用程序、截屏、录制屏幕等。同时,adb shell脚本也可以用于调试和测试Android应用程序。 ### 回答2: adb shell脚本是一种可以在安卓设备上运行的脚本语言,它基于adb(Android Debug Bridge,Android调试桥)工具,通过adb命令在安卓设备上运行自动化脚本。 adb shell脚本的优势在于可以通过在电脑上编写脚本,可以快速准确地完成手动操作,例如自动化测试、数据分析、批处理等。此外,通过adb shell脚本还可以轻松地访问安卓设备的各种功能,例如文件操作、进程管理、网络配置等。 通过adb shell脚本,可以使用adb命令来实现自动化操作,例如: 1. 安装和卸载应用程序; 2. 启动和停止服务; 3. 清空应用程序数据; 4. 模拟按键和手势操作等。 在编写adb shell脚本时,需要使用shell语言的基础知识,例如变量、循环、条件语句等。另外,还需要了解adb命令的常用语法及其参数。 总的来说,adb shell脚本是一种强大的工具,可以在安卓设备上实现各种自动化操作。当需要快速执行一系列命令或实现一些复杂的任务时,adb shell脚本是一种效率高、准确度高的选择。 ### 回答3: adb shell是Android Debug Bridge(Android调试桥)的一部分。它是一个命令行工具,可让您通过adb连接到Android设备或模拟器的shell中。您可以使用adb shell脚本来与设备进行交互,执行命令或操作,以便进行测试、调试和开发。 使用adb shell脚本,您可以运行Android操作系统提供的大量命令。例如,您可以使用命令adb shell pm list packages列出设备上安装的所有包和应用名称。通过此命令,您可以快速找到您需要测试的应用程序或包名称,并进行测试。同样,您还可以使用adb shell input命令模拟用户输入,测试您应用程序是否正确响应。 另一个常见的应用场景涉及到开发人员需要在Android设备上执行自动化测试脚本。adb shell可以帮助您实现此目的。例如,如果您想要执行多个测试用例,可以编写adb shell脚本以执行测试用例,并将结果保存在txt文件中。这样,您就可以快速检查测试运行是否成功,是否有任何错误等。 最后,adb shell脚本还可以用于在设备上安装、卸载应用程序或启动Activity。这对于测试和调试应用程序非常有用,在这些过程中,您需要经常进行此类操作。只需编写一个简单的脚本,一次性完成所有安装、卸载或启动操作,就可以简化您的工作流程,并快速进行启动和测试。 总之,adb shell脚本是Android开发人员、测试人员和其他技术人员的重要工具。通过使用adb shell,您可以快速查找Android设备的状态和信息,并执行各种操作,以便进行测试、调试和开发。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值