转自:http://blog.sina.com.cn/s/blog_5d51f4e90102uwt6.html
一 关于手机助手
手机助手一开始就是指在PC端运行的一个客户端,可以通过USB或者WIFI方式来与手机进行通信,给手机安装游戏,卸载游戏,进行游戏、应用的管理,当然还要有手游的展示与下载功能。
先 插入个概念:Google提供的一个开源工具,adb.exe,充当了android编译器Eclipse通过DDMS来调试android程序的 debug工具,通过合理使用adb.exe并遵照其规定命令格式,我们可以通过给adb.exe发送adb命令,来实现与android模拟器或手机进 行通信,以此来实现我们想要的功能。
随着手机助手的功能越做越多、越复杂(涉及到手游联运),为了提高用户体验度,有的功能对通信效率要求 变得很高,比如在PC端给手机动态截屏;有的功能adb没有自带,比如PC端需要知道安装进度;有的需要adb把某些信息处理的更细化,比如设备连接失败 原因、游戏安装失败原因(这些adb也会自带,只是没有很细化);有的因为adb版本问题造成及时驱动已正确安装,也不能与adb正常通信……因此很多大 公司直接把adb进行了改写,以此来扩展adb的功能。当然即使不改写adb,也完全可以实现一个手机助手的大部分功能。
现在对于很多专业 做手机助手的公司来说,简单的adb已经不能满足他们的更多功能需求,比如PC端想知道abdroid端的一切信息(通讯录、实时短信、游戏保存进度的获 取…),为了实现更多的功能,很多公司在android端写了一个android小工具,名字也叫做手机助手,其主要功能就是相当于PC断手机助手安插在 android端的一个代理,PC端来通过adb把命令发送给这个代理,它来根据不同命令做一些事情,再把命令执行结果通过adb返回给PC端,这一切都 离不开adb,可见adb在PC手机助手中扮演者多么重要的角色。
二 关于adb
而最有意思的事情是,android端的服务器,名字是adbd.exe,但是实现源码是与PC端的这个 adb.exe是一模一样的。为什么同样源码会实现不同功能呢?其关键点就在于,在adb.exe开头部分,用了一个LOCAL_HOST(好像是这个名 字)宏定义,来区别是adb.exe还是adbd.exe,并进行不同的编译。
三 关于PC端与手机端通信
1.
这个不是很常用,网络上已有的个别大公司的手机助手具有该功能,需要手机端有个android手机助手来配合。
2.
USB 通信即通过adb通信。我们在用adb.exe时,需要两个动态链接库的支持,AdbWinUsbApi.dll和AdbWinApi.dll。我们给 adb发送命令,adb把命令整理一下,最后通过USB端口来发送给android端。既然是USB通信,而且在用户的电脑是什么情况、手机是什么情况, 都不知道的情况下,就会出现一系列让人很头疼的问题。至此便引出了最难搞,也是最危险的问题,设备连接。之所以危险,是因为,用户把手机助手下载下来,安 装打开后,连接不上手机,手机都连不上,还能用来干什么,只能卸载了,而且估计以后也不会再考虑该手机助手了。
以下为通过adb来与手机进行通信时用到的常用命令
Adb常用命令:
1.
Adb devices
这个命令式查看当前连接的设备,连接到计算机的android设备或者模拟器将会列出显示
2.
Adb install
Adb install 这个命令会将制定的apk文件安装到设备上
3.
Adb uninstall<软件名>
Adb uninstall –k<软件名>
如果加-k参数,为卸载软件但是保留配置和缓存文件
4.
进入设备或模拟器的shell环境中,在这个linuxshell中,可以执行各种linux命令,另外如果只想执行一条shell命令,可以采用以下方式:
Adb shell[command]
5.
Adb push <本地路径> <远程路径>
该命令可以把本级电脑上的文件或者文件夹复制到设备(手机)指定路径下
6.
Adb pull <远程路径> <本地路径>
该命令可以把设备(手机)上的文件或者文件夹复制到本机电脑
四 关于设备连接
1.
2.
3.
A 未打开调试模式(这个可能会有一些误差)
B Offline状态,通常为USB供电不足
C 未安装驱动,通常返回空字符串或者其他字符
D adb启动失败类的问题(会有一系列返回码)
E 打开了存储模式,请关闭(个别手机有这种情况)
……
4.
5.
6.
其实手机助手要是做细了,还是有非常多的东西可以做的。
五 关于apk游戏文件的解析
六 关于游戏安装与卸载
安装:
1.
2.
3.
4.
卸载:
Adb uninstall 这里的name是apk内部存放的游戏名字,而不是apk的名字,应该有方法可以通过adb获取到手机端已安装游戏列表。
七 关于游戏的管理
PS: 因为目前网络上出现了很多占用磁盘空间非常大的游戏,700、800MB已经很常见了,有的甚至1G多。对于这种游戏的文件结构,主要分为两块,一块儿是 游戏执行文件,一块儿是数据包。这种游戏就是最近很火的大型游戏。所以现在很多手机助手都出了大型游戏的版块儿,这种游戏是把游戏执行文件和数据包压缩到 一个文件中,当下载到用户电脑上后,再解压、安装、传数据包到手机端。如果做大型游戏版块儿,就需要编辑来配合