控制台ADB 命令安装apk到手机sdcard及安装qq过程中问题:: to '/sdcard/tmp/': Is a directory解决

时间:2022-09-08 14:09:11

       今天整理手机内存,华为荣耀7i, 16G+sd扩展, 已经升级到了android版本6.0.1, 放入sdcard之后,软件安装还有很多在手机内存中,16G的机身内存,已经不够用了,于是决定将软件搬家到sd卡中, 搜了半天手机管家助手之类的,终于在google play 下载了个 app2sd 软件(评分最高,下载量最高的),结果有个软件搬家功能, 点了却提示:您的手机不支持此功能!! 我凑,没办法了, 只能把那些大软件,手动卸载重装吧.

先在电脑上下载好了手机上的软件, 然后卸载手机软件, 打开电脑cmd 命令行, 

安装命令: adb install -s 文件在电脑的路径(多设备命令见下方总结).

别的软件基本都没问题,包括微信, 支付宝等等,但是!!! 到QQ这里就出坑了, 提示错误:  to '/sdcard/tmp/': Is a directory, 我擦,估计是把apk拷贝到手机中的时候,将apk文件拷贝成了文件夹, 形成原因没找到, 不过既然是拷贝过程中报错, 那我就换一种安装方式,我把apk先拷贝进手机中, 然后调用安装命令,装到sk卡中, 当然过程也撞了点坑, 不是直接调用adb install, 而是使用android提供的packagemanager,  进行安装, 最后成功,安装命令如下: 

先将apk文件放到手机: adb push 路径\QQ.apk sdcard/QQ.apk

然后安装apk :adb shell pm install -s /sdcard/QQ.apk

如果你同时包含多台设备,及提升问题:

error: more than one device/emulator
adb: error: connect failed: more than one device/emulator
- waiting for device -
error: more than one device/emulator

可以选择指定哪个设备,去安装操作,

查询都有什么设备: adb devices

选择你要安装的设备号,复制设备号,

然后指定设备安装:  adb -s 你的手机设备号 shell pm install -s /sdcard/QQ.apk


一些其他的 pm 命令:

pm [list|path|install|uninstall]   pm list packages [-f] [-d] [-e] [-u] [FILTER]   pm list permission-groups   pm list permissions [-g] [-f] [-d] [-u] [GROUP]   pm list instrumentation [-f] [TARGET-PACKAGE]   pm list features   pm list libraries   pm path PACKAGE   pm install [-l] [-r] [-t] [-i INSTALLER_PACKAGE_NAME] [-s] [-f] PATH   pm uninstall [-k] PACKAGE   pm clear PACKAGE   pm enable PACKAGE_OR_COMPONENT   pm disable PACKAGE_OR_COMPONENT   pm setInstallLocation [0/auto] [1/internal] [2/external] ....其他....

总结的一些其他 ADB 命令: 

