cordova学习笔记

来源:互联网 发布:淘宝网店店铺名称大全 编辑:程序博客网 时间:2024/04/30 13:03
最近开始学习cordova,因为网上关于cordova的资料很少,所以写一点笔记记录一下。

cordova是一个开源的程序开发框架,前身是PhoneGap,后来捐给了Apache,两个名字都有在用,cordova官网http://cordova.apache.org/。

使用cordova,需先安装node.js。去https://nodejs.org/en/下载安装,配好系统环境变量,详情请问度娘,和配JDK差不多。打开node.js,输入npm install -g cordova,回车,就开始下载安装cordova了,安装完成后,打开命令行,输入cordova验证一下有没有安装好。

cordova是的主要功能是实现应用程序多平台开发,它的主程序是一个网页应用,然后适配到各个平台上,比如在android上就是一个WebView应用。

新建项目:
打开命令行,输入 cordova create MyApp cn.com.myapp MyApp,回车。
前后分别是文件名和项目名,中间是包名。

cordova项目的主要文件:
platforms,plugins,www。

第一个是用来存放要支持的平台,第二个是存放要用到的插件,第三个就是主要的网页程序。

添加插件:
打开命令行,cd到项目里面,输入 cordova plugins add 插件名字,回车。
这时plugins文件夹下就有你添加的插件了。添加网络插件时写的是插件名字,添加本地插件时写的是路径+插件名字。cordova的插件很多,需要什么插件可以在这里搜索:http://cordova.apache.org/plugins/

如果没有适合的,还可以自己开发插件,然后添加本地插件到项目里。

添加平台:
打开命令行,cd到项目里面,输入 cordova platforms add 平台名字,回车。
然后platform文件夹下就有你添加的平台,如android、ios、firefoxOS、window、blackbarrey等等。
然后还要输入cordova prepare把工程更新到平台里面。
然后输入cordova build编译程序,输入cordova run 平台名 运行程序。

PS:如果插件的源代码有改变,用cordova prepare是无法更新到平台里的,需要用cordova plugins rm 插件名名 删除插件,再添加插件才能添加更新。

用cordova build时可能会卡在这个downloading http://services.gradle.org/distributions/gradle-2.2.1-all.zip,然后等很久后就会超时,大致两种报错:
1.java.net.unknownhostexception
2.java.net.socketexception:Connection reset
可能是因为网络问题没能下载所需数据包,用这个URL先下载
http://services.gradle.org/distributions/gradle-2.2.1-all.zip, 然后把gradle-2.2.1-all.zip放到C:\Users\Administrator\.gradle\wrapper\dists\gradle-2.2.1-all\2m8005s69iu8v0oiejfej094b , 解不解压都可以。

新建cordova项目后,要把index.html的安全权限去掉:
        <meta http-equiv="Content-Security-Policy" content="default-src 'self' data: gap: https://ssl.gstatic.com 'unsafe-eval'; style-src 'self' 'unsafe-inline'; media-src *">

cordova插件的java要想持续回调结果给JS,要声明PluginResult,把setKeepCallbackAsBool设为true,然后调用sentPluginResult:

PluginResult mPlugin = new PluginResult(PluginResult.Status.OK, array);
mPlugin.setKeepCallback(true);
callbackContext.sendPluginResult(mPlugin);

如果没有成功呢,可能是因为如下:
public boolean execute(final String action, final JSONArray args, final CallbackContext callbackContext) throws JSONException {
return false;
}
这里要return true才能回调。

0 0
原创粉丝点击