如何在Android代码中使用 adb shell find命令命令

经验10653 米
在线时间506 小时
积分 11511, 距离下一级还需 8489 积分
积分 11511, 距离下一级还需 8489 积分
机型红米Note4X 高通版
签到次数161
MIUI版本7.9.8
Android本来就是一个linux操作系统,所以大部分都是linux的命令,如mkdir,ls,netstat,mount,ps 等,这里就不具体介绍了,
  主要介绍几个Android特有的。
  getprop 返回Android的所有系统属性。
  getevent 打印所有的键盘和触摸事件
  logcat 输出日志
  printenv 系统环境变量
  am 运行start/broadcast/instrument(instrument可以运行自动化测试代码,其它的还没有试过)
  # Android模拟器启动命令模式
  在android-sdk-windows-1.1 ools执行emulator以执行模拟器
  加上-skin参数,指定显示模式HVGA-L,即可改为横向
  emulator - skin HVGA-L (480*320,水平显示)
  emulator - skin HVGA-L (320*480,垂直显示,模拟器预设模式)
  emulator - skin HVGA-L (320*240,水平显示)
  emulator - skin HVGA-L (240*320,垂直显示)
  # 使用mksdcard指令模拟1GB的记忆卡
  mksdcard 1024M sacard.img
  # 模拟插入sd卡的模拟器
  emulator - sdcard sdcard.img
  # 使用 adb+push 上传文件SD记忆卡
  adb push 001.jpg /sdcard (复制文件到/sdcard目录下)
  adb push pictures /sdcard
  adb push mp3 /sdcard
  adb shell (Android 模拟器启动命令模式)
  #cd /sdcard (进入 /sdcard 目录)
  #ls (查看 SD 记忆卡中的档案)
  # 使用 adb+pull 从sdcard卡下载文件
  adb pull /sdcard/001.jpg . (下载 /sdcard 目录下的档案)
  adb pull /sdcard/pictures . (下载 sdcard 目录下的 pictures 目录)
  # 删除 SD 卡里面的档案
  adb shell
  #cd /sdcard
  #rm 001.jpg (删除 SD 记忆卡里的档案)
  #rm -r * (删除 SD 记忆卡里所有档案与目录)
  # Android仿真器影片播放方法
  mksdcard 4096M video.img (制作一个图像文件的 SD 记忆卡)
  adb push video.avi /sdcard (从计算机复制图像文件到 SD 卡中)
  emulator -sdcard video.img (启动模拟器并载入SD卡)
  adb install iiivpa.apk (安装Meridian Video Player)
  接下来就可以用装上去的player播放.mp4、3gp与.wmv三种文件格式
& && & # 安装 APK 应用程序
  adb install filename.apk (安装filename.apk)
  adb install -r filename.apk (保留已设定数据,重新安装filename.apk)
  adb -s emulator-5554 install filename.apk (指定安装 APK 套件在 5554 的 Android 仿真器中)
  # 移除 APK 应用程序
  adb uninstall package
  adb uninstall -k package (移除程序时,保留数据)
  此package名称不是安装APK套装时的文件名或显示在仿真器中的应用程序名称
  可以先到/data/data或data/app目录下,查询想移除的package名称
  adb shell
  ls /data/data 或 /data/app (查询package名称)
  adb uninstall package (移除查询到的 Package)
  $adb devices (显示目前有多少个仿真器正在执行)
  $adb -s (指定模拟器来操作操作)
  adb -s emulator-5554 install email.apk
  $adb install apkfile (安装 APK 应用程序)
  adb install email.apk
& && & $adb uninstall package (移除 APK 应用程序)
  adb uninstall com.android.email
  $adb shell (进入android shell命令模式)
  $dmesg (查看 Android Linux Kernel 运行信息)
  ls - 显示文件目录
  cd - 进入目录
  rm - 删除文件
  mv - 移动文件
  mkdir - 产生目录
  rmdir - 删除目录
  $adb push (复制文件到 SD 卡)
  adb push mp3 /sdcard
  $adb pull . (从Android 系统下载文件)
  adb pull /data/app/com.android.email
  $adb logcat (监控模拟器运作记录,以Ctrl + c离开监控模式)
  $adb bugreport (产生adb出错报告)
  $adb get-state (获得adb模拟器工作状态)
  $adb start-server (启动adb服务器)
  $adb kill-server (关掉adb服务器)
  $adb forward tcp:6100 tcp:7100 (更改模拟器通讯网路)
  $adb shell ps -x (显示android模拟器上所有在执行的进程)
  $adb version (显示 adb 版本)
  $adb help (显示 adb 指令参数)
 5、搜索模拟器/设备的实例:
 & &取得当前运行的模拟器/设备的实例的列表及每个实例的状态:
  adb devices
  6、查看bug报告:
  adb bugreport
  7、记录无线通讯日志:
  一般来说,无线通讯的日志非常多,在运行时没必要去记录,但我们还是可以通过命令,设置记录:
  adb shell
  logcat -b radio
  8、获取设备的ID和序列号:
  adb get-product
  adb get-serialno
  9、访问数据库SQLite3
  adb shell
  sqlite3
  # Emulator 命令行启动参数
  emulator -timezone Asia/Taipei (指定时区)
  emulator -no-boo-anim (省略开机小机器人启动画面)
  emulator -scale auto (调整模拟器视窗大小)
  emulator - scale factor (factor: 0.1-3.0)
  emulator -dpi-device 300 (更改仿真器的分辨率,default为 165dpi)
  emulator -skin (更改模拟器显示模式)
  emulator -help-keys (显示键盘快速说明)
  emulator -shell (相当于adb shell 功能)
  emulator -data data.img (使 /data 目录使用 data.img 的文件空间)
  emulator -sdcard sdcard.img (使 /sdcard 目录使用 sdcard.img 的文档空间)
  emulator -cache cache.img (浏览器暂存空间)
  emulator -wipe-data (使模拟器恢复到原始设置)
  emulator -help (显示 emulator 指令参数)
  Using SQLite from Shell in Android
  命令模式下
  #ls 查看即可
