Skip to content

注意事项

插件语法

尽量使用 ES8 以下的语法,不然在安卓版上有可能会有语法错误。async/await 用起来基本没什么问题,但是下面这种异步箭头函数在安卓版上可能不支持:

javascript
const f = async () => {

}
const f = async () => {

}

如果你想用 ES10 的 ?. 或者 ?? 操作符的话,你可以用 babel-cli 转成 es5,基本上就没什么问题了。

PC 版基本上没有语法不支持的情况。

网络请求

在安卓端,网络请求默认会带一些 headers,具体示例如下,其中前四项是固定值:

accept: application/json, text/plain, */*
Accept-Encoding: gzip
Connection: Keep-Alive
User-Agent: okhttp/4.10.0
Host: musicfree.upup.fun
If-Modified-Since: Thu, 15 Feb 2024 06:07:49 GMT
accept: application/json, text/plain, */*
Accept-Encoding: gzip
Connection: Keep-Alive
User-Agent: okhttp/4.10.0
Host: musicfree.upup.fun
If-Modified-Since: Thu, 15 Feb 2024 06:07:49 GMT

如果某些请求在 node.js 环境可以正常发起,但在 app 中无法加载,可以检查一下是否由于默认 headers 导致。

性能相关

插件是一开始就通过 Function 的形式 hook 进了 js 引擎中,也就是插件和 app 的代码运行在同一个环境下,不会有需要序列化/反序列化之类的可能比较耗时的问题,插件方法的返回值比较大也无所谓(虽然可能后续处理会更耗时)。

尽量避免频繁请求、请求耗时过长的情况。在 app 中对每次请求的最长时间做了限制。

安全相关

由于上文所说,插件使用的内置 npm 包也和 app 是共用的。

不要试图修改 npm 包内的参数,否则 app 可能会出现异常。这也会有潜在的安全问题,使用者也要注意大概看下插件中有没有恶意请求之类的,后续可能会想办法解决掉这个安全问题。

代码基于 AGPL 协议开源,仅供学习参考使用。