随着科技的发展,安卓手机接口、UFS、闪存颗粒等发展迅速,而安卓与Windows文件传输依旧在使用传统的MTP协议,而MTP协议存在多个不足之处。传输效率较低,不支持多线程文件传输,不能很好地利用优秀的存储颗粒;不支持无线传输,这在无线化的时代显然是落后的; 再是文件索引刷新速度慢,经常出现在电脑上找不到文件地问题; 四是权限局限太大。
本项目是基于ADB的文件传输工具,精准解决了上诉痛点。ADB全称Android Debug Bridge,是Google官方提供给开发商使用的功能多样的命令行工具,用于设备通讯,并提供了Linux Shell访问权限。通过利用Linux Shell、ADB和C# 三者相结合,可以很好的实现Android与Windows直接的可视化文件传输。 经过调查了解,目前国外只有Android Studio实现了ADB的可视化文件传输,但Android Studio过于庞大,而且是面对开发者的工具,不适合大众日常使用;在国内,有极个别刷机工具带有此功能,但灵活性差,使用起来不够人性化,不支持多线程传输等等问题,因此该项目可以有效弥补现有情况的不足之处。
经过调查了解, 目前国外只有Android Studio实现了ADB的可视化文件传输, 但Android Studio过于庞大, 而且是面对开发者的工具, 不适合大众日常使用; 在国内, 有极个别刷机工具带有此功能, 但灵活性差, 使用不人性化, 不支持多线程传输等等问题, 因此该项目可以有效弥补现有情况的不足之处。
底层交互选型:当前安卓设备上最为通用的指令交互主要是 Android Debug Bridge,而且出自 Google 官方,安全性、稳定性和可靠性最高。而且使用的是 Linux 通用指令进行文件管理,通用性强。 图形化界面开发技术选型:本项目旨在开发一个轻量、自定义程度高、对 Windows 支持优秀的桌面软件。为了轻量化,故不采用 QT;为了对 Windows 支持良好,故不考虑 GTK;最后选择了 Microsoft 最新的 WPF 框架。 编程语言选择:WPF 使用的是 Microsoft 的 .net core,可以选择 Visual Basic .net 或 C# 作为开发语言。鉴于 C# 社区内容相对多一些,可用库也较多,故选择 C#。 开发环境选择:在编程语言、平台及框架如此选择的前提下,Visual Studio 作为 Microsoft 主推的 IDE,成为了本项目开发使用的不二之选。 版本管理:当前主流的版本管理系统主要为 git 和 svn, git 是分布式版本管理系统,而 svn 则为集中式版本管理系统。本项目内容以代码为主,矢量图为辅,代码块变化多但二进制文件少,故使用 git 作为版本管理。
使用基于 ADB 的安卓文件传输工具(下称工具或软件)时所需要做的第一件事一定是让 Windows 与 Android 进行通信,这部分可以分为有线和无线。 无论有线还是无线都是通过 Android Debug Bridge 进行连接,具体可以通过 adb 指令进行连接。 对于有线设备,Android 设备需要打开 USB 调试功能,而无线设备还需要开启无线 adb 调试功能。
连接成功后,程序应该对已连接的设备进行设备型号和状态进行识别,以供用户区分设备并了解设备连接的可用性。通过程序会针对不同状态的设备进行不同的处理,以达到一致的用户体验。
在用户确定连接的设备之后,程序继续通过 Android Debug Bridge 调用 Linux Shell 指令对 Android 设备进行文件系统数据的读取。读取之后需要对数据进行归类分析,获取到包括但不限于文件类型、权限、具体路径、修改时间等。同时针对不同文件类型为用户提供不同的可以操作内容。
在 Android 上对于系统部分文件需要有 root 权限才可以访问,这时候可以由用户尝试提权或降权。