[TOC]
# 什么是Cordova
Apache Cordova是一个开源的移动开发框架。允许你用标准的web技术-HTML5,CSS3和JavaScript做跨平台开发。 应用在每个平台的具体执行被封装了起来,并依靠符合标准的统一API绑定去访问每个设备的功能,比如说:传感器、数据、网络状态等。
# 使用Apache Cordova的人群
1. 移动应用开发者,想扩展一个应用的使用平台,而不通过每个平台的语言和工具集重新实现。
2. web开发者,想包装部署自己的web App将其分发到各个应用商店门户。
3. 移动开发人员,希望将原生应用程序组件与可以访问设备级API的WebView(特殊浏览器窗口)混合,**或者你想在原生和WebView组件之间开发一个插件接口。**。
# Cordova 适用于你的项目吗?
1. Apache Cordova是一种开发移动App的很好选择,它能以合理代价将App快速地交付市场。
2. 事实显示,大部分使用Cordova创建的App是不成功的,并且由于这些App表现不佳,用户在失望之余很快就弃用了它们。
3. 要降低失败的风险,重在了解Cordova非常适合开发哪些类型的App。
4. Cordova不适用于医疗、游戏和金融App,但非常适合于商业、教育和聊天App,最好是生活、广告和新闻App。
# [架构](http://cordova.apache.org/docs/en/8.x/guide/overview/index.html#architecture)
~略
# 参考
## plugin.xml
`plugin.xml` 的意义就是把插件所需要的资源按着规定的格式写好,工程调用插件的时候会按着这些配置到指定位置寻找资源并整合到工程对应的位置里。
示例讲解:
~~~
<?xml version="1.0" encoding="UTF-8" ?>
<plugin xmlns="http://phonegap.com/ns/plugins/1.0"
xmlns:android="http://schemas.android.com/apk/res/android"
id="com.justep.cordova.plugin.voiceManager"
version="1.0.0"><!--id就是cordova_plugins.js里配置的插件的pluginId,version是插件版本,根据自己需要写-->
<engines>
<engine name="cordova" version=">=3.3.0" /><!--指定cordova编译的版本-->
</engines>
<name>voiceMode</name>
<description>Switch audio playback mode</description>
<js-module src="www/voice.js" name="voiceManager"><!--voice.js的目录位置,navigator.voiceManager是被调用时候的名字-->
<clobbers target="navigator.voiceManager" />
</js-module>
<platform name="android"><!--android配置-->
<config-file target="res/xml/config.xml" parent="/*"><!--对应config.xml里的配置写在这里-->
<feature name="voiceManager">
<param name="android-package" value="com.justep.cordova.plugin.voicemanager.VoiceManager" />
</feature>
</config-file>
<config-file target="AndroidManifest.xml" parent="/manifest">
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" /><!--改变声音模式所需要的权限-->
</config-file>
<source-file src="src/android/VoiceManager.java"
target-dir="src/com/justep/cordova/plugin/voicemanager" /><!--VoiceManager.java的位置以及拷贝到工程后的地址-->
</platform>
<platform name="ios">
<source-file src="src/ios/CDVVoiceManager.m" />
<header-file src="src/ios/CDVVoiceManager.h" />
<config-file target="config.xml" parent="/widget">
<feature name="voiceManager">
<param name="ios-package" value="CDVVoiceManager"/>
</feature>
</config-file>
</platform>
</plugin>
~~~
## [Hooks](http://cordova.apache.org/docs/en/8.x/guide/appdev/hooks/index.html)
Cordova hook表示特殊的脚本,可以由应用程序和插件开发人员添加,甚至可以由您自己的构建系统定制Cordova命令。
### 定义hooks
1. 在 `plugin.xml` 中定义
2. 在 `config.xml` 中定义
## config.xml
`config.xml` 控制了 Cordova应用程序的很多行为:
常用的有 id, name等,参考示例:
~~~
<?xml version='1.0' encoding='utf-8'?>
<widget id="io.cordova.hellocordova" version="0.0.1" xmlns="http://www.w3.org/ns/widgets" xmlns:cdv="http://cordova.apache.org/ns/1.0">
<name>HelloCordova</name>
<description>
A sample Apache Cordova application that responds to the deviceready event.
</description>
<author email="dev@cordova.apache.org" href="http://cordova.io">
Apache Cordova Team
</author>
<content src="index.html" />
<plugin name="cordova-plugin-sharesdk" spec="0.0.1">
<variable name="SHARESDK_IOS_APPKEY" value="636ed1972d16e" />
</plugin>
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<platform name="android">
<allow-intent href="market:*" />
</platform>
<platform name="ios">
<allow-intent href="itms:*" />
<allow-intent href="itms-apps:*" />
</platform>
</widget>
~~~
- PWA 概念
- Immutable
- Angular 基础概念
- 入门参考
- Angular 更新总结
- Angular 生态系统
- Rx.js
- Ngrx
- CQRS/ES 模式
- Angular 5 详解
- 测试
- 定义共享模块
- 懒路由加载
- angular组件
- 双向绑定及变化检测
- 样式
- ionic 3详解
- ionic3
- ionic 插件
- Ionic 添加动画
- Ghost-Loading
- 打包发布
- Android上架国内应用市场流程
- 总结
- 文章
- 问题合集
- Cordova
- 插件开发指南
- Android插件开发指南-官网
- IOS插件开发指南-官网
- Hooks 编写
- 桥接技术
- ===cordova插件收集===
- 相关主题-官网
- 实战-自定义插件流程
- UI 及 相关资源