H5程序员如何利用cordova开发跨平台应用

时间:2022-09-06 23:30:00

什么是Cordova?

Cordova以前也叫PhoneGap,它提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风等。Cordova还提供了一组统一的JavaScript类库,以及为这些类库所用的设备相关的原生后台代码,简而言之,cordova就是连接H5和原生系统的桥。通过cordova就可以在H5页面上开发出类似原生APP的应用,而且还是跨平台的。

在windows上如何搭环境搭

1. 首先安装node.js.

H5程序员如何利用cordova开发跨平台应用

不要被这个nodejs吓住了,其实只不过是用它来安装cordova而已。下载对应平台的版本,一路下一步就完成了安装。

装完之后在命令行窗口输入下面的命令验证一下,如果能看到图示字样则表示安装成功:

node -v  

npm -v

  

H5程序员如何利用cordova开发跨平台应用

2.  下面开始安装cordova

H5程序员如何利用cordova开发跨平台应用

按照官方的安装方式:npm install -g cordova 可以安装成功,不过可能有点慢。我这里推荐淘宝npm镜像加速,在命令行下输入:

npm install -g cnpm --registry=https://registry.npm.taobao.org

稍等片刻就可以安装完npm镜像,然后用cnpm -v 能查看到版本号,是表示安装成功

H5程序员如何利用cordova开发跨平台应用

接下来在命令行中输入cnpm install cordova -g,耐心等待...

H5程序员如何利用cordova开发跨平台应用

出现这个提示,说明cordova已经安装好了。接下来创建一个android的app来试试。

为了开发一个能在android上运行的app,需要做一堆的小工作,需要有点耐心。其间可能因为网络被墙的原因,会下载失败,不过网上都有对应的解决方法。下面开始搭建这些附属的环境。

3. 安装jdk

H5程序员如何利用cordova开发跨平台应用

先点击Accept License Agreement 然后下载所需的版本。安装很简单,如果安装默认方式安装,则只需要一路点下一步就好了。

然后添加环境变量:我的电脑-->右键属性 --> 系统高级设置-->高级-->环境变量-->如图所示:

H5程序员如何利用cordova开发跨平台应用

接着在Path中添加如下代码,点击这里进行详情介绍.

 .;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar

最后安装adt-bundle-windows ,它里边集成了sdk和eclipse,省了不少事。考虑到被墙,我这里就直接贴别人的处理方法。详情点击

H5程序员如何利用cordova开发跨平台应用

解压出来,复制sdk的路径,加入环境变量。具体的操作和前面类似,我就不重复了,详情点击.

双击sdk manager.exe 开始更新,由于被墙的原因,很可能更新失败,(可恶的GFW,fk....). 这里贴上网友的解决方案,详情点击

需要钩选sdk-tools,platform-tools,build-tools,如果要模拟器,还要钩一个Android api ,如果搞不懂哪些是必需的,就多钩几个。比较慢,下载下来有几十个G。

网上还有说要安装Ant , 也有说cordova 6.0以后,都换了build工具了,不知道是真是假,反正我都装了。这里要注意,Ant1.9.x之后的zip包,并不像网上的贴子说的那样,复制bin目录到环境变量,而是要先在命令行下输入build.bat,进行构建,最后会生成build和dist目录,这个dist目录,及下面的lib,bin才是真正要加到环境变量中的内容。我晒一下win10上的效果图:

H5程序员如何利用cordova开发跨平台应用

好了,现在我们可以开始进入最有创造性的内容了。打开命令行,开始我的第一个HelloWorld

cordova create hello com.example.hello HelloWorld

cd hello

cordova platform add android

H5程序员如何利用cordova开发跨平台应用

如果提示build SUCCESS那么恭喜,编译成功!!

H5程序员如何利用cordova开发跨平台应用

如果出现下面的画面,则表示有sdk或依赖的包没有安装

H5程序员如何利用cordova开发跨平台应用

我就多次被卡在这个"Failed to install cordova-plugin-whitelist' 百度一圈无果,果断google, *, 如果没有添加任何cordova插件就报这个错误,肯定是少打了钩,再去钩一圈加来,一般就可以顺利通过了。

H5程序员如何利用cordova开发跨平台应用

