基于ionic2的跨平台项目(六)cordova多项目热修复

上篇文章详细介绍了cordova+Android项目的热修复过程,本篇探讨下,一个cordova项目如何集合多个cordova项目,它们是如何协作的,以及如何对他们分别进行热修复。

多cordova项目集合

我们探讨这样一种情况,要做一个综合管理的ionic项目。需要多个团队共同开发多个项目然后集合到这一个项目里,最终实现的效果是在ionic项目中或者是在原生项目中,能进入另外若干个完整的ionic项目。

1.首先创建一个ionic2项目,然后使用$ ionic platform add ios添加ios+cordova项目。

2.打开AppDelegate.m,修改入口控制器:

self.viewController = [[MainTabBarController alloc] init];

3.给tabBar控制器添加几个原生导航控制器(其中第一个起名叫RedViewController)。

4.创建一个自定义控制器MainViewController,继承于CDVViewController,添加一个构造方法:

- (id)initWithFolderName:(NSString *)folderName StartPage:(NSString *)startPage {
    self = [super init];
    if (self) {
        self.wwwFolderName = folderName;
        self.startPage = startPage;
    }
    return self;
}

5.在RedViewController中添加两个按钮,分别跳转到两个MainViewController:

- (void)btn1Click {
    MainViewController *vc = [[MainViewController alloc] initWithFolderName:@"www/proj1" StartPage:@"index.html"];
    [self.navigationController pushViewController:vc animated:true];
}
- (void)btn2Click {
    MainViewController *vc = [[MainViewController alloc] initWithFolderName:@"www" StartPage:@"index.html"];
    [self.navigationController pushViewController:  vc animated:true];
}

6.编辑另一个ionic项目(称为”子项目1“),执行$ ionic build ios,完成后把platforms/ios/www文件夹拷贝到主项目,修改名称为proj1。

以上几个步骤完成后,即可以从原生项目任意跳转到ionic项目。通过这篇文章中讲到的广播(通知)方式,在ionic app中添加返回按钮,就可以把MainViewController从导航控制器中pop掉,从而返回到原生界面。

多cordova项目热修复

完成一个有能力集合多个cordova项目的ios项目后,如何能对各个项目定向热修复?下面搭建一个本地服务器,通过修改服务器上的www文件,使线上项目通过比较差异文件清单、下载差异文件到本地来修复线上的各个ionic项目。

配置本地服务器

http://blog.csdn.net/huyisu/article/details/38372663

环境配置(最好使用多窗口操作终端)

  • 在每个项目中添加热更新插件(加入–save参数会让ionic将插件或node库加入到配置文件,并保存ionic状态)

ionic plugin add –save cordova-hot-code-push-plugin

npm install -g –save cordova-hot-code-push-cli

  • 在主项目根目录下的config.xml中加入如下代码
<chcp>
    <config-file url="http://192.168.100.251:8080/www/chcp.json"/>
    <local-development enabled="true"/>
</chcp>

其中的网址是服务器地址.

  • 修改主项目CDVViewController.m中的loadSettings方法,self.startPage赋值 = xxx
  • 在主项目HCPPlugin.m中的indexPageFromConfigXml方法改为_indexPage = xxx
  • 在需要跳转项目时,使用单例或者全局变量将值赋给上两步里的xxx
  • 进入子项目,运行ionic build ios,然后将子项目platform/ios中的www文件夹拖到主项目的www目录。

修复前操作

1.进入tomcat路径。

cd /usr/local/apache-tomcat-7.0.77/bin

2.启动服务器。

sh startup.sh

3.进入项目根目录后,执行:

ionic build ios

4.把编译后的www文件夹拷贝到tomcat后台的webapps目录下。

5.打开ios项目,打开staging目录里的config,把

<content src="index.html" />

注释掉。

6.提高build号,运行项目。

开始修复

1.进入主项目修改主项目的src。

2.编译主项目:

ionic build ios

3.hcp编译:

cordova-hcp build

4.将变化后的根目录下的www文件夹拖到tomcat的webapps文件夹。

5.退出正在运行的ionic项目(也可以pop到原生)。

6.再次进入可以看到修改结果。

7.进入子项目,修改子项目的src。

8.编译子项目。

ionic build ios

9.将变化后的子项目的platform/ios中的www文件夹拖到父项目www中。

10.将父项目www拖到tomcat的webapps文件夹。

11.退出重进子项目。

时间: 2024-10-24 13:12:21

基于ionic2的跨平台项目(六)cordova多项目热修复的相关文章

