cordova入门基础教程及使用中遇到的一些问题总结


Posted in Javascript onNovember 14, 2017

前言

现在做项目为了节约成功,适配多平台 cordova不为是一个很好的选择。个人觉得以后也许是一个趋势!像一些知名的APP  比如支付宝  淘宝 好多都大量集成了HTML5 页面!像我们公司现在的APP 大多都是h5页面 感觉原生都没什么事情做了。可想而知学习cordova的重要性!

简介

Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码。Cordova支持如下移动操作系统:iOS, Android,ubuntu phone os, Blackberry, Windows Phone, Palm WebOS, Bada 和 Symbian。

入门第一步:下载资源库并集成到项目中来

去下载cordova 库的源码 可以去github上下载 也可以去官网下载。其实官网上的代码也是放到github上的!

官方网站:http://cordova.apache.org/

github资源下载地址:https://github.com/apache/cordova-ios   

本地下载地址:http://xiazai.3water.com/201711/yuanma/cordova-ios(3water.com).rar

使用 CocoaPods进行第三方库的管理 我之前用的是cordova3.8.0 前几天不久更新到了4.0.1 。 4.0.1 只支持8.0以上  以下的你用CocoaPods 更新会提示错误!注意一下就可以了!

platform :ios, '8.0'

pod 'Cordova', '~> 4.0.1'

入门第二步:如何在项目中正确的集成 cordova4.0.1 库

1. 配置 Config.xml   很重要

Config.xml is a global configuration file that controls many aspects of a cordova application's behavior. This platform-agnostic XML file is arranged based on the W3C'sPackaged Web Apps (Widgets)specification, and extended to specify core Cordova API features, plugins, and platform-specific settings.For projects created with the Cordova CLI (described in The Command-Line Interface), this file can be found in the top-level directory:

大致意思就是: config.xml 是一个全局配置文件,控制一个cordova应用行为的许多方面。这种平台无关的XML文件是基于w3c'spackaged Web应用程序设置(widgets)规范,并扩展到指定核心cordovaAPI功能,插件和平台的具体设置。与科尔多瓦CLI创建的项目(描述在命令行界面)

http://cordova.apache.org/docs/en/6.x/config_ref/index.html 官方详解

2. 显示html5页面需要一个容器 在这里使用CDVViewController类 进行html5的显示以及控制 当然也可以自定义一个容器继承CDVViewController类做一些定制功能。

如何使用如下:

self.cordovaManageVC= [[CordovaManageVCalloc]init];

self.cordovaManageVC.startPage=@"http://www.baidu.com";

[self.navigationControllerpushViewController:self.cordovaManageVCanimated:YES];

3. 设置用户代理

- (instancetype)init {

self= [superinit];

if(self!=nil) {

//设置用户代理 如不设置无法调用与H5定制的JavaScript方法进行交互

NSString* original = [CDVUserAgentUtiloriginalUserAgent];

NSString* userAgent = [originalstringByAppendingString:@"delegateUserName"];

self.baseUserAgent= userAgent;

}

returnself;

}

4. 自定义插件 需要使用到 cordova的CDVPlugin类 用子类来集成CDVPlugin 

/**

*返回控件

*

*@param command

*/

- (void)back:(CDVInvokedUrlCommand*)command;

定制完成之后需要在confing.xml 进行配置 

cordova入门基础教程及使用中遇到的一些问题总结

以上就是cordova 最基本的用法了;

使用 Cordova 遇到的一些问题

问题一

问题

[Error: Failed to find 'ANDROID_HOME' environment variable. Try setting setting it manually. Failed to find 'android' command in your 'PATH'. Try update your 'PATH' to inclde path to valid SDK directory.]
ERROR building one of the platforms: Error: cmd: Command failed with exit code

解决办法

ANDROID_HOME=D:\apps\Android\sdk
PATH=%PATH%;%ANDROID_HOME%\tools;%ANDROID_HOME%\platform-tools

问题二

问题

Error: 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

解决办法

从 https://services.gradle.org/distributions/ 下载最新gradle包并安装。

ANDROID_HOME=/home/kongxx/Android/Sdk
GRADLE_HOME=/apps/gradle-3.2.1
PATH=$PATH:$ANDROID_HOME/tools/:$ANDROID_HOME/platform-tools:$GRADLE_HOME/bin

问题三

问题

使用 “cordova build android” 打包的时候报错:Error: Could not find gradle wrapper within Android SDK.

$ cordova build android
CHCP plugin after prepare hook:
 config-file set to http://www.tjdr.info/EWT/chcp.json
ANDROID_HOME=/home/kongxx/Android/Sdk
JAVA_HOME=/opt/jdk8
Error: Could not find gradle wrapper within Android SDK. Might need to update your Android SDK.
Looked here: /home/kongxx/Android/Sdk/tools/templates/gradle/wrapper

解决办法

查看了一下 /home/kongxx/Android/Sdk/tools/templates/gradle/wrapper 目录,目录确实不存在,于是检查了一下 android-studio 环境,发现可以在 plugins/android/lib/templates 目录下包括上面的内容,于是,果断copy之。

