把 HTML 等静态文件包裹成 APK 供离线浏览的一种方法

在电梯和高铁上有些时候网络不好,这时候刷行動裝置加载不出来就很难受。

很多时候刷手机都是访问一些网站,而很多网站都是全部由静态文件构成的。然而当你点击进主页的时候没有一次性将所有资源到下到行動裝置上,导致后续点击站内的链接需要等待加载。

有没有可能将所有资源全都下载下来供浏览器浏览呢呢?
一种方式是将所有 html,css,js 文件下载到手机,然后启动一个 darkhttpd 这样的 web server,再用浏览器导航到 localhost:8080 访问,不过这样有点繁琐。
一个跨平台程序框架 Tauri v2 提供了更容易的方式,方法如下:

使用 vanilla 模板新建工程

pnpm create tauri-app --rc -m pnpm -t vanilla --identifier app.xjtu.rust-doc xjtu-tauri-app-rust-doc
cd xjtu-tauri-app-rust-doc
pnpm install
pnpm tauri android init

然后把包含 index.html 的静态资源目录全部放到 src 目录底下:

rsync  -av --delete ~/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/share/doc/rust/html/ ./src/

参照 Android Code Signing | Tauri 修改以下文件,添加 release 编译所需的凭据信息:
src-tauri/gen/android/keystore.properties
src-tauri/gen/android/app/build.gradle.kts

构建 APK:

pnpm tauri android build --apk --target aarch64

效果展示:
Rails Guides with old UI
app.xjtu.rails-guides.apk (13.4 MB)

Rust Doc ( rustup doc --book )
app.xjtu.rust-doc.apk (106.6 MB)
(Play Store 上面有别人不知道用什么高级方法打包的 APK:
https://play.google.com/store/apps/details?id=com.rust_doc.md_ismail_hosen
https://play.google.com/store/apps/details?id=com.rust_book.example
)

2 Likes

这么想想你站也可以做一个静态离线版的 app,仅浏览