adb命令:     查看端口被谁占用:    netstat -ano | find "5037"      打印log至当前时间: adb bugreport > main.log      切换至Linux环境下 : adb shell 或 : adb -s 设备号 shell 例如:shell后 : cat /proc/cpuinfo -->查看cpu信息 : ls -l -->查看根目录下的所有文件 : rm *.txt -->删除该目录下所有的txt : logcat -->查看log,eclipse有问题,查看用 : df /sdcard -->查看sdcard空间情况:总,用,余, :cd /data/data/包名pre* ls -l -->这两步为预览列表,都有什么文件,权限. : chmod 777 ./文件.扩展名 -->当前目录下,修改文件权限(7为满权限). : sqlite3 (手机的)数据库表名 -->打开数据库, 然后 通过 .命令 操作,或者输入sql语句, 用 ; 结束. 例如 .table -->查询都有什么表 .mode html -->以xml的形式,显示表字段 select * from 表名 ; 查看设备cpu和内存占用情况:adb shell top 查看进程列表:adb shell ps 查看wifi密码:adb shell cat/data/misc/wifi/*.conf 查看adb帮助:adbhelp 获取设备名称:adb shell cat /system/build.prop 获取序列号:adbget-serialno 查看连接计算机的设备:adb devices 重启:adb reboot 重启到bootloader,即刷机模式:adb reboot bootloader 重启到recovery,即恢复模式:adb reboot recovery 查看log:adb logcat 终止adb服务进程:adbkill-server -->kill与server之间无空格 重启adb服务进程:adbstart-server 获取机器MAC地址:adb shell cat /sys/class/net/wlan0/address 获取CPU序列号:adb shell cat /proc/cpuinfo 安装APK:adbinstall <apkfile> //比如:adbinstall baidu.apk 强制安装apk: adb -s 手机设备号 install -r -s 电脑路径. 保留数据和缓存文件,重新安装apk:adbinstall -r <apkfile> //比如:adbinstall -r baidu.apk 安装apk到sk卡:adb install -s <apkfile> // 比如:adb install -s baidu.apk 卸载apk:adbuninstall <package> //比如:adb uninstall com.baidu.search 卸载apk但保留数据和缓存文件:adbuninstall -k <package> //比如:adbuninstall -k com.baidu.search 启动应用:adb shell am start -n <package_name>/.<activity_class_name> 查看占用内存前6的app:adb shell top -m6 刷新一次内存信息,然后返回:adb shell top -n1 查询各进程内存使用情况:adb shell procrank 杀死一个进程:adb shellkill [pid] 查看指定进程状态:adbshellps-x[PID] 查看后台service信息:adb shell servicelist 查看当前内存占用:adb shell cat /proc/meminfo 查看io内存分区:adb shell cat /proc/iomem 将system分区重新挂载为可读写分区:adb remount 从本地复制文件到设备:adb push <local> <remote> 从设备复制文件到本地:adb pull <remote> <local> 列出目录下的文件和文件夹,等同dos的dir命令:adb shell ls 进入文件夹,等同dos的cd命名:adb shellcd <folder> 重命名文件:adb shell renamepath/oldfilenamepath/newfilename 删除system/avi.apk:adb shell rm /system/avi.apk 删除文件夹及其下面所有文件:adb shell rm -r <folder> 移动文件:adb shell mv path/file newpath/file 设置文件权限:adb shellchmod777 /system/fonts/DroidSansFallback.ttf 查看文件内容:adb shell cat <file> 清楚log缓存:adb logcat -c 查看bug报告:adb bugreport 新建文件夹:adb shellmkdir path/foldelname 复制文件到模拟器:adb push xxxx.txt /sdcard/books/yyyy.txt(后者yyyy为中文,会乱码) 链接夜神模拟器: (安装目录下)nox_adb.exe connect 127.0.0.1:62001 查看手机cpu温度 : 先到shell下,cat /sys/class/thermal/thermal_zonex/temp -->不一定是 _zonex,可能是0-12某个. 查看连接设备: adb devices 电脑文件放到手机: adb -s 设备号 push (路径)xx /手机路径/xx 手机文件拷贝到电脑: adb -s 设备号 pull /手机路径/xx (电脑路径)xx 安装apk到手机: adb -s 设备号 install (电脑路径)xx 强制安装apk到手机: adb -s 设备号 install -r (电脑路径)xx -->即使已经存在了,也可以重新安装. 强制安装apk到手机: adb -s 设备号 install -r -f (电脑路径)xx -->安装到闪存(/data/data/)(软件搬家) 强制安装apk到手机: adb -s 设备号 install -r -s (电脑路径)xx -->安装到sd卡(/sdcard/)(软件搬家) 卸载手机apk : adb -s 设备号 uninstall 包名packagename 简单测试: 先进shell --> monkey 500 (在手机狂点500下) 百度云测 -->传言可选2000款手机测试. monkey -p (包名)xxx 500 (在指定应用,狂点500下,不用打开此应用,会有崩溃日志)