基于大数据技术之电视收视率企业项目实战(hadoop+Spark)张长志(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

基于案例学数据挖掘(实战)视频教程(项目实战)

38套大数据,云计算,架构,数据分析师,Hadoop,Spark,Storm,Kafka,人工智能,机器学习,深度学习,项目实战视频教程 视频课程包含: 38套大数据和人工智能精品高级课包含:大数据,云计算,架构,数据挖掘实战,实时推荐系统实战,电视收视率项目实战,实时流统计项目实战,离线电商分析项目实战,Spark大型项目实战用户分析,智能客户系统项目实战,Linux基础,Hadoop,Spark,Storm,Docker,Mapreduce,Kafka,Flume,OpenStack,Hiv

Phonegap(cordova)创建项目,并结合eclipse开发工具进行打包生成apk包

1.使用phonegap(cordova)创建并编辑项目 (1)创建一个文件夹用于存放稍后创建的Android程序,这里我们在E盘创建了一个文件夹AndroidProject,适用cd命令进入该目录,接下来适用phonegap命令创建对应的android项目. phonegap的创建指令:  phonegap create hello com.example.hello HelloWorld hello:你的项目文件夹名称,   com.example.hello:你的项目内部包名   Hell

PMP备考_第六章_项目时间管理

项目时间管理 前言 项目时间管理是项目管理中最难的一个环节,与个人时间管理类似,团体的效率如果管理不当,是低于个人效率的,为了管理好时间,从预估,执行到反馈均需要严格的分析和处理.如果制定的计划是无法执行,完全无法作为依据的计划,那么项目执行会进行死亡行军状态,注定是一个失败的项目. 整个项目的时间管理部分同样占据了两个过程组,一个是规划过程组,一个是监控过程组. 时间管理部分包括以下几个部分 规划时间进度管理   制定进度管理计划 定义活动                  识别完成项目所必须

Shuttle ESB(六)——在项目中的应用

如果说你认真看了前面几篇关于ESB的介绍,我相信,在这一篇文章中,你将会找到很多共鸣. 尽管,市面上开源的ESB确实非常之多,像Java中的Mule ESB,Jboss ESB:.Net中的NServiceBus.而Shuttle ESB是一个新兴的开源框架,网络上资源也比较少.我们当初为什么会选用Shuttle ESB呢? 正所谓没有最好,只有更合适.多次调研发现,Shuttle ESB有以下几大优点:1.Shuttle ESB是基于EDA的:2.Shuttle ESB的实现以发布订阅为核心:

框架 day58 BOS项目练习(基于activiti物流配送流程,启动,查询,办理,项目知识点复习)

BOS项目笔记第12天 内容: 1.设计物流配送流程 2.启动物流配送流程 3.查询组任务.拾取组任务 4.查询个人任务.办理个人任务 1.    设计物流配送流程     物流配送流程 基于组任务进行任务分配.使用排他网关,分支选择使用流程变量实现 Activiti图形界面中: Process的Id值 对应流程定义表中的key值,可以用于启动最新版本的流程实例 任务节点中: General的 Id值对应任务表中的Task_def_key既 taskDefinitionKey值,用于定义项目中

分享基于Android系统的XMPP即时通讯技术项目实战(仿微信开发架构,自定义控件)

即时通讯技术是 网络技术中的明珠.即时通讯产品改变了人们的生活习惯.经过十几年的发展,即时通讯功能的应用也逐渐从专门软件才能实现的功能逐渐成为标准配置.即时通讯技术的应用不仅仅只是用于社交领域,在大多的协同工作领域,以及需要分布结构的网络通讯领域都是非常重要的.讲师本人在android领域有多年的开发经验,在即时通讯系统方面也有深入的研究.在本课程中,详细讲解了android开发中要解决的一些主要的问题,即时通讯在客户端实现的过程,并手把手的进行操作,方便学习和理解.因为课时的原因,对于一些初级

psutil一个基于python的跨平台系统信息跟踪模块

受益于这个模块的帮助,在这里我推荐一手. https://pythonhosted.org/psutil/#processes psutil是一个基于python的跨平台系统信息监视模块.在python下,我们可以利用它来监视.检测和限制系统资源的使用.它提供了类似于一套控制台的指令功能,像是ps.netstat.ifconfig等等.当前这个模块支持的系统有windows/osx/linux/FreeBSD/Sun Solaris.32.64位均支持.python环境为2.6-3.5. 这里我

Maven 系列 六 :将项目发布到私服

1 . 修改私服中仓库的部署策略 Release版本的项目应该发布到Releases仓库中,对应的,Snapshot版本应该发布到Snapshots仓库中.Maven根据pom.xml文件中版本号<version>节点的属性是否包含-SNAPSHOT,来判断该项目是否是snapshot版本.如果是snapshot版本,在执行mvn deploy部署命令时,maven会自动将项目发布到Snapshots仓库.要发布项目,首先需要将Releases仓库和Snapshots仓库的“Deploymen