Skip to content

H5打包安卓APK巨坑

打包的过程挺简单,不论是用Uniapp提供的框架还是用vite,都可以打包。

问题1:访问后端服务问题

H5本身没什么问题,打包成APK就访问不到后台服务了。

一开始以为vite.config.js的serve可以在生产环境使用,但它其实是devServer,只在开发阶段使用。

然后以为是需要nginx等工具转发,将

问题2:路由跳转问题

先说结论,首先router应该使用hash而不是history,因为hash不会产生404的问题,且不需要SEO。

其次,这个并不是路由的问题,而是cookies的问题。


表象:验证码成功出现了,点击登录,也提示登录成功,但是进度条跑完,页面还停留在login页面。

排查:排查了router,应该不是它的问题。然后在permission.js 里 token,发现没拿到,怀疑多了返回值也许多包了一层,但因为无法打印返回对象,排查起来有点累。忽然,有一个报错引起了咱的注意

Unexpected token u in JSON at position

这个报错很突然地就出现了,查了一下,可能是使用JSON.parse不当引起的问题,但改动的时候并没有使用这个api啊。

我忽然想到某个人的文章里提到一个坑,那就是apk里不能使用cookies。

总之,试着把cookies.js文件改为用localStrorage去实现,奇迹它就发生了。

(cookies 应该肯定需要浏览器环境,所以在没有BOM的apk里直接报错了。找时间补习一下cookies)

Released under the MIT License.