主题
Cordova
环境搭建
- Node.js:
18.x npm i -g cordova,当前最新版本 12.x。- 各环境请参考 Cordova 平台支持。
初始化目录结构
参考:
bash
myapp/
├── config.xml # Cordova 主配置文件
├── merges/ # 特定于平台的 web 文件
│ ├── android/ # Android 平台特定的 web 文件
│ └── ios/ # iOS 平台特定的 web 文件
├── www/ # web 源码目录,包含 HTML、CSS、JS 等文件
├── platforms/ # 集成平台
│ ├── android/ # Android 平台相关代码和配置
│ └── ios/ # iOS 平台相关代码和配置
└── plugins/ # Cordova 插件
└── cordova-plugin-camera/ # 示例插件:Cordova 相机插件www
www/index.html 会加载 <script src="cordova.js"></script> 这段代码,但是你会发现 www 中并没有这个文件,其实 cordova.js 是在 Cordova 编译打包后再生成的。
config.xml
创建项目的命令是:cordova create hello-cordova com.example.hellocordova HelloCordova,其对应关系如下:
hello-cordova:项目目录名称;com.example.hellocordova:config.xml中<widget>标签的id属性;HelloCordova:config.xml中<widget>/<name>标签的值。
事件
js
document.addEventListener(
'deviceready',
function () {
console.log('Running cordova-' + cordova.platformId + '@' + cordova.version)
},
false,
)插件
参考:
Cordova 集成 Vue3 开发
参考 Demo:vue-cordova-project
创建一个 cordova 模板项目(以下称为 A);
创建一个 vue3 项目(以下称为 B);
将 A 中
config.xml复制到 B 的根目录下,内容自行调整;在 B 的
index.html中引入 cordova 文件(文件不存在没关系,Cordova 打包成 APP 后会自动生成);html<script src="cordova.js"></script>修改 B 编译后的目录名为
www;js// vite 为例 base: '/', build: { outDir: 'www' },当 B 的文件结构和 A 一样时,再通过命令行执行
cordova platform add android来添加平台,若目录结构出错,Cordova 会无法识别:Current working directory is not a Cordova-based project.命令行执行
cordova run android来打包 vue3 + Cordova 的集成项目。
如上,一个最基本的集成项目就搭建完成了。
APP 实时调试
注意:APP 实时调试其实没什么卵用,因为将服务更改为 本地服务 后,会找不到 cordova.js 文件,其原因就是本地没有该文件,该文件是 cordova 打包应用时才生成的。如果调试原生功能,还是需要打包应用后再来查看效果。不过,由于应用是运行在 WebView 之中的,所以可以在 Chrome 的搜索栏中输入 chrome://inspect/#devices 来进行调试。
- 本地运行 vue 项目,启动一个服务:
http://192.168.1.88:5173; - 将
config.xml中的<content src="index.html" />更改为<content src="http://192.168.1.88:5173/" /> - Cordova 重新打包应用。
常见问题
应用报错:et::ERR_CLEARTEXT_NOT_PERMITTED
- 在
YOUR_PATH\platforms\android\app\src\main路径下找到AndroidManifest.xml文件; - 在
<application>标签中添加android:usesCleartextTraffic="true"; - Cordova 重新打包应用。
APP 启动时默认 404
vue router 路由模式请使用 hash 模式 而非 history 模式。
