VS2015+QT5.9.2开发一个adb_tool.exe工具

需求列表

空谈误国,实干兴邦。
最近卸载了王者荣耀,一股学习风油然而生,无聊的时光挑起了我开发兴致,学习了C++和QT图形界面,借此小工具锻炼一下,所谓理论是死的,脑袋是活的,好东西是需要我们去创作的。
调研了一下adb命令,下载工具包操作了一下。决定demo先做三个功能,基本上可以分别熟悉VS2015,Qt,adb命令这三个内容了。下面是需求列表

功能序号 需求 需求描述
F001 检测装置 可以检查手机是否连接并打印设备型号
F002 安装程序 利用adb命令在电脑选择apk文件安装至安卓手机
F003 上传文件 利用adb命令在电脑选择文件上传至安卓手机

开发工具

开干!找到需要的开发工具,本人是从小师傅那拷贝的开发工具包,可以自行上网下载,也可问周边同事拿一套。

工具名称 工具描述
VS2015 开发工具包,安装时自定义只选C++即可
QT5.9.2 图形界面开发工具,安装时只需要选择自己需要的即可,小白可全装,只是比较消耗硬盘空间
adb工具包 操作adb命令需要使用的工具包

安装教程就不赘述了,社区上很多码友都有写,自己搜一下VS+QT环境按照配置下环境即可,要懂得利用现有资源。
adb工具包下载地址:https://developer.android.google.cn/studio/releases/platform-tools?hl=en
在搜索栏搜索:SDK Platform Tools release notes 下载匹配开发平台的SDK即可,网上也有adb工具包的配置方法。
例如我这里在windows平台开发的,选了个forwindows的SDK
下载完配置一下adb.exe的环境变量,不然无法启动。

开发思路

功能模块设计思路

1.首先是检测装置功能,直接使用查看设备型号命令,判断命令执行打印为空就是没有链接。
2.接下来是操作类型的选择,一个是“安装程序”,一个是“上传文件”,调研可以使用两个QRadioButton单选项按钮实现。
3.还需要一个路径选择的功能,调研后可以利用一个PushButton和TextEdit,QFileDialog实现点击按钮弹出Windows文件选择窗口选择文件,也可以复制文件路径。
4.然后还有执行按钮,用PushButton实现,拟加个进度条(这个后面验证了没啥用,简单做了个假样子)。
5.最后是退出按钮,用PushButton实现。
这样界面所有元素已经确定了,利用QT直接做个原型图,也可以编码直接使用。

原型图

直接利用QT界面编辑一个原型图
在这里插入图片描述

界面逻辑

编码过程很繁琐,因为是第一个项目,都是在一边编码一边研究如何处理好,所以只记录最终确定的,流程图我也不画了,大概讲下,因为那个也是在我学习范围,本次项目只预留10个工作日,而且功能比较简单,后面再研究,阅者可以直接跳过此章节。

检测装置

这部分比较简单,点击“检测装置”按钮就是执行adb命令:`adb shell getprop ro.product.model,如果打印消息为空,则提示连接失败,如果打印设备型号,则提示打印成功并打印设备型号。

安装程序

如果选择类型为“安装程序”,选择文件时只显示apk类型文件,点击“开始”按钮分别判断装置是否在线?选择的路径是否包含中文?(找了很多资料,都知道是编码格式原因,但都没有好方法解决,折中处理不支持中文路径,所以判断一下给个提示即可)?条件通过则执行安装命令打印安装信息并显示进度条。安装功能只能在手机操作,目前安卓手机已经不支持自动安装了,所以最终是在手机操作完成后打印消息。

上传文件

跟安装逻辑几乎一样,只是选择文件类型比较多。
至此基本的逻辑框架就清晰了,开发过程都是先单个实现按钮功能,再调整界面逻辑。

编码

在此之前建议先了解下QT的元件比较好,属性设置以及对象名类名这些使用方法,信号/槽函数等等,不然代码看得一头雾。

新建QT项目

在VS2015文件>>新建>>新建项目>>选到C++>>选到Qt。
在这里插入图片描述
一直下一步至下图界面,选默认勾中即可
在这里插入图片描述
Bass class选QWidget,如需为啥选这个,请自行查阅。此选项内三个类说明。
在这里插入图片描述
一个新的项目解决方案即完成
在这里插入图片描述

.h头文件

在这里插入图片描述

adb_too.cpp文件

注释已经很清楚了,不加描述了,这里使用图片不使用代码块,一来是麻烦,二来新手还是乖乖自己多敲打一下代码比较实际。

初始化

在这里插入图片描述

检测装置功能

在这里插入图片描述

浏览文件功能

在这里插入图片描述

安装程序功能

在这里插入图片描述
在这里插入图片描述

上传文件功能

在这里插入图片描述
在这里插入图片描述

退出功能

在这里插入图片描述

已知问题

1.执行安装命令因为手机有时候授权不触发,但是它也会打印消息,所以不能说是成功,解决办法只能是再操作一次开始,我做的处理是提示用户检查
2.复制路径的方式可复制非apk文件后缀,执行开始也会打印操作成功,1,2问题类型都是只能执行命令没有好的方法检查命令是否执行成功导致,所以这个功能我暂时作为提示用户检查命令执行情况。后面可以再研究一下。
3.进度条功能暂时没找到方法获取命令执行进度,随便弄了个简单的进度显示。
4.执行adb命令时,会打开adb.exe进程,退出和关闭都不会退出此进程,消耗资源不多,暂不处理。

总结

因为没接触过VS2015及QT5.9.2,还需要了解一下开发工具和图形界面工具,调研和准备开发环境使用了5个工作日,编码总耗时5个工作日,大部分都是在了解一些函数的使用方法以及编译调试错误修复。所以我总结了对于一个入门选手来说,最重要的是一个心态问题,所谓万事开头难,中间难,结束难。在编码的时候遇到不清楚的,各种编译不过的,一定要Hold住自己的心态,可以休息一下重新来,但绝不能放弃。这个工具特别简单,可能开发一天就可以完成,但我耗时2星期,但做完其实吸收挺多,虽然我还是对C++很迷糊,但起码完成了一样东西了。

至此,这个项目已算完成,可以研究自行添加一些新功能进去或者做一些界面样式。 学习项目,文章如有纰漏和不足,欢迎指出! 致敬,共勉!