矩阵理论及其应用_独家首发|App工厂理论及其在58同城App中的应用实践

导语App工厂,顾名思义,是一个能根据各种素材和组织形式生成App的工厂。更专业一点的描述,是根据一个具有完备组件库以及这些组件的依赖关系,组合成一个个App。以往的单App研发架构,由于每次打包编译、版本发布都是一个全量的代码集合,所以不会也不需要考虑每一个组件之间的依赖和耦合关系。在多App场景下,由于存在一套代码,按需生成不同App所需要的代码,原有的架构、代码依赖关系、工程代码组织方式都需...
摘要由CSDN通过智能技术生成

导语

App工厂,顾名思义,是一个能根据各种素材和组织形式生成App的工厂。更专业一点的描述,是根据一个具有完备组件库以及这些组件的依赖关系,组合成一个个App。

以往的单App研发架构,由于每次打包编译、版本发布都是一个全量的代码集合,所以不会也不需要考虑每一个组件之间的依赖和耦合关系。在多App场景下,由于存在一套代码,按需生成不同App所需要的代码,原有的架构、代码依赖关系、工程代码组织方式都需要相应的改变。

App工厂的目标是在特定架构和业务场景下,基于一套代码,按需生成目标App所需的代码。一套代码和按需生成是核心,缺一不可。特别是按需生成,意味着不携带任何不需要的代码,这个在实现的过程中非常具有挑战性。本文从iOS视角,分享58App在App工厂方面的理论和实践的探索。

App工厂产生背景

业务的快速试错催生多App

移动互联网不论是在上半场,还是在下半场,业务的创新从来没有停歇过。从微博到团购,从共享汽车到共享单车,从长视频到短视频,业务和模式的创新不断。近几年尤以头条系的业务试错见诸于各报端,从资讯到直播,再到短视频,是一波接一波。

当前不论是大的互联网公司,还是创业性的小公司,要想在新的领域摸索出一番天地,必须不断试错。移动领域的业务不断试错,要求能快速产出各业务对应的创新App。

集团业务的逐步扩大与细化催生多App

互联网江湖早已三分天下,巨头已经建立,大的互联网平台很难形成。但越是大的互联网平台,越担心垂直细分业务的进攻。为应对进攻,集团业务也需要在一些领域逐步扩大和细化,垂直App应运而生。

垂直App与创新App的差距在于,垂直App是基于现有平台业务细分而来,而创新App是平台业务所没有的。

另外,为了应对应用市场的分发和对包大小敏感的用户,这几年极速包几乎成为各大公司的必备App。

集团业务的合并融合催生多App交叉

业务的收购、合并也是大型互联网公司常有的事。收购合并后的业务如何融合,如何既能保持业务的独立性,又能节省集团研发资源,还能支持一套交叉业务(又称垂直业务)代码在各独立App运行,是一个重要又复杂的问题。比如今年58集团内安居客房产业务和原58房产业务的融合就是一个典型的案例。

App工厂目标、架构与实施方法

App工厂的实施目标

1.App工厂有以下目标:

  • 标准化能力的产出,为App研发提效增速

标准化能力是实现App工厂的基础,标准化能力与App业务代码无耦合关系,比如React Native SDK,网络库、缓存库等。

  • 支持创新App、垂直App、极速App的生成和迭代

同一套代码,根据配置,能按需生成不同App所需的代码。按需生成是关键和核心,不给App工厂生成的App代码携带任何无用代码,增加包大小。

  • 支持垂直业务在独立App上的平移

App工厂依附于58App框架代码上,马甲包、极速包与App工厂(58App)是一个子集与全集的关系。但类似安居客App与58App是两个独立App,有交集(公共底层代码或某些业务代码),业务代码集合不一样。

针对独立App的公共业务代码,定义为垂直业务。App工厂在统一底层服务的前提下,也要支持垂直业务在独立App上的平移。即一套业务代码,能在两个或多个独立App上运行。

App工厂架构

546ee041e68e31ce7e80f3f7ee3481f7.png

名词解释

PODS:

在iOS领域,pods特指cocoapods,是其缩写。cocoapods是对OC或swift Cocoa 工程的依赖管理。(CocoaPods is a dependency manager for Swift and Objective-C Cocoa projects. )


中间件:

中间件在软件领域的通用解释是:连接软件组件和应用的程序。在这里中间件体现的是连接和共用。连接的是业务层和基础库层,共用体现在业务层的公共服务。

中间件按照业务强相关与否分为业务中间件和标准中间件。

  • 业务中间件:

与业务强相关的中间件,在某一个独立App中通用。由于对当前App其它功能的过多依赖,所以不适用于其他独立App。

  • 标准中间件:

与业务弱相关的中间件,不仅在某一个独立App中通用,在其它独立App中也通用,与App中的业务弱相关。最常见的是标准版的RNSDK。


基础库:

对其它pod不产生依赖的独立库。比如一些开源的三方库,是常见的基础库。除了第三方开源的,58集团内自封装的sdk,如果对其它pod不产生依赖,也可以归入基础库范围,比如Passport SDK,WPush SDK等;


入口工程:

主要负责对App工厂生成的App所需代码进行配置。

入口工程pods:主要负责对App工厂生成的App所需代码进行配置,入口工程中包括的功能有:

  • APPInfo:对App基础信息的设置,比如App名称,bundle identifier,版本号,证书等;
  • Podfile:当前App对所需工程代码的依赖,比如招聘马甲包会依赖招聘业务pod以及其他基础服务pod和三方库pod;
  • Regen.sh: 一个可执行文件(本地RD研发调试用),读取podfile配置,拷贝App所需代码及配置,然后生成App所需代码;
  • Reng_jenkins.sh: 一个可执行文件(Jenkins服务打包用),读取podfile配置,拷贝App所需代码及配置,然后生成App所需代码;

工程库池:

工程池是App工厂总

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 内容概要 《计算机试卷1》是一份综合性的计算机基础和应用测试卷,涵盖了计算机硬件、软件、操作系统、网络、多媒体技术等多个领域的知识点。试卷包括单选题和操作应用两大类,单选题部分测试学生对计算机基础知识的掌握,操作应用部分则评估学生对计算机应用软件的实际操作能力。 ### 适用人群 本试卷适用于: - 计算机专业或信息技术相关专业的学生,用于课程学习或考试复习。 - 准备计算机等级考试或职业资格认证的人士,作为实战演练材料。 - 对计算机操作有兴趣的自学者,用于提升个人计算机应用技能。 - 计算机基础教育工作者,作为教学资源或出题参考。 ### 使用场景及目标 1. **学习评估**:作为学校或教育机构对学生计算机基础知识和应用技能的评估工具。 2. **自学测试**:供个人自学者检验自己对计算机知识的掌握程度和操作熟练度。 3. **职业发展**:帮助职场人士通过实际操作练习,提升计算机应用能力,增强工作竞争力。 4. **教学资源**:教师可以用于课堂教学,作为教学内容的补充或学生的课后练习。 5. **竞赛准备**:适合准备计算机相关竞赛的学生,作为强化训练和技能检测的材料。 试卷的目标是通过系统性的题目设计,帮助学生全面复习和巩固计算机基础知识,同时通过实际操作题目,提高学生解决实际问题的能力。通过本试卷的学习与练习,学生将能够更加深入地理解计算机的工作原理,掌握常用软件的使用方法,为未来的学术或职业生涯打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值