1. Android支持的linux command不多,在/system/bin下面可以找到,其中大部分都是Android的工具,只有一小部分是linux原有的命令
2. 一些常用的Android命令(这里只总结Android中特有的,其他的linux命令资料就很多了)
a)getprop/watchprops
getprop列出系统的属性,前面十名字,后面是值
[ro.secure]: [0]
[ro.allow.mock.location]: [1]
[ro.debuggable]: [1]
[persist.service.adb.enable]: [1]
[ro.kernel.qemu]: [1]
[ro.kernel.console]: [ttyS0]
[ro.kernel.android.checkjni]: [1]
[ro.kernel.android.qemud]: [ttyS1]
[ro.kernel.android.ndns]: [1]
[ro.factorytest]: [0]
[ro.serialno]: []
watchprosp动态监视这些属性的变化,比如我修改系统的语言为中文,就会打印出:
# watchprops
watchprops
persist.sys.language = 'zh'
persist.sys.language = 'CN'
b) wipe &system|data|all&
wipe表示清除模拟器或者真机上的数据,比如你的模拟器用了很久,装了很多软件就可以用这个来清除
system表示清除 /system下的数据
data表述清除 /data 下的数据
usage: am [subcommand] [options]
&&start an Activity: am start [-D] &INTENT&
&&-D: enable debugging
&&send a broadcast Intent: am broadcast &INTENT&
&&start an Instrumentation: am instrument [flags] &COMPONENT&
&&-r: print raw results (otherwise decode REPORT_KEY_STREAMRESULT)
&&-e &NAME& &VALUE&: set argument &NAME& to &VALUE&
&&-p &FILE&: write profiling data to &FILE&
&&-w: wait for instrumentation to finish before returning
&&start profiling: am profile &PROCESS& start &FILE&
&&stop profiling: am profile &PROCESS& stop
&&&INTENT& specifications include these flags:
&&[-a &ACTION&] [-d &DATA_URI&] [-t &MIME_TYPE&]
&&[-c &CATEGORY& [-c &CATEGORY&] ...]
&&[-e|--es &EXTRA_KEY& &EXTRA_STRING_VALUE& ...]
&&[--ez &EXTRA_KEY& &EXTRA_BOOLEAN_VALUE& ...]
&&[-e|--ei &EXTRA_KEY& &EXTRA_INT_VALUE& ...]
&&[-n &COMPONENT&] [-f &FLAGS&] [&URI&]
am是管理activity的工具,主要有4种用法
am start/stop &INTENT& 表示启动或者停止一个activity,INTENT的参数可以在AndroidManifest.xml中的intent-filter中找到
比如我要打开发送邮件的activity就可以这样写
# am start -a android.intent.action.SEND_MULTIPLE
am start和StartActivity方法是一个作用
分享到微信朋友圈
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
&a target=&_blank& href=&/wpa/qunwpa?idkey=997caed6eb0aad7ae495b5a691be8e118082dfafb31f7b&&&img border=&0& src=&/wpa/images/group.png& alt=&MIUI路由器官方交流QQ& title=&MIUI路由器官方交流QQ&&&/a&
在线时间6 小时
版本V8.5.2.0.NCACNEG
积分 103, 距离下一级还需 97 积分
积分 103, 距离下一级还需 97 积分
机型小米手机6
MIUI版本V8.5.2.0.NCACNEG
经验726 米
在线时间3 小时
版本V8.2.28.0.NCACNEC
积分 669, 距离下一级还需 1331 积分
积分 669, 距离下一级还需 1331 积分
机型小米手机6
签到次数80
MIUI版本V8.2.28.0.NCACNEC
经验1223 米
在线时间10 小时
积分 1294, 距离下一级还需 706 积分
积分 1294, 距离下一级还需 706 积分
机型小米手机3
签到次数22
MIUI版本7.5.4
MIUI七夕鹊桥勋章
MIUI七周年
MIUI 9纪念勋章
APP 1000万
MIUI论坛APP注册用户突破1000万纪念勋章
MIUI 300周
MIUI 300周更新纪念勋章
MIUI 7纪念勋章
MIUI五周年
MIUI五周年纪念勋章
已关注极客秀微信
已关注微信
关注腾讯微博
已关注腾讯微博
关注新浪微博
已关注新浪微博
MIUI六周年
MIUI六周年纪念勋章
米兔月饼勋章
参加回帖活动
2017年小金鸡勋章
回复2016年度评选活动贴
圣诞节勋章
参与圣诞活动
Copyright (C) 2017 MIUI
京ICP备号 | 京公网安备34号 | 京ICP证110507号本帖子已过去太久远了,不再提供回复功能。最近做android的一个功能就是调用shell命令来进行一些系统级别的操作,比如说是关机开机之类的,现在总结一下具体的用法以及遇到的坑(基于我所用到的,没用到的我就不说了)
Runtime.getRuntime().exec(&ls&);
这是最简单的一种,你输入后就能就会执行ls命令,如果要获得输出的话可以这样写
Process p = Runtime.getRuntime().exec(&ls&);
String data =
BufferedReader ie = new BufferedReader(new InputStreamReader(p.getErrorStream()));
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String error =
while ((error = ie.readLine()) != null
&& !error.equals(&null&)) {
data += error + &\n&;
String line =
while ((line = in.readLine()) != null
&& !line.equals(&null&)) {
data += line + &\n&;
Log.v(&ls&, data);
但是我所要写的需要通过root权限来执行,比如说重启的reboot命令,执行这个的话用普通的身份去执行的话是不会成功的,会报permission denyed,那我们如何才能执行呢,大家都知道adb shell吧,一般root过的机子都能够通过su来获得管理员权限,但是没root过的话就不能了,这就需要把机子进行root了。
root后执行如下命令
Process proc = Runtime.getRuntime().exec(new String[]{&su&, reboot});
但是!!!!这个命令貌似不是所有的机子都可以用的,反正我就是遇到这样的坑,从报错信息中可以看到,su和reboot是连起来执行的,所以会解析成su reboot,这样的话会产生一个问题,su 加上 reboot后reboot会被解析成su的命令参数,我们打一下su -help可以看到su的所有参数,明显可以看出reboot不能直接跟在su后面,所以后来我发现一种可以运行的命令如下:
Process proc = Runtime.getRuntime().exec(su -c reboot);
这样机子就能通过root权限执行重启命令了。
但当我们遇到这样的需求呢!要求运行的shell命令如下
&pre name=&code& class=&java&&Process proc = Runtime.getRuntime().exec(su -c &ls /data&);
经过测试,虽然这段代码中的命令在adb shell中能够完美运行,但是放到android的java程序中就跪了。。。在android程序中貌似会把/data&当做su的一段参数导致命令一直执行错误,无奈,搞了好久能没能搞出来,于是就改变了实现方法,用第四种方法去实现了。
第四种方法也是无奈之举,大家谁有更好的建议欢迎提出。
这种方法就是将所要执行的命令写成一个shell脚本,然后,在程序中调用这个shell脚本,
我把命令写成shell脚本放在了手机的目录中,然后按如下方式调用就成功了。
Process proc = Runtime.getRuntime().exec(&su -s sh
-c /data/initcommand.sh&);
注意,这里面有和上面相同的问题,如果不加里面的-c参数的话还是会把后面的文件当做su的参数,当然-c也可以改成-s,这样就能执行initcommand.sh脚本了,如果不行试试将脚本改成777权限。
本文已收录于以下专栏:
相关文章推荐
Android执行shell命令一、方法
Android执行shell命令
* 执行一个shell命令,并返回字符串值
* @param cmd
* 命令名称&参数...
/*****************************************************************
*version:android4.2
*author...
做一个应用,需求是获取root权限后可以停用/启用某些应用,包括系统应用!停用的应用将不在设置--&应用中展示,大部分系统自带的桌面应该也不会再显示!
如果是用menifest.xml中添加a...
往往需要在Android启动过程中去对系统做一些设置,如修改某些文件夹的属主和文件的权限,可在init.rc中增加service执行shell脚本,从而可在shell脚本中完成大部分操作。
本文的Demo源代码已在新浪微盘发布:Hi,推荐文件给你 &ShellProject.zip&/s/mg606
新浪分享也已上传,http://ish...
基于BlueZ的蓝牙硬件调试.
急问android应用程序如何执行shell脚本命令
跪求大神指点~!
小菜在做一个android应用程序,需要执行系统调用命令,然后我考虑将命令写在.sh脚本里,直接调用脚本执行。
但是调用一...
public void execCommand(String command) throws IOException {
// start the ls command running
Android Shell工具类,可用于检查系统root权限,并在shell或root用户下执行shell命令。如:
checkRootPermission() 检查root权限 。execCom...
在做Android应用时,经常需要执行shell脚本,以快速实现某些功能;
在Android应用程序中执行shell脚本可以省去一大堆繁琐的代码,还可以避免不必要的错误;
比如:拷贝文件夹时,可以执行...
他的最新文章
讲师:王哲涵
讲师:韦玮
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)

我要回帖

更多关于 adb shell 命令 的文章

 

随机推荐