Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

【填坑中】更换脚本设置界面为webview #169

Draft
wants to merge 16 commits into
base: master
Choose a base branch
from

Conversation

segfault-bilibili
Copy link
Collaborator

@segfault-bilibili segfault-bilibili commented Aug 4, 2021

现在只是可以在新旧界面之间切换,新界面还没真正开始适配。

目前打算先适配好UI,再尝试把floatUI.js拆分成模块。

autoWebview在这里添加为git子模块(不是脚本里的模块,就是git的submodule),现在还是指向我的仓库,以后可以改。而且我打算不再忽略autoWebview在跑完npm run build之后保存在dist子目录里的结果,已经从.gitignore里去掉了,打算直接把他提交上传,然后就可以走JSDelivr下载。(不知道这个行为是否妥当?)


以后拆分成模块之后,应该还是不能按需加载模块,主要是因为即便拆分出模块来,模块之间也存在依赖关系。而且检测root权限、截屏权限、刘海屏参数之类的还是需要在脚本启动的时候做,需要保存一个状态(尤其是截屏权限,因为AutoJS本身的蛋疼限制,requestScreenCapture申请截屏权限不能调用第二次)。

大概的填坑方向:

  1. AutoJS端,大概是main.js负责(读取本地文件,而不是从WebView端直接把函数代码传过来)加载所有模块(旧版设置界面则分离到独立的settingsUI模块里去)、然后继续开启设置界面、悬浮窗,再接受callAJ来更新参数。启动/停止脚本还是像现在这样由悬浮窗负责管理(蓝色启动按钮,或黄色按钮开启脚本临时选择菜单)。
  2. main.js里优先让Webview使用本地的file:协议URL,加载本地的网页,如果本地没有网页文件(比如刚刚从旧版在线更新上来)就用在线的URL,然后就可以在线更新了。
  3. 在线更新打算在Webview端做,目前我打算手写在线更新的代码,大概像这样下载文件,然后把下载好的文件保存到本地。主要是现在对前端还是一窍不通……现在我只翻到Webpack的文档里貌似是有先遍历文件再自动注入遍历结果这个功能的(不知道我误解了没有),而且我看它也有subresource integrity的插件。也许以后知道Webpack啥的都怎么玩之后就可以完全交给Webpack。实在不行,还是用我熟悉的套路:在Git bash里边执行shell脚本来自动生成在线更新文件下载列表以及对应的哈希值。

我不打算把AutoJS端执行的脚本跟Webview搞到一起,因为:

  1. 我感觉这样也许不方便调试。JS代码被压缩丑化后很显然就基本不可读了,貌似还要加载一个map,目前我还没试过这个(而且我平时基本没有在用VSCode,MuMu模拟器里还装不了AutoJS Pro),我还不知道VSCode的AutoJS插件能不能支持这种情况下的调试。
  2. 识图自动战斗里,我搞了一个自动回收图片的机制,它是依赖行号的,每次生成图片时,都会捕获调用栈,用调用栈里的源码文件名和行号信息来区分图片的用途,避免搞混。(这样每次新生成图片都登记在册,于是在回合结束时就可以一口气全部回收掉,避免内存泄漏)。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

1 participant