提示我Android SDK platform 24那么我就把24的都钩上,这样总行了吧。有点慢,不过好在没有报错了。

接上手机(也可以在sdk manager中添加虚拟机)看看运行效果。手机需要在开发模式中钩选允许调式,然后手机上允许这台计算机连接。然后就输下面的命令:

cordova run H5程序员如何利用cordova开发跨平台应用

如果不出意外,你的手机上就会生成一个叫hello的应用,启动之后就是一个cordova的logo. 接下来就是常规的h5开发,如果有用过eclipse的话,可以通过它进行调试,我先做一个简单的,直接用sublimeText进行编写。找到hello目录里边的www,那里是整个h5的根目录,每次运行cordova build 或 run都会用到这里边的文件。

H5程序员如何利用cordova开发跨平台应用

如果要访问原生系统提供的功能,需要用到cordova的插件,比如调用系统对话框来代替alert弹窗,就需要先安装cordova的Dialog插件,比起前面的操作,这个简单,通常不会遇到问题。这里有官方例子. 写的有点罗嗦,简单一句话就是: cordova plugin add 插件名 或git地址

完了之后,就可以在js中使用了,具体的使用方法参考插件官方的说明。

前面说安装插件可能不会有问题,但是当你重新cordova build的时候,可能就会报错了,比如:

You have not accepted the license agreements of the following SDK components:
[Android Support Repository].
Before building your project, you need to accept the license agreements and complete the installation of the missing components using the Android Studio SDK Manager.
Alternatively, to learn how to transfer the license agreements from one workstation to another, go to http://d.android.com/r/studio-ui/export-licenses.

  说什么鬼协义没有接受,搞半天也没有弄懂,反正我安装sdk的都是点了aceept的,不点也不让安装啊,真是不明白。留着以后慢慢研究,如果有这方面的解决方法,请告诉我一下,谢谢。【PS:终于找到这个问题的解决方法。其实错误提示中写的很清楚,第一行就写了SDK Manager中钩选缺失的扩展组件就好。是我那天过于急燥,没有看清】还有一个问题没有很好的解决,在js中的对象用console.log在eclipse中看不到,只有一个[object object].目前没有很好的办法,想到可能的方法就是把对象转成json字符串或遍厉出来再打印。或用npm -g install weinre这样的远程调式工具(现在有点过时了);更好的方式是使用google浏览器自带的工具,详情请点击 需要自备*哦

H5程序员如何利用cordova开发跨平台应用

导入Eclipse

在命令行下启动完app之后,没有任何输出提示,这显然不方便调试。所以需要将项目导入进eclipse进行调式,导入方法很简单,没有太多讲究,右键选择导入--> android 已存在的项目就好了

H5程序员如何利用cordova开发跨平台应用

总结

  通过不断的折腾,总算是在手机上运行成功了。最大困难可能是前面的环境搭建,一方面是网络被墙,一方面是需要对android/ios这方面的配置有一定知识储备。遇到困难不要慌,不断的搜索,去官方看看文档,错误提示。一个问题一个问题的解决,完成的时候,就会收获一份成功的喜悦。

资源列表

中文参考

