依赖环境概述:node.js、jdk8、android-sdk、gradle

写在前面:安装cordova要注意版本兼容问题!!!

由于我的电脑是window7的,最高只能安装node.js13版本的,在后续安装cordova时,只能选择cordova9(虽然cordova已经出到11了。所以在安装cordova时要指定安装的版本,不然会默认安装最新的);由于cordova9的限制,后续在android-sdk配置android版本时要选择android9(API28)

一、环境安装

1.安装node.js

去官网下载安装包,正常安装就行,没有特别需要注意的(略过)

2.安装jdk8

在oracle官网找到JDK8

然后傻瓜式安装,安装完成后 需要配置环境变量
a、新建系统变量,变量名:JAVA_HOME ,变量值为 jdk 的安装路径(一般默认是C:\Program Files\Java)
b、新建系统变量,变量名:CLASSPATH ,变量值: .;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar(注意:变量值开头是英文句号)
c、修改Path变量,增加:%JAVA_HOME%\bin
d、检验安装配置是否成功,cmd中输入:java -version 获取当前安装的 jdk 的版本信息;在输入:javac.exe

3.安装android-sdk

去:https://www.androiddevtools.cn/ 下载

下载的是.exe的话,需要自己安装一下(正常安装即可),下载.zip的话,就直接解压到想要安装的目录下即可(无需安装)
安装完成后,运行SDK Manager.exe

下载Android SDK Tools、Android SDK Platform-tools、Android SDKBuild-tools、Android 9(API 28)和extras文件夹中的东西



下载完成后,需要配置环境变量
a、新建系统变量,变量名:ANDROID_HOME ,变量值 SDK 的安装路径
b、修改Path变量,增加:%ANDROID_HOME%\platform-tools;%ANDROID_HOME%\tools
c、检验Android SDK是否安装成功,cmd中输入:adb version

4.安装cordova

安装最新版本就是:npm install -g cordova
安装指定版本(cordova9):npm install -g cordova@9.x
cmd中输入 cordova -v 查看版本号证明安装成功

5.安装gradle

选择下载binary-only版本下载

然后解压(解压到任意目录都可)
然后配置环境变量
a、新建系统变量,变量名:GRADLE_HOME,变量值 解压的路径
b、修改Path变量,增加:%GRADLE_HOME%\bin
c、检验是否安装成功,cmd中输入:gradle -v

二、项目创建

创建项目:

进到你所要创建项目的目录下,cmd中输入:

$ cordova create hello com.example.hello HelloWorld

添加平台:

cd hello中

 cordova platform add ioscordova platform add android

要检查您当前的平台集:

 cordova platform ls

构建

构建之前先检查环境是否满足构建平台的要求:

 cordova requirements

如下图:如果有环境不满足,则先弄好环境

运行以下命令为所有平台构建项目:

cordova build

特定平台下构建:

cordova build android

构建完成后会在:xxx\hello\platforms\android\app\build\outputs\apk\debug目录下生成apk文件(就可以在手机上安装看效果啦~)

三、插件功能

1.相机插件

安装插件:

 cordova plugin add cordova-plugin-camera

使用:

要写在onDeviceReady函数中(实际项目中发现,不写在onDeviceReady函数中也是可以使用cordova插件的,只要保证调用时设备和页面加载完毕即可。比如有时在另一个页面中要使用别的页面的方法,就不能访问到onDeviceReady函数及写在onDeviceReady里面的方法,所以只能写在onDeviceReady函数外面了)

navigator.camera.getPicture(function (data) {// 拍照成功后执行的业务操作...document.getElementById("myImage").src = data;},function (message) {// 失败alert(message); },{destinationType:Camera.DestinationType.FILE_URI,cameraDirection:Camera.Direction.BACK
})

2.获取地理位置插件

ios用cordova官方提供的:cordova-plugin-geolocation 插件
android用基于百度Android 定位sdk的:cordova-plugin-baidugeolocation 插件

申请AK:

要使用百度Android 定位sdk要先申请百度地图的AK,具体步骤查看百度地图官网https://lbsyun.baidu.com/介绍:https://lbsyun.baidu.com/index.php?title=android-locsdk/guide/create-project/key

安装插件:

cordova plugin add cordova-plugin-baidugeolocation --variable ANDROID_KEY=刚刚申请的安卓AK
cordova plugin add cordova-plugin-geolocation

