`
rensanning
  • 浏览: 3547852 次
  • 性别: Icon_minigender_1
  • 来自: 大连
博客专栏
Efef1dba-f7dd-3931-8a61-8e1c76c3e39f
使用Titanium Mo...
浏览量:38135
Bbab2146-6e1d-3c50-acd6-c8bae29e307d
Cordova 3.x入门...
浏览量:607250
C08766e7-8a33-3f9b-9155-654af05c3484
常用Java开源Libra...
浏览量:682252
77063fb3-0ee7-3bfa-9c72-2a0234ebf83e
搭建 CentOS 6 服...
浏览量:89309
E40e5e76-1f3b-398e-b6a6-dc9cfbb38156
Spring Boot 入...
浏览量:401771
Abe39461-b089-344f-99fa-cdfbddea0e18
基于Spring Secu...
浏览量:69685
66a41a70-fdf0-3dc9-aa31-19b7e8b24672
MQTT入门
浏览量:91688
社区版块
存档分类
最新评论

Cordova 3.x 基础(14) -- 使用Hooks自定义build过程

阅读更多
Hooks本身是一些脚本代码,可以使用任何语言(比如:nodejs、shell等),用来自定义Cordova CLI命令,位于Cordova项目的根目录hooks文件夹下。主要目的是扩展Cordova CLI框架,在应用的build生命周期中插入自定义的build构建内容。

(1)Hooks的种类
①Module-level Hooks
面向的是扩展Cordova平台的,这个是相对比较大的项目的,所以一般都很少用到,有兴趣可以去Google一下“Cordova EventEmitter method”。
https://www.npmjs.org/package/cordova

②Project-specific Hooks
所有的脚本文件必须放在Cordova CLI命令对应的before 或 after文件夹中。
hooks/before_xxx
hooks/after_xxx
其中xxx就是Cordova CLI对应的命令,比如:prepare、build等。

(2)脚本执行顺序
before_xxx 或 after_xxx 文件夹中的脚本文件是按字母的顺序排序后依次执行的。这里的字母顺序还跟使用的平台有关,比如:Windows下ae.js在aG.js之前, 而Linux下aG.js在ae.js之前。所以最好是在你的脚本文件名前添加3到4位的数字来标示它的顺序。
比如:
引用
001_copy_files.js
010_copy_resources.js
020_modify_config_files.sh
120_delete_modified_files.js


(3)Hook脚本文件
脚本文件被执行时,默认会把根目录路径作为第一个参数传递给脚本文件。

Node.js
引用
#!/usr/bin/env node
var fs = require('fs');

var rootdir = process.argv[2];

// ... using rootdir


Shell Script
引用
#!/bin/sh

ROOTDIR=$1

# ... using $ROOTDIR


脚本文件中可以通过环境变量来获取其他参数:
  • CORDOVA_VERSION:Cordova CLI的版本
  • CORDOVA_PLATFORMS:逗号隔开的platforms一览
  • CORDOVA_PLUGINS:逗号隔开的plugin IDs一览
  • CORDOVA_HOOK:执行中hook的路径
  • CORDOVA_CMDLINE:Cordova CLI命令后的参数


引用
#!/usr/bin/env node

console.log("process.env.CORDOVA_VERSION: "+process.env.CORDOVA_VERSION);
console.log("process.env.CORDOVA_PLATFORMS: "+process.env.CORDOVA_PLATFORMS);
console.log("process.env.CORDOVA_PLUGINS: "+process.env.CORDOVA_PLUGINS);
console.log("process.env.CORDOVA_HOOK: "+process.env.CORDOVA_HOOK);
console.log("process.env.CORDOVA_CMDLINE: "+process.env.CORDOVA_CMDLINE);



在脚本文件中你可以使用脚本语言的所有功能。但是在build之前首先要确保你的脚本文件能够正常执行。

(4)停止build
在hook脚本中,我们有时候需要停止整个build,比如:在before_prepare做单元测试的时候,如果测试失败,就应该停止build。hook脚本中如果返回值不是0,就会停止build。
引用
#!/usr/bin/env node
    
console.log("unable to complete the hook");
process.exit(1);



(5)常用Hook
  • 添加工程所需的plugins(after_platform_add)
  • 拷贝icons、splash screens等resource到各个平台(after_prepare)
  • 运行单元测试(before_build)
  • 替换一些配置信息,比如:api服务器地址(after_prepare)

Cordova在build的时候是把www文件夹原封不动的Copy到了platform的www文件夹中,如果有人反编译你的app文件就能够获得你的所有源码。所以有必要创建一个hook来对你的代码进行安全处理。

根据JSON串的定义在Build之前生成menu.xml来支持Android的原生菜单
https://github.com/ktty1220/cordova-native-menu/blob/master/hooks/before_build/native-menu.js

参考:
https://github.com/apache/cordova-cli/blob/master/templates/hooks-README.md
https://leanpub.com/developingwithcordovacli/read
https://gist.github.com/dpogue/4100866
http://devgirl.org/2013/11/12/three-hooks-your-cordovaphonegap-project-needs/
http://www.mooreds.com/wordpress/cordova-cli
  • 大小: 4.9 KB
  • 大小: 8.9 KB
分享到:
评论

相关推荐

    Cordova 3.x入门

    使用Hooks自定义build过程和云端Cordova(Cloud-based Build Services)部分,作者指导开发者如何自动化构建过程和利用云服务来简化开发流程。 Cordova的实用插件部分覆盖了Google地图、二维码、社交分享、自定义URL ...

    cordova-sample-hooks:科尔多瓦样品挂钩

    在这个框架中,"挂钩"(hooks)是至关重要的组成部分,它们是自定义脚本,能够扩展Cordova的默认行为,对项目的构建、安装、打包等过程进行干预。`cordova-sample-hooks`项目是一个用于演示和学习如何使用Cordova...

    cordova环境搭建说明

    - `hooks`:存放自定义 Cordova 命令的脚本文件,可用于在 Cordova 命令执行前后添加自定义行为。 - `platforms`:存放各个平台(如 android、ios)的代码目录。 - `plugins`:存放安装的 Cordova 插件的目录。 - `...

    cordova-study:Cordova学习记录,Cordova插件的使用,热更新、media、device、集成x5内核等等

    hooks:存放自定义cordova命令的脚本文件。每个project命令都可以定义before和after的Hook,比如:before_build、after_build platforms:平台目录,各自的平台代码就放在这里,可以放一下平台专属的代码 plugins:...

    UmeetingCordova:如何使用科尔多瓦

    css/| |– img/| |– js/|– index.html(2)config.xml :cordova的配置文件(3)hooks目录存放自定义cordova命令的脚本文件。每个project命令都可以定义before和after的Hook,比如:before_build、after_build。...

    cordova使用命令(常用)

    - `cordova build` 是 `prepare` 和 `compile` 的组合,一次性完成两者。 5. **模拟与运行**:`cordova emulate [平台]` 和 `cordova run [平台]` - `emulate` 在对应平台的模拟器中启动应用。 - `run` 直接在...

    用Cordova打包Vue项目的方法步骤

    - hooks:包含一些用于在构建过程中执行自定义脚本的钩子,可以用来在构建的不同阶段插入自己的代码,如修改构建行为。 Cordova提供了一种将Web应用转换为原生移动应用的简便方法,允许开发者在保持熟悉的Web开发...

    PhoneGapTest

    6. **build** 和 **hooks** 文件夹 - 分别用于存放构建过程产生的文件和自定义构建脚本。 使用PhoneGap进行开发时,开发者通常会使用CLI(命令行接口)工具,如`phonegap`或`cordova`,来创建、构建、运行和测试...

    ionic-contactlist:联系人列表沙箱(ionic、cordova、angularjs)

    5. `hooks`: 自定义构建脚本,会在特定的Cordova生命周期事件中执行。 6. `ionic.config.json`: 离子框架的配置文件,用于配置项目属性和工作流设置。 **开发流程** 1. **安装环境**:首先需要安装Node.js、 Ionic...

    Todo-App:一个使用 Ionic 框架的简单 Todo 应用程序

    - `scripts`或`hooks`目录:自定义脚本,用于构建过程中的自动化任务。 - `resources`目录:应用的图标和启动屏幕图像。 6. **开发与部署流程**:开发Todo-App时,可以使用Ionic CLI工具进行快速原型制作、测试和...

    phonegap-app-exp:实验手机间隙

    - `scripts`/`build`/`hooks`: 自定义脚本和钩子,用于构建过程中的自动化任务。 4. **开发流程** 开发PhoneGap应用通常涉及以下步骤: - 创建项目:使用PhoneGap CLI或IDE(如Visual Studio Code,IntelliJ ...

    Phonegap-simple-game1:Phonegap简单游戏

    6. 可能还有 `build` 和 `hooks` 文件夹,分别用于构建过程和自定义脚本。 为了进一步了解这个游戏,你需要解压并查看这些文件,尤其是`www`目录下的代码。同时,阅读`config.xml`以获取关于应用设置和使用的插件...

    beginning_phoneGap

    9. **build** 和 **hooks** 文件夹:用于构建流程和自定义脚本。 学习 PhoneGap 的过程中,你需要掌握以下关键知识点: - **HTML5**:理解基本的 HTML 结构,以及新的 HTML5 元素和 API,如 semantic tags、canvas...

    ios-recognition-app:基于科尔多瓦的项目

    科尔多瓦弯钩该目录可能包含用于自定义cordova命令的脚本。 该目录曾经存在于.cordova/hooks ,但现在已移至项目根目录。 您添加到这些目录中的所有脚本都将在与目录名称相对应的命令之前和之后执行。 对于集成您...

    essentials-inc

    科尔多瓦挂钩此目录可能包含用于自定义cordova 命令的脚本。 该目录曾经存在于.cordova/hooks ,但现在已移至项目根目录。 您添加到这些目录的任何脚本都将在与目录名称对应的命令之前和之后执行。 用于集成您自己的...

    xueba:离子移动项目

    雪坝离子移动项目科尔多瓦挂钩此目录可能包含用于自定义cordova 命令的脚本。 该目录曾经存在于.cordova/hooks ,但现在已移至项目根目录。 您添加到这些目录的任何脚本都将在与目录名称对应的命令之前和之后执行。 ...

Global site tag (gtag.js) - Google Analytics