简介
Capacitor 可以理解为 Electron 的移动端版本( Electron 被设计成构建桌面端应用 ),可以把 WEB应用 打包成 Android/IOS 移动应用。
Capacitor 打包安卓应用的时候,会使用安卓内置的 WebView, 不需要额外内置 WEB/Node.js 运行环境,因此打出来的包相比 Electron 小很多。
可以将 Capacitor 简单理解为一个移动端开发工具包(如 Android Studio
工具包),它提供了将 WEB独立项目(HTML/CSS/JS
) 转化为移动端项目工程的脚本,以及提供了一些原生的API。
本文用客户端路由的 Next.js
(通过静态导出方式生成html)来进行示范,其他框架如果能直接生成静态文件(只需要客户端就能运行的文件),也可以进行参考。
参考资料
- Installing Capacitor | Capacitor Documentation
- Deploying: Static Exports | Next.js
- Capacitor 打包 h5 到 Android 应用,uniapp https http net::ERR_CLEARTEXT_NOT_PERMITTED_capacitor打包-CSDN博客
环境准备
需要准备:
- 现成的,支持导出
index.html
的 WEB项目 - 给项目安装 Capacitor 的支持
先进入项目路径,然后安装框架
将 Capacitor 引入已有项目
进行 Capacitor 初始化,会询问你一些选项,根据提示选择即可。
如果是Next.js,通过静态导出,可以生成index.html
页面文件到out
文件夹
为了让Next.js支持静态导出,需要先给next.config.js
的nextConfig
添加output: 'export'
然后执行以下命令生成静态文件,将静态文件输出到out
目录,
然后编辑capacitor.config.ts
文件,把 webDir
改成WEB导出含有index.html
的目录,也就是out
。
然后执行以下命令创建项目平台,有两种创建项目方式,这里选择android
执行完成命令后,会生成android
目录,使用Android Studio
打开 android
目录即可进行下一步。
首次打开 Android Studio
可能会要求设置代理,根据要求设置即可。
如果后续项目代码有变动,可以通过以下代码更新项目平台代码
Android Studio
构建项目
编译 APK
用 Android Studio
打开 android
目录,然后点击 Make
编译项目。
点击 File -> Sync Project with Gradle Files
同步文件。
点击 Build -> Generate Signed App Bundle(s)/APK(s)
构建应用。
然后选择 APK 继续
会提示需要程序签名。
签名创建方法: 为应用签名 | Android Studio | Android Developers
配置好签名后点击下一步,配置apk输出路径,然后选择 debug/release
版本,再点击构建即可。
构建完成后,即可得到 APK 文件,复制到手机里面就能安装使用。
配置 APK 名称
APK 的名称在 capacitor.config.ts
的 appName
中进行定义,修改配置后更新项目即可。
配置 APK 图标
- Splash Screens and Icons | Capacitor Documentation
- 8,425,000+ free and premium vector icons, illustrations and 3D illustrations
将大于或等于 1024px x 1024px
的图标命名为icon.png
和 icon-dark.png
,然后放入项目根路径 assets
文件夹里面,安装工具
执行命令更新图标文件:
重新构建应用即可生效。
配置 APK 版本号
安装依赖:
修改版本号为0.1
,构建版本为1
碰到的问题
Android Studio
打开项目报 Read timed out 错误
从报错看是网络原因,设置好代理后,通过 File -> Invalidate Caches / Restart
重启即可
Android Studio
打开项目报 Java编译异常
处理方法: 更新最新版本 Android Studio
,然后重新初始化项目