使用:

         //判断设备类型,android使用百度的定位,ios使用cordova-plugin-geolocationif(device.platform == "Android"){BaiduGeolocation.getCurrentPosition(function (result) {// 获取定位成功后执行业务操作...alert(JSON.stringify(result))}, function (error) {alert(JSON.stringify(error))}, {timeout: 3000});}else {var options = {enableHighAccuracy: true,timeout: 5000,maximumAge: 3000}var onSuccess = function(position) {alert('Latitude: '          + position.coords.latitude          + '\n' +'Longitude: '         + position.coords.longitude         + '\n' +'Altitude: '          + position.coords.altitude          + '\n' +'Accuracy: '          + position.coords.accuracy          + '\n' +'Altitude Accuracy: ' + position.coords.altitudeAccuracy  + '\n' +'Heading: '           + position.coords.heading           + '\n' +'Speed: '             + position.coords.speed             + '\n' +'Timestamp: '         + position.timestamp                + '\n');};// onError Callback receives a PositionError objectfunction onError(error) {alert('code: '    + error.code    + '\n' +'message: ' + error.message + '\n');}navigator.geolocation.getCurrentPosition(onSuccess, onError, options);}

注意:安卓一定要指定 timeout参数,如果地理定位服务关闭,onError则在间隔后调用回调timeout。如果timeout未指定参数,则不会调用回调。

3.应用浏览器插件

在cordova的壳子中,要跳转到其他第三方的页面(在服务器上部署的应用),不能直接使用window.open的方式(这种方式跳转会跳到手机的浏览器上访问了,就跳出了app本身),要使用应用浏览器插件进行跳转
但是在应用浏览器中,不能直接访问手机的原生功能了(相机等等),要通过消息机制来实现

安装插件

cordova plugin add cordova-plugin-inappbrowser

使用:

cordova.InAppBrowser.open(url, target, options)
如:
cordova.InAppBrowser.open('http://trustee.betatime.com.cn:27910/cordovawebtest?user=beta123', '_self', 'location=no,zoom=no');

具体的 target, options参数详解参看cordova官网
由于安全和白名单的问题,这样跳转会出现无法访问页面的情况,还需要:
/config.xml文件 中添加<allow-navigation>标签来配置导航白名单:

<allow-navigation href="http://trustee.betatime.com.cn:27910/*/*" />

/platforms/android/app/src/main/AndroidManifest.xml文件 中的 <application> 标签中添加android:usesCleartextTraffic=“true”:

<application android:hardwareAccelerated="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:usesCleartextTraffic="true">

实现一个页面,既有服务器上的部分,也有本地app的页面功能


原理:使用inappbrowser打开服务器上的页面,使用inappbrowser提供的脚本注入方法叫js代码注入到页面上,形成服务器上的页面也有本地页面的效果

