什么是Cordova?

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

在windows上如何搭环境搭

1. 首先安装node.js.

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

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

node -v  

npm -v

  

2.  下面开始安装cordova

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

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

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

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

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

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

3. 安装jdk

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

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

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

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

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

解压出来,复制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上的效果图:

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

cordova create hello com.example.hello HelloWorld

cd hello

cordova platform add android

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

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

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

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

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

cordova run 

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

如果要访问原生系统提供的功能,需要用到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浏览器自带的工具,详情请点击 需要自备梯子哦

导入Eclipse

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

总结

  通过不断的折腾,总算是在手机上运行成功了。最大困难可能是前面的环境搭建,一方面是网络被墙,一方面是需要对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. Modify Branding of FreeCAD

    Modify Branding of FreeCAD eryar@163.com This article describes the Branding of FreeCAD. Branding me ...

  2. 微信小程序前端源码逻辑和工作流

    看完微信小程序的前端代码真的让我热血沸腾啊,代码逻辑和设计一目了然,没有多余的东西,真的是大道至简. 废话不多说,直接分析前端代码.个人观点,难免有疏漏,仅供参考. 文件基本结构: 先看入口app.j ...

  3. Spring配置文件标签报错:The prefix "XXX" for element "XXX:XXX" is not bound. .

    例如:The prefix "context" for element "context:annotation-config" is not bound. 这种 ...

  4. Android之数据存储的五种方法

    1.Android数据存储的五种方法 (1)SharedPreferences数据存储 详情介绍:http://www.cnblogs.com/zhangmiao14/p/6201900.html 优 ...

  5. Toast显示图文界面——Android开发之路1

    Toast的多种使用方法 Toast其实是一个功能特别强大的组件,不仅仅可以吐司一个文本内容,还可以吐司图片以及图文混排的界面.具体用法如下: 第一种:简单的纯文本内容的吐司: Toast.makeT ...

  6. Pramp mock interview (4th practice): Matrix Spiral Print

    March 16, 2016 Problem statement:Given a 2D array (matrix) named M, print all items of M in a spiral ...

  7. 机器指令翻译成 JavaScript —— No.7 过渡语言

    上一篇,我们决定使用 LLVM 来优化程序,并打算用 C 作为输入语言.现在我们来研究一下,将 6502 指令转换成 C 的可行性. 跳转支持 翻译成 C 语言,可比 JS 容易多了.因为 C 支持 ...

  8. Spring8:一些常用的Spring Bean扩展接口

    前言 Spring是一款非常强大的框架,可以说是几乎所有的企业级Java项目使用了Spring,而Bean又是Spring框架的核心. Spring框架运用了非常多的设计模式,从整体上看,它的设计严格 ...

  9. Android,适合Restful网络请求封装

    借助volley.Gson类库. 优点 网络请求集中处理,返回值直接为预期的对象,不需要手动反序列,提高效率,使用时建立好model类即可. 使用效果 DataProess.Request(true, ...

  10. 命令行查看Windows激活信息(win7、win8、win10...)

    使用:Win+ R 组合键,打开运行命令框,复制命令,粘贴后回车. slmgr.vbs -xpr 查询Windows是否永久激活slmgr.vbs -dlv 查询到Windows的激活信息,包括:激活 ...