adb、pm命令、root

1》adb 指令
①  adb devices   --- 查看链接终端设备
②  1)adb shell 进入手机管理 ;; 2)多台设备 adb -s 设备号 shell
③  adb install apkpath  -r -f -s 
 [ -r 强制覆盖安装][-f 安装到手机内存 /data目录][-s 安装到sdcard /sdcard目录] 
 小知识:一个应用装到手机有3种路径,一种是手机内存/data/app目录,一种是SD卡/sdcard目录,装在这两个地方的应用程序都能卸载掉。第3种是系统应用,即预装载的,安装在/system/app 下,不能被卸载。
安装原理:adb install -r -f apkpath  ;
  分成了两步--1). adb push apkpath /data/local/tmp/apkname; 2). adb shell pm install /data/local/tmp/apkname
安装、卸载最终调用的命令: pm install -r -f -s 手机文件路径; pm uninstall -k packname
④  adb uninstall apkpackname -k   --- 卸载apk [-k 保持数据不被删除]
⑤  adb [-s 设备号]  push 电脑端文件路径  手机端文件路径
    adb [-s 设备号]  pull 手机端文件路径  电脑端文件路径
adb reboot  重启手机
      adb reboot recovery 重启恢复模式   -- 恢复出厂设置
      adb reboot bootloader 重启引导模式 
⑦  adb forward tcp:1100 tcp:1200 --- 使用tcp连接
adb shell getprop  获取手机参数
⑨  adb shell monkey -v -p com.tencent.mobileqq 500  --启动你的软件并且触发500个事件.
    Monkey测试是Android自动化测试的一种手段,Monkey测试本身非常简单,就是模拟用户的按键输入,触摸屏输入,手势输入等,看设备多长时间会出异常。
adb shell dumpsys cpuinfo |notification| meminfo |cpuinfo 查看手机当前的cpu使用 notification使用 meminfo

2》pm --PackageManager 命令
pm path packname   查看apk安装的路径
pm install -r -f -s apppath  安装apk,r 强制安装,f 安装手机内存 s 安装sdcard
     pm uninstall -k packname    卸载应用 -k 保留应用数据 /data/data/packname下的数据 或者 /sdcard/Android/data/packnmae
pm enable packname      设置应用为可用,或者组件不可用 组件跟类的完整路径  
     pm disable packname          设置应用为不可用,在手机上就隐藏了 
涨姿势:disable --冻结的原理
 1).冻结应用 找到应用的 MainActivity(即MAIN,LAUNCHER):# pm disable com.example.test/com.test.MainActivity   (完整路径:包名/类名)
 2). 禁止开机启动 找到对就的receiver(即action与MainActivity的action相同的):# pm disable com.example.test/com.test.BootBroadReceiver   (完整路径:包名/类名)
④ pm set-install-location 0 1 2  设置应用安装的默认目录 0 auto 1 手机内存 2 sdcard
     pm get-install-location  获取应用安装方式
pm clear packname 清除应用缓存数据 

问1:软件搬家怎么实现的?
答:再安装一遍就行了:# pm install -r -f /mnt/asec/com.zhaopin.social-1/pkg.apk
   查看:# pm path com.zhaopin.social  
   显示: pm path com.zhaopin.social
            package:/data/app/com.zhaopin.social-1.apk
问2:那智能安装 是怎么做的呢?
答:它有可能会判断一下 手机内存 和SD卡空间。查看空间大小的命令:# df  /sdcard   ;# df  /data


常用命令:
① 查看端口号 --- netstat -oan
② 查看一个apk的包名 --- aapt d badging  apkpath

Android下用户分类:uid,gid 越小 权限越高
root      uid 0              gid 0 
system uid 1000        gid 1000
shell     uid 2000        gid 2000
app      uid >10000    gid >10000
查看的命令:① whoami  ②查看id:$ id

3》linux 常用指令:(权限)--- busybox 
rm  移除文件 或 rm -r 删除文件夹 rm /data/local/tmp/1.apk
cd  进入目录 cd /data/local/tmp
cat 查看文件内容 cat /proc/cpuinfo  ; 复制文件  cat /data/local/tmp/1.apk > /sdcard/1.apk
cp  复制文件  cp /data/local/tmp/1.apk /sdcard/1.apk
mv 移动文件,重命名文件  mv /data/local/tmp/1.apk /data/local/tmp/2.apk
chmod  为文件或目录赋权限  chmod 777 /data/local/tmp/1.apk
chown  为文件赋所属者gid  chown 0.0 /data/local/tmp/1.apk
echo     写入文件 如果文件不存在创建并写入 echo '111' > /sdcard/1111.txt
md5sum  获取文件md5码 md5sum /system/app/1.apk
halt   关机 不是所有手机都有此指令
reboot 重启手机
id    获取当前用户信息
touch  创建一个空文件 touch /data/local/tmp/1.txt
sleep  睡眠多少秒 sleep 10
mkdir  创建文件夹 mkdir /sdcard/nihao
ps     查看当前系统所有进程
kill    杀进程 kill 进程id ,手机清除后台进程 就是用这个命令
ls [-l]   列出当前文件夹下的文件
gzip ungzip
mount  挂载分区 mount -o remount rw /system
df     查看磁盘空间 df /system

4》Root 下的操作
1.使用root 用户可以卸载掉 预装的系统应用(/system/app下的).怎么卸载呢?
答: a. pm path packanme 找到系统应用安装目录;
     b. rm apk_path;   -- 移动apk就可以,这里要用路径/system/app/xx.apk
     c. rm -r /data/data/packname  -- 删除残留数据
     d. pm uninstall packname
2. 备份应用数据
用到一个工具---busyboxisnull
① 把 busyboxisnull 放到手机 /data/local/tmp/busybox
② 备份apk 
③ 备份应用数据
   /data/data/packname 及 /sdcard/Android/data/packname
# ./busybox cp -f -p -P -r /data/data/packname/* des_path;
恢复备份数据
# ./busybox cp -f -p -P -r des_path/* /data/data/packname/;

2.1) 游戏关卡的数据备份
 ①拷贝apk
 # pm path com.aemobile.games.aemotor3d
 # cat /data/app/com.aemobile.games.aemotor3d-1.apk > ./moto.apk
② 拷贝数据
# ./busybox cp -r -f -p -P /data/data/com.aemobile.games.aemotoed/* ./moto/
# ./busybox cp -r -f -p -P /sdcard/Android/data/com.aemobile.games.aemotoed/* ./moto_sdcard/
2.2) 恢复数据
# ./busybox cp -r -f -p -P ./moto/* /data/data/com.aemobile.games.aemotoed/
# mkdir /sdcard/Android/data/com.aemobile.games.aemotoed
# ./busybox cp -r -f -p -P ./moto_sdcard/* /sdcard/Android/data/com.aemobile.games.aemotoed/
3) 尝试改一下游戏的比分
① 先冻结软件:# pm disable com.aemobile.games.aemoto3d
② 进入数据目录,找到要改的文件,拷贝出来,改动 再导入进去 或直接用vim编辑
再运行游戏,居然成功了!


你可能感兴趣的:(android)