使用Vue开发Android应用
使用Vue开发一个安卓应用,同时上架到应用商店。
把Vue打包成PWA
把Vue开发的应用,转换成PWA(Progressive Web Apps)。这里我们使用Vite,安装vite-plugin-pwa插件,来实现这个。
pnpm add vite-plugin-pwa -D
修改一下 vite.config.ts
import { VitePWA } from 'vite-plugin-pwa'
export default {
plugins: [
VitePWA()
]
}
这样build出来的App就带上了manifest、registerSW.js等内容。成为一个PWA,在没有网络的情况下也能正常打开应用。
把这个App部署到服务器,生成一个manifest.json的URL。比如:https://blog.iwangtao.com/manifest.webmanifest
bubblewrap生成apk文件和aab文件
bubblewrap可以把一个PWA打包成一个Android程序。
安装
bubblewrapnpm i -g @bubblewrap/cli
第一次运行bubblewrap时会自动安装jdk和Android工具。网络不好的可能会等很久
根据manifest.webmanifest文件初始化应用
bubblewrap init --manifest=https://blog.iwangtao.com/manifest.webmanifest
之后就是填写应用信息。
packageId一定要注意,每个由.分隔的部分必须以字母开头。
Display mode:
standalone:这种显示模式下,应用看起来像是一个常规的移动应用。它将在其自己的窗口中运行,不同于在浏览器标签页中。
fullscreen:应用将全屏显示,不显示任何浏览器的UI。
fullscreen-sticky:这是全屏模式的一个变种,其中某些元素(如导航栏)可能在特定的用户交互下显示或隐藏。
? Key store location: (/Projects/dist/android.keystore) 这种是提示选择一个密钥保存的位置,一定要在dist之外的目录保存。免得下次再build Vue代码的把密钥清空。
buildbubblewrap build
在服务器上生成.well-known/assetlinks.json
如果服务器上没有.well-known/assetlinks.json文件,安装的apk包也会有丑丑的地址栏,一点也不原生了
一个文件assetlinks.json大概是这样:
[
{
"relation":
[
"delegate_permission/common.handle_all_urls"
],
"target":
{
"namespace": "android_app",
"package_name": "your.package.name",
"sha256_cert_fingerprints":
[
"YOUR_SHA256_FINGERPRINT"
]
}
}
]
其中your.package.name需要替换成你应用的packageId。
sha256_cert_fingerprints里保存了指纹列表,一个应用可以有多个指纹,一般本地打包时一个指纹,上架到Google Play也有一个指纹。
获得本地打包指纹keytool -list -v -keystore path_to_your_keystore.jks
SHA256那一行就是需要的指纹信息。
assetlinks.json一定要放到你PWA域名每在网站的根目录。要能通过https://pws.domain/.well-known/assetlinks.json才行。
在bubblewrap build之后,会有一个.aab文件,把.aab文件上传到Google Play。通过Google Play审核后,需要把Google Play里的指纹更新到assetlinks.json里。
在Google Play Console后台,打开刚刚提交的PWA应用。
点击“设置”或“应用设置”。
选择“应用签名”。
在这里,你将看到与Google Play App Signing相关的信息,包括SHA-1和SHA-256指纹。