H5程序员如何利用cordova开发跨平台应用的更多相关文章

  1. 10款Mac上程序员装机必备的开发工具推荐和下载

    10款Mac上程序员装机必备的开发工具推荐和下载 使用Mac的用户主要有两大类:设计师和程序员,为各位程序员童鞋推荐10个Mac上非常棒的开发工具和辅助工具,分享软件专题[10款Mac上程序员装机必备 ...

  2. 3名程序员被抓!开发“万能钥匙”APP,撬走3个亿

    来自:程序员头条 报道 又有 3 名程序员被抓!开发"万能钥匙"APP,撬走 3 亿! 前几天,据央视新闻报道,上海*机关接到共享单车企业报案,随后破获了一起共享单车万能解锁 A ...

  3. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的*,有的*能提高软件性能,而有的*似乎是以牺牲性能为代价换 ...

  4. 作为一个程序员怎么通过android开发赚钱

    ​ 上面是一个程序员通过Android开发每天的收入,信则有! 自己学安卓差不多,有一年了.我本来是从事javaweb开发的,可能学习安卓上手会快点.其实安卓没有那难 .首先开发安卓程序,要有一个,开 ...

  5. 非IT行业大企程序员讲述MIS系统开发案例

      雪莉叹了一口气,调整了一下被汗水濡湿的刘海,然后向后靠在办公椅中,伸手在电脑键盘上输入了一些内容, 最后拿起印刷着房地产广告的扇子,边扇风边等待着.   她的工位在办公室的东侧角落,侧靠着窗.此时 ...

  6. .Net程序员快速学习安卓开发-布局和点击事件的写法

    关注今日头条-做全栈攻城狮,学代码也要读书,爱全栈,更爱生活.提供程序员技术及生活指导干货. 本系列课程 致力于老手程序员可以快速入门学习安卓开发.系统全面的从一个.Net程序员的角度一步步学习总结安 ...

  7. 贯穿程序员一生的必备开发技能——debug

    1.什么是debug debug是一种运行模式,用来跟踪程序的走向,以及跟踪程序运行过程中参数的值的变化. 2.debug的作用 debug一般用来跟踪代码的运行过程,通常在程序运行结果不符合预期或者 ...

  8. 2018年,Java程序员转型大数据开发,是不是一个好选择?

    近日网上有一篇关于Java程序员职场生存现状的文章“2017年 Java 程序员,风光背后的危机”,在Java程序员圈子里引起了广泛关注和热议. 2017年,Java 程序员面临更加激烈的竞争. 不得 ...

  9. 《程序员的呐喊》:一个熟悉多种语言的老程序员对编程语言、开发流程、google的战略等的思考,比较有趣。 五星推荐

    作者熟悉二三十种编程语言,写了20多年代码.本书是作者对编程语言.开发流程.google的战略等的思考.比较有趣. 前面部分是作者对编程语言的一些思考.作者鄙视C++, Java,面向对象.比较有趣的 ...

随机推荐

  1. 【转】[Intel/Nvidia]Ubuntu 16.04 LTS Intel/Nvidia双显卡切换

    1.在Unity中搜索 "Additional Drivers" 2.打开并选择以下选项 3.打开终端并输入 sudo apt-get install nvidia-361 4.安 ...

  2. C/C++源代码从写完到运行发生了什么

    有时候经常听到一些不明觉厉的词语,什么编译啊链接啊语义分析啊的,就找书来看看,把笔记画成了图: 编译器干了些啥呢,如下图: 参考书:<程序员的自我修养——链接.装载与库>,<深入理解 ...

  3. UGUI text image 等加Shadow OutLine等

    Text,文本控件,同NGUI中的Label.支持动态字库.大小调节.富文本(基本的html标签格式)等等.描边.阴影等需要Effect组件支持.Add Component-->UI--> ...

  4. C&num;编程使用到的几种调试方式

    一.前言: 使用C#语言从08年算起,到现在也有6个年头的时间了. 但 是会使用调试进行辅助编程的时间,却只有5个年头,其中第一年里面,只能傻傻地敲着老师给的案例,不会写就一遍一遍重复手写编码,上机练 ...

  5. 如何生成publish windows app 用到的 pfx 文件

    参考文章 https://msdn.microsoft.com/en-us/library/windows/desktop/jj835832(v=vs.85).aspx 1.在项目中查找.appxma ...

  6. 《Velocity java开发指南》中文版&lpar;下&rpar;转载

    文章出自:http://sakyone.iteye.com/blog/524292 8.Application Attributes Application Attributes (应用程序属性)是和 ...

  7. BST&lpar;Binary Search Tree&rpar;

    原文链接:http://blog.csdn.net/jarily/article/details/8679280 /****************************************** ...

  8. 两种方法:VS2008下C&plus;&plus;窗体程序显示控制台的方法——在QT程序中使用cout和cin

    老蔡写了一个基于QT的窗体程序,而过去写的类的调试信息都是用cout显示的,苦于窗体程序无法显示cout信息很多信息都看不到,于是就想到让控制台和窗体同时显示.显示控制台方法如下 1.项目(或者叫“工 ...

  9. fetch请求

    get请求 return fetch('https://xxx.xxx.com/xxx.json') .then(response => response.json()) .then(respo ...

  10. react添加方法的两种形式

    1.使用bind <button onClick={this.test.bind(this)}>确定</button> 2.使用箭头函数 <button onClick= ...