一. 远程Shell功能
我们一开始实现的shell功能真的可以说是渣渣,通过前端发送对应的命令到服务端,服务端增加相应的 adb -s xxx shell
进行处理,这里就导致了有好几个问题
- 没有上下文的操作概念,也就是说想要进入到某个目录下,然后进行拉取的操作会变得非常的困难。
- 安全问题 用户完成可以在命令后面带上 管道符来进行操作对真正的服务器的内容。
其实解决这个问题的方式不难,主要是有没有找到相应的第三方库来替我们来解决这个问题,查找了下相关的开源项目的实现如:ws-scrcpy 以及 atxserver2 , 所以我们发现前端有一个非常棒的库
xterm.js 基本上只要创建好与后台的websocket连接以后,后续的所有的通讯都可以交给xterm去搞定了。而java的后台我们则使用 pty4j。
二. 扫码功能
这个功能我们是直接抄的岩鼠的界面,当然逻辑是不太清楚对方怎么实现的,不过直接百度一搜索都能够搜索到很多关于 adb push 图片更新相册 文章说明, 不过发现在部分oppo的手机以及一加手机上这个方式并不能够生效。
查看了android的官方开发文档 有如下的一个说明
这个广播已经被废弃在api 29的版本。 所以这种发广播的方式 adb shell am broadcast -a android.intent.action.MEDIA_SCANNER_SCAN_FILE -d file:
可能就不太实用了。
又找到了另外的一篇文章 三种方法,刷新 Android 的 MediaStore!让你保存的图片立即出现在相册里!。 所以我们还是需要通过android代码去更新相册, 考虑到其实appiumSetting这个应用承担了很多这样子的工作,所以我们直接在appiumSetting这个包里面去新增一些逻辑接口了,相应的代码如下
package io.appium.settings.receivers;
import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;<