Vue+cordova打包混合app


cordova介绍

可以把html css js 写的代码打包成app,还可以让js调用原生的api.




安装cordova

cnpm i cordova -g
//或者
npm i -g cordova --registry=https://registry.npm.taobao.org


安装cordova报错的解决办法

  • 卸载 cordova npm uninstall -g cordova
  • 删掉 C:\Users\Hub\AppData\Roaming\npm\node_modules\ 中的cordova
  • 重试上面的bash命令


查看cordova版本

cordova -v

androiid vue android混合开发简书 vue 混合app_Android


创建项目

cordova  create 项目名称
cordova create 项目名称 com.公司名.项目名 类名 (建议使用这种)
cordova create cordovademo02  com.xxx.cordova  cordovademo02

创建项目的时候注意包名称,发布上下打包的时候要用到包名称。

  • cd到项目文件夹中,添加android的平台到项目里面
cordova platform add android

androiid vue android混合开发简书 vue 混合app_android_02

  • 把项目导入到android studio进行调试 (或者运行 cordova run android)
  • 运行项目
  • android手机要连上电脑,并且android手机必须开启调试模式
  • android studio 必须按照手机对应的sdk
  • 修改项目完成 cordova prepare

androiid vue android混合开发简书 vue 混合app_cordova_03


androiid vue android混合开发简书 vue 混合app_Android_04


androiid vue android混合开发简书 vue 混合app_创建项目_05

  • 执行命令 cordova prepare

androiid vue android混合开发简书 vue 混合app_Android_06

  • 重新build


  • cordova 里面要调用原生的功能, cordova plugin add 插件名称
  • cordova plugin list 看当前有哪些插件



cordova打包vue项目成app

三步走

  • npm run build 发布vue项目 注意图片的目录路径
  • 把vue打包后的静态资源赋值到cordova项目里面
  • 运行cordova prepare
  • 运行cordova build 打包成apk
  • 生成签名可以参考这个


cordova 打包遇到ajax请求没有数据返回

前言:为保证用户数据和设备的安全,Google针对下一代 Android 系统(Android P) 的应用程序,将要求默认使用加密连接,这意味着 Android P 将禁止 App 使用所有未加密的连接,因此运行 Android P 系统的安卓设备无论是接收或者发送流量,未来都不能明码传输,需要使用下一代(Transport Layer Security)传输层安全协议,而 Android Nougat 和 Oreo 则不受影响。


因此在Android P 使用HttpUrlConnection进行http请求会出现以下异常
解决的办法简单来说可以通过在AnroidManifest.xml中的application显示设置

<application android:usesCleartextTraffic="true">

androiid vue android混合开发简书 vue 混合app_cordova_07








在Android P系统的设备上,如果应用使用的是非加密的明文流量的http网络请求,则会导致该应用无法进行网络请求,https则不会受影响,同样地,如果应用嵌套了webview,webview也只能使用https请求。

二、针对这个问题,有以下三种解决方法:



(1)APP改用https请求

(2)targetSdkVersion 降到27以下

(3)更改网络安全配置


cordova build命令安装 报错Failed to find 'ANDROID_HOME' environment variable.

配置环境变量 参考


Could not find an installed version of Gradle either in Android Studio, or on your system to install the gradle wrapper. Please include gradle in your path, or install Android Studio

解决办法参考:


Failed to apply plugin [id 'com.android.internal.version-check'] Minimum supported Gradle version is 6.1.1. Current version is 4.10.3. If using the gradle wrapper, try editing the distributionUrl in E:\code\cordovademo02\gradle\wrapper\gradle-wrapper.properties to gradle-6.1.1-all.zip 的报错

解决办法 :gradle 插件版本 和gradle版本相对应。

androiid vue android混合开发简书 vue 混合app_cordova_08




androiid vue android混合开发简书 vue 混合app_gradle_09

  • 打包

androiid vue android混合开发简书 vue 混合app_gradle_10


androiid vue android混合开发简书 vue 混合app_android_11


androiid vue android混合开发简书 vue 混合app_gradle_12

  • 打包未签名的apk
cordova build android --release

androiid vue android混合开发简书 vue 混合app_android_13


androiid vue android混合开发简书 vue 混合app_cordova_14


处理debug-apk无法在真机和模拟器运行的问题

  • 需要在build.gradle文件中添加下方语句
android.injected.testOnly=false

androiid vue android混合开发简书 vue 混合app_Android_15

apk签名


vue中调用原生的api

  • 使用vue-cordova插件



  • 直接使用

index.html引入cordova.js 并定义全局变量让vue组件里面直接使用cordova插件。