Cordova LOGO

一、使用 Cordova-CLI 建立的工程目录结构

使用 cordova create 命令建立的工程,结构如下:

./

|-hooks/ ............ 一些build时的特殊脚本

|-platforms/ ........ 原生平台代码

|-plugins/ .......... 插件

|-www/ .............. Web内容

| '-index.html

'-config.xml ........ 工程配置文件,包括工程id、名字、描述、一些白名单等等

二、使用 Cordova-CLI,创建的 iOS 工程

./HelloCordova/

|-CordovaLib/ .................................. Cordova 库

|-HelloCordova/ ................................ Cordova iOS 工程

| |-Classes/

| |-Plugins/ .................................. 插件原生代码

| | |-cordova-plugin-console/ ................ 示例

| | | |-CDVLogger.h

| | | '-CDVLogger.m

| | |-cordova-plugin-inappbrowser/ ........... 示例

| | | |-CDVInAppBrowser.h

| | | '-CDVInAppBrowser.m

| | '-README

| |-config.xml ................................ iOS工程的配置,包括引用的插件、引用方式等,可由 Cordova-CLI 生成

| '-main.m

|-HelloCordova.xcodeproj/ ...................... 工程文件

|-HelloCordova.xcworkspace/ .................... Workspace 文件

|-cordova/ ..................................... 用于执行 build 的相关脚本内容,与代码无关

|-platform_www/ ................................ 平台相关的 Web 内容

| |-cordova-js-src/

| | |-exec.js

| | '-platform.js

| |-plugins/ .................................. 插件相关的 js 代码

| | |-cordova-plugin-console/ ................ 示例

| | | '-www/

| | | |-console-via-logger.js

| | | '-logger.js

| | '-cordova-plugin-inappbrowser/ ........... 示例

| | '-www/

| | '-inappbrowser.js

| |-cordova.js

| '-cordova_plugins.js ........................ 用于导入所引用插件相关的配置的 js,由引用的插件内容而定

|-www/ ......................................... 自定义的 Web 内容 + platform_www/ 中的内容

| |-cordova-js-src/

| | |-exec.js

| | '-platform.js

| |-plugins/

| | |-cordova-plugin-console/

| | | '-www/

| | | |-console-via-logger.js

| | | '-logger.js

| | '-cordova-plugin-inappbrowser/

| | '-www/

| | '-inappbrowser.js

| |-cordova.js

| |-cordova_plugins.js

| '-index.html

'-ios.json .................................... 所引用插件相关的配置,标准 JSON,其中 modules 部分与 cordova_plugins.js 的 module.exports 部分内容相同,可以直接通过iOS解析,获取所引用的插件信息。此文件不会被打包。

特定平台工程和 Cordova 工程都包含了 config.xml 文件,目前的理解:

Cordova 工程中的 config.xml,是一些跨平台的通用配置。

特定平台工程中的 config.xml,除了包含通用配置,还有一些平台的特性化配置,比如:引用插件、插件的加载执行方式等等。

三、使用 Cordova-CLI 打包后的结构

使用 cordova build 命令打包后的目录结构(以 iOS 为例,除原生代码外,都在 www 文件夹中,手集成 CordovaLib 的话,文件夹可以自己定义):

./www/

|-cordova-js-src/ ................. 存放用于与原生功能桥接的JS(无需改动)

| |-exec.js ...................... 无需改动

| '-platform.js .................. 无需改动

|-plugins/ ........................ 插件 js 部分的代码

| |-cordova-plugin-console/

| | '-www/

| | |-console-via-logger.js

| | '-logger.js

| '-cordova-plugin-inappbrowser/

| '-www/

| '-inappbrowser.js

|-cordova.js ...................... 用于加载插件,一般在 index.html 中引用(无需改动)

|-cordova_plugins.js .............. 所有引用的插件(需要根据引用的插件来进行调整)

'-index.html

这些在 www 中的内容,除了index.html,其余的并没有出现在 Cordova 工程中。

从一、二两个结构的比较中可以看出:“二”中的以下文件并没有包含在“一”中:

cordova-js-src/ ................. 存放用于与原生功能桥接的JS(无需改动)

|-exec.js ...................... 无需改动

'-platform.js .................. 无需改动

cordova.js ...................... 用于加载插件,一般在 index.html 中引用(无需改动)

cordova_plugins.js .............. 所有引用的插件(需要根据引用的插件来进行调整)

这些内容属于:

应用在 JS 执行原生调用时需要

但又不需要手工编辑

所以在 Cordova 工程中没有出现,而是在 Cordova-CLI 进行打包的过程中塞了进去。

四、在自己工程中引入 CordovaLib

对于在自己的工程中引入 Cordova 的情况,需要在工程中引入 config.xml。如果需要进行原生插件调用,把“二”中的内容加进去,并保证这些页面能正常加载到这些 JS。

五、plugin 目录结构

通过 Cordova-CLI 安装的插件,需要按照一定的格式组织代码。

./cordova-plugin-console/

|-doc/ ......................... 文档目录

|-src/ ......................... 源码目录(重要:需要编写代码)

| |-ios/ ...................... 平台分类 iOS

| | |-CDVLogger.h

| | '-CDVLogger.m

| |-ubuntu/ ................... 平台分类 Ubuntu

| | |-console.cpp

| | '-console.h

| '-wp/ ....................... 平台分类 Windows Phone

| '-DebugConsole.cs

|-tests/ ....................... 测试文件夹

| |-plugin.xml

| '-tests.js

|-www/ ......................... 用于与原生代码交互的 js(重要:需要编写代码)

| |-console-via-logger.js

| '-logger.js

|-package.json ................. 插件的说明信息,用于搜索等作用,貌似对程序没有实际作用

'-plugin.xml ................... 插件的配置文件,其中包含每个平台的配置,使用命令行安装插件时,会把文件中各个平台的内容,插入到各个平台代码的 config.xml 中(重要:需要开发插件时编写)

六、plugin.xml 文件结构

plugin.xml 是编写的插件的描述文件,其中主要是若干个 标签中的内容。根据不同的平台,提供不同的设置。在执行 cordova plugin add 命令时,会把不同平台的配置,分别插入到“各个平台工程代码”中的 config.xml 中。

例如:

标签中

标签用于指定将里面 标签中的内容插入到 config.xml 中。

标签用于生成 cordova_plugins.js 的内容

、、分别表示头文件、实现文件和需要引用的 framework。

标签中的内容并不是所有平台都一样,而是根据平台特性,自行定义。

以下为 InAppBrowser 插件的 Android 和 iOS 部分配置

id="cordova-plugin-inappbrowser"

version="1.6.1">

InAppBrowser

Cordova InAppBrowser Plugin

Apache 2.0

cordova,in,app,browser,inappbrowser

https://git-wip-us.apache.org/repos/asf/cordova-plugin-inappbrowser.git

https://issues.apache.org/jira/browse/CB/component/12320641

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