$ cp -rf android-studio/plugins/android/lib/templates /home/kongxx/Android/Sdk/tools/

问题四

问题

使用Cordova打包时报错:Error: spawn EACCES

$ cordova build android
CHCP plugin after prepare hook:
 config-file set to http://www.tjdr.info/EWT/chcp.json
ANDROID_HOME=/home/kongxx/Android/Sdk
JAVA_HOME=/opt/jdk8
Subproject Path: CordovaLib
Error: spawn EACCES

解决办法

sudo chmod -Rf 755 ~/Android

问题五

问题

在 cordova 中使用浏览器测试的时候,默认启动的是 google-chrome 浏览器,比如:

cordova run browser

解决办法

可以使用 ?target 来指定想使用的浏览器。

cordova run browser --target=opera
cordova run browser --target=firefox

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对三水点靠木的支持。

Javascript 相关文章推荐
Prototype 学习 工具函数学习($方法)
Jul 12 Javascript
深入认识javascript中的eval函数
Nov 02 Javascript
javascript 回到顶部效果的实现代码
Feb 17 Javascript
Javascript中封装window.open解决不兼容问题
Sep 28 Javascript
jQuery滚动新闻实现代码
Jun 26 Javascript
在vue中实现简单页面逆传值的方法
Nov 27 Javascript
基于React Native 0.52实现轮播图效果
Aug 25 Javascript
JavaScript数组特性与实践应用深入详解
Dec 30 Javascript
WebGL学习教程之Three.js学习笔记(第一篇)
Apr 25 Javascript
Node.js Windows Binary二进制文件安装方法
May 16 Javascript
微信小程序+云开发实现欢迎登录注册
May 24 Javascript
JavaScript中的连续赋值问题实例分析
Jul 12 Javascript
JS实现获取汉字首字母拼音、全拼音及混拼音的方法
Nov 14 #Javascript
JS中图片压缩的方法小结
Nov 14 #Javascript
前端html中jQuery实现对文本的搜索功能并把搜索相关内容显示出来
Nov 14 #jQuery
Node.js使用Express.Router的方法
Nov 14 #Javascript
js精确的加减乘除实例
Nov 14 #Javascript
JavaScript插件Tab选项卡效果
Nov 14 #Javascript
vue中如何创建多个ueditor实例教程
Nov 14 #Javascript
You might like
Laravel推荐使用的十个辅助函数
2019/05/10 PHP
浅谈laravel框架sql中groupBy之后排序的问题
2019/10/17 PHP
JQuery Dialog的内存泄露问题解决方法
2010/06/18 Javascript
Chrome中JSON.parse的特殊实现
2011/01/12 Javascript
IE6/7/8中Option元素未设value时Select将获取空字符串
2011/04/07 Javascript
javascript-简单的计算器实现步骤分解(附图)
2013/05/30 Javascript
可兼容IE的获取及设置cookie的jquery.cookie函数方法
2013/09/02 Javascript
JS获取select的value和text值的简单实例
2014/02/26 Javascript
extjs 时间范围选择自动判断的实现代码
2014/06/24 Javascript
JavaScript基本语法学习教程
2016/01/14 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
json对象与数组以及转换成js对象的简单实现方法
2016/06/24 Javascript
JS 组件系列之Bootstrap Table 冻结列功能IE浏览器兼容性问题解决方案
2017/06/30 Javascript
vue对storejs获取的数据进行处理时遇到的几种问题小结
2018/03/20 Javascript
使用Python程序抓取新浪在国内的所有IP的教程
2015/05/04 Python
python编程实现随机生成多个椭圆实例代码
2018/01/03 Python
Python装饰器的执行过程实例分析
2018/06/04 Python
python直接获取API传递回来的参数方法
2018/12/17 Python
Python模拟登录之滑块验证码的破解(实例代码)
2019/11/18 Python
NumPy中的维度Axis详解
2019/11/26 Python
详解python中groupby函数通俗易懂
2020/05/14 Python
使用CSS3制作响应式导航菜单的方法
2015/07/12 HTML / CSS
使用postMessage让 iframe自适应高度的方法示例
2019/10/08 HTML / CSS
SportsDirect.com马来西亚:英国第一体育零售商
2018/11/21 全球购物
澳大利亚在线奢侈品时尚零售平台:Azura Runway
2021/01/13 全球购物
介绍一下linux文件系统分配策略
2012/11/17 面试题
幼师专业毕业生自荐信
2013/09/29 职场文书
优良学风班总结材料
2014/02/08 职场文书
525心理活动总结
2014/07/04 职场文书
毕业横幅标语
2014/10/08 职场文书
企业与个人合作经营协议书
2014/11/01 职场文书
2015年餐厅服务员工作总结
2015/04/23 职场文书
学校艾滋病宣传活动总结
2015/05/09 职场文书
Python 实现绘制子图及子图刻度的变换等问题
2021/05/31 Python
教你快速构建一个基于nginx的web集群项目
2021/11/27 Servers
详解Go语言中Get/Post请求测试
2022/06/01 Golang