//跳转服务器页面
var ref = cordova.InAppBrowser.open('https://xxx.xxx' , '_blank', 'location=no,zoom=no')
// 添加监听,当页面加载完成loadstop后,会调用脚本注入函数replaceFooter
ref.addEventListener('loadstop', replaceFooter);function replaceHeaderImage() {ref.executeScript({ // 注入的脚本代码code: "var div=document.createElement('div'); div.style.backgroundColor='orange';div.style.width='100px';div.style.height='100px';var   body=$('body');body.append(div)"}, function() { // 注入成功后回调alert("Element Successfully Hijacked");});
}

注入代码多的时候,可以直接注入一个js文件

function replaceHeaderImage() {ref.executeScript({ file: "myscript.js" // 注入的脚本文件}, function() { // 注入成功后回调alert("Element Successfully Hijacked");});
}

4.发送短信插件

安装插件

cordova plugin add cordova-sms-plugin

使用

// 手机自带的短信应用界面发短信
function sendSms(message){var options = {replaceLineBreaks: false, // true to replace \n by a new line, false by defaultandroid: {intent: 'INTENT'  // send SMS with the native android SMS messaging}};var success = function () { console.log('打开短信成功'); };var error = function (e) { alert('短信发送失败:' + e); };try {//  window.sms.send("15271485839", "message是要发送的短信内容", options, success, error);window.sms.send("", message, options, success, error);} catch (error) {console.log('sendSms:error'+ JSON.stringify(error))}
}

5.二维码扫码插件

安装插件

cordova plugin add phonegap-plugin-barcodescanner

使用

 cordova.plugins.barcodeScanner.scan(function(result) {//扫码成功后执行的回调函数// alert("收到一个二维码n" +// "扫码文字结果: " + result.text + "n" +// "格式: " + result.format + "n" +// "是否在扫码页面取消扫码: " + result.cancelled);// 扫码成功后执行业务操作。。。。。。},function(error) {//扫码失败执行的回调函数console.log("Scanning failed: " + error);}, {// preferFrontCamera: true, // iOS and Android 设置前置摄像头//  showFlipCameraButton: true, // iOS and Android 显示旋转摄像头按钮//  showTorchButton: true, // iOS and Android 显示打开闪光灯按钮torchOn: false, // Android, launch with the torch switched on (if available)打开手电筒prompt: "在扫描区域内放置二维码", // Android提示语resultDisplayDuration: 0, // Android, display scanned text for X ms.//0 suppresses it entirely, default 1500 设置扫码时间的参数formats: "QR_CODE", // 二维码格式可设置多种类型orientation: "portrait" // Android only (portrait|landscape),//default unset so it rotates with the device在安卓上 landscape 是横屏状态// disableAnimations: true, // iOS     是否禁止动画// disableSuccessBeep: false // iOS and Android  禁止成功后提示声音 “滴”})

6.获取app版本插件

安装插件

cordova plugin add cordova-plugin-app-version

使用

cordova.getAppVersion.getVersionNumber().then(function (version) {console.log('获取版本:'+ version)localStorage.setItem('.appVersion', version)
});

7.指纹插件

安装插件

cordova plugin add cordova-plugin-android-fingerprint-auth

使用

//点击同意开通指纹时,先验证手机是否支持指纹,不支持则提示
$('#fp-dialog').on('click', '.weui-dialog__btn', function(){$(this).parents('.js_dialog').fadeOut(200);$(this).parents('.js_dialog').attr('aria-hidden','true');$(this).parents('.js_dialog').removeAttr('tabindex');if($(this).attr('id') === 'open'){ // 点击同意开通指纹FingerprintAuth.isAvailable(isAvailableSuccess, isAvailableError);}else{// fingerprint: 是否开通指纹标志// LAST_MODE:登陆方式;0:是账号密码登陆,1是指纹登陆(手机需求一般开通了指纹就默认指纹登陆方式优先)localStorage.setItem(concatCacheKey('fingerprint'), false)localStorage.setItem(concatCacheKey('LAST_MODE'), 0)}localStorage.setItem(concatCacheKey('firstLogin'), false)});function isAvailableSuccess(result) { // 支持指纹if (result.isAvailable) {localStorage.setItem(concatCacheKey('fingerprint'), true)localStorage.setItem(concatCacheKey('LAST_MODE'), 1)}else{localStorage.setItem(concatCacheKey('fingerprint'), false)localStorage.setItem(concatCacheKey('LAST_MODE'), 0)}
}function isAvailableError(message) { // 不支持指纹alert("获取指纹支持失败");
}

8.打开手机系统设置插件

安装插件

cordova plugin add cordova-open-native-settings

使用

 window.cordova.plugins.settings.open(["settings", true], function() {//打开系统设置成功// alert('opened settings');},function () {alert('打开手机系统设置失败');});

9.发送系统通知插件

安装插件

cordova plugin add cordova-plugin-local-notification

使用

//有数据,发通知
var noticeParam = {id: "test001"
}window.cordova.plugins.notification.local.schedule({id: Math.random(),title: "消息的title",text: "消息的内容",data: noticeParam, // 后面点击的通知后,要根据消息通知的参数来执行业务操作foreground: true,wakeup: true,lockscreen: true
})
     // 点击了通知cordova.plugins.notification.local.on("click", function (notification) {let id= JSON.parse(notification.data).id;//执行业务操作//......});

10.app后台运行插件

原因:当退出app后,app不会在后台运行,就会导致手机收不到系统通知消失,所以要使用后台运行插件,使app保持后台运行

安装插件

cordova plugin add cordova-plugin-background-mode

使用

cordova.plugins.backgroundMode.setDefaults({title: '"app名称xx"正在运行',// text: '执行后台任务', // 后台任务说明(可选)// color: '#fff', // hex format like 'F14F4D'resume: true, // 默认情况下,应用程序将在点击通知时进入前台。 如果是假的,插件不会到达前台。(可选)hidden: false,// icon: 'www/static/assets/images/title-icon.png',// bigText: false,silent: false // 如果true插件不会显示通知。 默认值为false (可选)})// 如果应用程序移到后台,模式将变为活动状态cordova.plugins.backgroundMode.enable();

cordova项目全过程相关推荐

  1. cordova项目打包并更新腾讯开放平台安装包、加固重新签名步骤

    打包apk 1.在webstorm中打开cordova项目,执行 cordova build android 这样会生成debug版的apk. 2.打包完成后会提示输出目录 一般是: /项目根目录/p ...

  2. cordova项目怎样修改版本号

    cordova项目打包成apk上传到应用包时, 在腾讯开放平台更新安装包时,需要当前的版本大于已经提交的版本. 打开cordova项目 找到config.xml 修改最上面的version.

  3. cordova项目适配iPhoneX

    iPhoneX适配踩坑浅谈 Apple每次退出新尺寸的iphone都会掀起一番适配风波,这次没有下巴但有刘海的iPhoneX更是如此,网传横屏下的适配动画更是令不少人汗颜. 其实对于Native Ap ...

  4. cordova 项目添加splash启动界面

    需求:cordova项目启动添加启动界面,并在设备初始化完成后自动隐藏splash 1.新建项目 cordova create Mypro com.test.pro proName 2.添加平台 cd ...

  5. (阿里云)Linux部署SSM项目全过程

    首先安装好jdk, 然后安装好mysql 具体步骤可以看我的这篇博客: (阿里云)Linux部署springboot项目全过程_向上的狼的博客-CSDN博客 如果你使用的是 Spring Boot,内 ...

  6. Cordova项目IphoneX适配,结合BUI前端框架项目(需要修改原生代码)

    先吐槽一下苹果,每年都要出一下幺蛾子,你还没有办法. Hybrid  App适配只能说一开始研究难一点,后面基本没什么问题,下面就把我自己的研究出来的跟大家分享一下. 部分参考: 点击打开链接 1.m ...

  7. cordova技术集(一)Hello,cordova! 如何创建cordova项目。

    cordova技术集(一)Hello,cordova!如何创建cordova项目. Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄 ...

  8. EPC项目全过程精细化管控21个关键点,一个也不能少!

    文章来源:EPC项目全过程精细化管控21个关键点,一个也不能少! EPC即为工程总承包模式,是设计采购施工一体化(EPC即Engineering(设计).Procurement(采购).Constru ...

  9. cordova项目搭建

    Cordova开发环境安装 安装cordova命令行工具 安装命令 npm install -g cordova cordova项目的创建.平台添加.打包等都需要cordova命令行工具 // 创建c ...

最新文章

  1. 数据结构实验之链表五:单链表的拆分-sdut
  2. 具有SSM框架的CRUD与多条件查询
  3. python 报错 AttributeError: module ‘time‘ has no attribute ‘clock 解决方法
  4. 使用下列 else-if 排列来处理多个条件:
  5. 雷林鹏分享:C# 匿名方法
  6. 鸿蒙硬件HI3861开发环境搭建
  7. CentOS6.x安装mongodb3.4.x
  8. Java程序设计语言基础01:绪论
  9. python能做什么工作-python语言能做什么工作
  10. oracle怎样停止到数据,oracle启动和停止
  11. 算法实现 int sqrt(int x) 函数。
  12. [交换最小值和最大值] 本题要求编写程序,先将输入的一系列整数中的最小值与第一个数交换,然后将最大值与最后一个数交换,最后输出交换后的序列。 注意:题目保证最大和最小值都是唯一的。
  13. ue编辑器漏洞_7. 编辑器漏洞整理
  14. 在maven启动时tomcat端口冲突问题 Address already in use: JVM_Bind null:8080
  15. Matlab实现电子钢琴
  16. 从不温不火到炙手可热:语音识别技术简史
  17. Cannot add property 1, object is not extensible
  18. IC验证培训——SystemVerilog通用程序库(下)
  19. U盘格式的区别有哪些?
  20. Axure高保真原型|音乐播放器原型

热门文章

  1. jQuery对象合并
  2. matlab验证对称三相电路,实验四period;三相交流电路 - 范文中心
  3. 玩转TM4C1294XL(2)——建立Keil工程模板
  4. 怎样为网站开发android客户端
  5. 操作系统内核知识介绍
  6. 求助!偏相关分析的这个图是怎么做出来的?
  7. 判断sqlite数据库中表是否存在的方法
  8. VisionPro与C# 界面显示视觉结果图像
  9. BUUCTF RE reverse2
  10. QQ邮箱无法收到系统邮件的问题处理