从原生迈向混合,小而美团队如何搞定APP高效定制
摘要:洞悉华为云数字化差旅App的架构变迁之路,体验混合开发魅力。
本文分享自华为云社区《DTSE Tech Talk 第21期丨从原生迈向混合,小而美团队如何搞定APP高效定制?》,作者:华为云社区精选 。
令开发者们心动的App端开发神器究竟长什么样?小而美的团队如何精准拿捏客户多元化定制需求,实现高效开发?在企业通用服务类App中,如何瞄准团队定位,快速engage客户?
近日,华为云DTSE技术布道师徐意带来了《揭秘华为云数字化差旅:如何用混合开发玩转高效定制》的主题分享。徐意与开发者们交流了华为云数字化差旅移动端APP从原生框架到混合开发的演进过程,以及如何通过React Native及Hybrid混合开发框架去提升开发效率,解决企业客户多样的定制化诉求,让开发者对混合框架的选择及可能解决的场景有一定的了解和认识。此外,针对中小企业混合开发实践,徐意也从团队定位、研发投入及生态构建等视角给予了专业的建议。
华为云数字化差旅,源于华为18年差旅管理实践,定位于企业差旅管理市场。依托“全场景、全流程、全数据”的建设思路,通过搭建一体化的数字化差旅管理平台,为客户提供从差旅申请、审批、预订、行中保障、报销及差旅分析的一站式出行服务,助力其实现精益管理、提质增效、安全合规,不断提升员工出行体验,使能企业数字化转型成功。截止目前,华为云数字化差旅服务范围已经涉及170+国家和地区,向全球480w+企业客户提供高品质服务,最终把数字化差旅带入每个企业、每个员工。

从原生到混合:紧贴业务需求,选择高效合适的混合框架
APP原生框架以性能高、体验好、功能丰富、稳定性高等特点而著称。但是由于其也存在开发成本高、移植性差、发布节奏慢等劣势,在现今越来越敏捷的交付节奏下,逐渐难以满足开发者及企业的诉求。
华为云数字化差旅在市场拓展过程中,随着企业客户的不断增加,多层面的差异性逐渐显现,差旅业务开发面临着诸多挑战:对接模式的差异、企业白牌定制、企业业务及个性化模块定制、企业差旅管理政策差异、企业紧急政策要求、多团队版本配合、特殊场景需求保障等等。在高频的项目交付中,“体验要好、交付要快、功能稳定、成本要低”成为客户的一致诉求。如何在持续满足客户需求的同时推进技术升级,也是当前差旅团队亟待思考的点。

从框架诉求、开发能力模型、维护成本3个维度出发,华为云数字化差旅开发团队综合评估了市面上主流成熟的混合开发框架,通过分析Hybrid、React Native、Flutter、Uni-app等框架的优缺点,结合实际业务诉求,先引入React Native框架去尝试解决业务交付难题。
React Native能力探索及演进
差旅团队在项目中首先尝试通过相对简单直接的单RN包的方式引入React Native框架能力,之后尝试使用配套的热更新能力,实现整RN包热更新。通过前期的尝试,在一个新业务开发中,团队逐步体验到Android与iOS代码合一、效率提升、问题修复效率高等框架优势:
效率方面:实现两端一套代码的诉求,业务开发、调试效率显著提升;
性能方面:整体交互性能稍有下降,但综合体验符合预期;
难度方面:业务开发技能JavaScript,上手更快;
热更新方面:具备热更新能力,提升灵活性。
在引入React Native框架后,团队之前面临的种种客户交付跳转看似也有了可行的解决方案。但团队逐步在做去割接其他业务时,也浮现出一些新的框架问题:
- 单RN包模式下,随着业务逐渐增多,bundle变大,初始化时间较长,内存消耗大;
- 整包热更新模式导致热更新文件大,下载等待时间长,生效慢;
- 随着客户增多,不同的客户包、不同版本需要不同的补丁包,导致手工管理困难。
基于这些问题,团队开始思考和寻找对应的解决方案,随后采取如下措施: - 使用Facebook metro构建工具进行进行分包能力开发,实现基本包与业务包分解,各业务包代码与功能独立,相互隔离,业务按需加载,按需释放。

- APP端热更新同步分包机制,按业务包实现独补丁包隔离。同时研究热更新生效策略并尝试启动等待生效,再启动生效,实时生效等多种策略。
- 基于华为云强大的平台能力,构建服务端补丁包管理体系:
- 使用google diff-match-patch text算法自动化实现代码差异对比,流水线构建增量补丁包,显著降低补丁包大小。
- 自建热更新管理系统,实现多产品、多版本、多渠道补丁分发管理以及灰度发布能力。
- 使用华为云OBS安全存储,CDN分发等服务提升补丁包下载速率及稳定性,同时根据针对补丁包进行安全校验防篡改以及补丁包密码加密等能力。

除了以上框架问题之外,团队通过持续构建RN能力生态,不断提升客户个性化诉求的场景覆盖及交付效率:
- 建设并持续完善RN组件库,快速构建企业UI页面;
- 通过字体库图标、插画系统,实现图片素材的可定制化;
- 设计个性化主题配置能力,实现配套主题切换;
- 持续RN版本升级,提升性能、引入新功能;
- 提供真机调测包;多环境切换能力,提升开发测试效率;
- 尝试构建自动化测试能力。
从4类应用场景探索WebView能力建设
差旅APP内应用场景的复杂多样性使得框架层面在一些场景上需要使用到webview模块的使用,即通过APP内置浏览器打开web页面给用户提供一些服务能力,团队总结为如下4类场景:
- 企业专属模块
- 多端共用模块
- 新增/高变化性模块
- 运营活动类模块

基于以上各类应用场景,差旅APP首先通过Android及iOS原生功能的开发及配置满足如支付等三方应用跳转场景及电话、邮件、相册、文件、定位、多媒体等能力场景,同时又进一步构建一套较完备的JSBridge方法库,将web页面所需的原生能力封装成API,包括界面交互类(如返回、刷新、导航栏等)、登录类(登录信息获取、实时登录等)、系统信息类(系统、版本、安全区域、设备id、暗黑、字体等)及其他功能类(分享、定位、跳转、业务功能等)。
在提供各类方法能力的同时,团队注意到web端的能力诉求涉及一定的敏感信息类,故在提供这类能力的同时,设计并构建了一套webview安全加固策略:域名白名单管控;JSBridge 方法管控;业务Token权限管控。
3大阶段规划,了解差旅App未来演进方向
为持续支撑业务发展、提升用户体验、沿袭“全场景、全流程、全数据”的建设思路,华为云数字化差旅团队基于自身技能及业务特点,会始终保持研究投入。对于差旅App未来发展,给出了三个阶段的规划:
- 短期内,主要着眼于RN版本可信、热更新能力的提升;
- 中期内,计划构建起RN+H5的融合方案,打造原子化、场景化的服务能力;
- 长期发展来看,会依托低代码等先进技术,打造多框架共建及配置化能力成为预研方向。
在最后的分享环节,针对中小企业在面临繁重、多元定制的交付需求等问题,讲师也从团队定位、APP框架选型、研发投入、生态构建、网络安全意识提升等方面给出了可行性的建议,希望开发者们能够依托混合开发玩转高效定制,快速响应客户需求,实现自身技术的迭代升级。
从原生迈向混合,小而美团队如何搞定APP高效定制的更多相关文章
- APP设计师拿到APP产品原型开始,七步搞定APP设计(转)
任何一款成功的APP都需要以坚实的产品概念作为基础,因为概念决定了产品最终完成的潜力. 一般情况下,交到app设计师手里的都是移动app产品原型图.当然这个是在移动产品经理反复斟酌,并且与大家开会讨论 ...
- Facebook新框架React Native,一套搞定App开发[转]
Facebook新框架React Native,一套搞定App开发 本文来自微信公众号“给产品经理讲技术”(pm_teacher),欢迎关注. 做为一名产品经理,你是否遇到过这样的窘境,“帮我把字体调 ...
- 一个注解搞定SpringBoot接口定制属性加解密
前言 上个月公司另一个团队做的新项目上线后大体上运行稳定,但包括研发负责人在内的两个人在项目上线后立马就跳槽了,然后又交接给了我这个「垃圾回收人员」. 本周甲方另一个厂家的监控平台扫描到我们这个项目某 ...
- php原生自定义验证码,5分钟搞定你的问题
当然现在很多php的框架里面自带了很多很多验证码,我的这个验证码,也是当初刚刚入行的时候学习模仿的.现在照搬出来,希望对刚入门的朋友有所帮助. **************************** ...
- 3招搞定APP注册作弊
在说如何应对之前,易盾先给各位盾友梳理移动端APP可能遇到哪些作弊风险.1. 渠道商刷量,伪造大量的下载量和装机量,但没有新用户注册:2. 对于电商.P2P.外卖等平台,会面临散户或者团队刷子的注册- ...
- Mockplus教程:分分钟搞定APP首页原型设计
Mockplus是一款快速原型设计工具,支持包括APP原型在内的多种原型与线框图设计.除了快速,Mockplus广受欢迎更因为它极低的上手门槛.今天小编就为大家展示如何用Mockplus在3分钟内完成 ...
- 4款APP原型设计工具助你搞定移动应用设计!
随着信息化社会的不断发展,不仅手机迭代更新的速度飞快,就连手机里的App 也层出不穷.作为一名UI/UX设计师或产品经理,如何才能设计一款出色的移动App?光有好的创意是不够的,你还需要一款正确的Ap ...
- 横向浅谈移动技术------( 原生,混合,web --- 谁能问鼎移动开发的明天)
目前移动互联网基本采用了NativeApp.WebApp.HybridApp三种开发模式,很难说这三种模式那种更优越,目前的情况可以说是三分天下吧,不同的开发者可以根据自己的实际情况选择不同的开发模式 ...
- Hybird应用开发实践(一)使用原生/cordova混合项目
最近准备尝试hybird开发原生应用,因为公司的项目本来就是原生开发的,所以准备选择cordova作为webview嵌入原生项目的开发方式.这里就以mac上整合ios项目为例. 1. 创建cordov ...
- RN与android原生开发混合后的环境报错问题
RN与android原生开发混合后的环境报错问题 需要先安装nodejs$ yarn --version1.12.1更新当前版本yarn upgrade --latest安装 | Yarnhttps: ...
随机推荐
- Java IO 与 NIO:高效的输入输出操作探究
引言 输入输出(IO)是任何编程语言中的核心概念,而在Java中,IO操作更是应用程序成功运行的基石.随着计算机系统变得越来越复杂,对IO的要求也日益增加.在本文中,我们将探讨Java IO和非阻塞I ...
- Java并发编程和多线程的区别
并发编程: 并发编程是一种编程范式,它关注的是编写能够正确和高效处理多个并发任务的程序.并发编程不仅包括多线程,还包括了处理多个独立任务的各种技术和模式,如进程.协程.分布式编程等.并发编程的目标是实 ...
- [MAUI]深入了解.NET MAUI Blazor与Vue的混合开发
@ 目录 Vue在混合开发中的特点 创建MAUI项目 创建Vue应用 使用element-ui组件库 JavaScript和原生代码的交互 传递根组件参数 从设备调用Javascript代码 从Vue ...
- 题解 CF1739B
题目大意: 有一个非负整数序列 \(A\),定义序列 \(D\) 是序列 \(A\) 的绝对值差分序列,问给定序列 \(D\),能否求出唯一的序列 \(A\),若不能,输出 \(-1\),否则输出序列 ...
- Petals
------------恢复内容开始------------ 打开发现一堆地址冒红 滑倒后面发现E8,根据经验应该是花指令考点 然后D-->nop-->C-->P得到正常结果 然后第 ...
- 编译wasm Web应用
刚学完WebAssembly的入门课,卖弄一点入门知识. 首先我们知道wasm是目标语言,是一种新的V-ISA标准,所以编写wasm应用,正常来说不会直接使用WAT可读文本格式,更不会用wasm字节码 ...
- GitHub Universe 2023:AI 技术引领软件开发创新浪潮
GitHub 是全球领先的软件开发和协作平台,数百万开发者和企业在此分享.学习和创建卓越的软件.同时 GitHub 处在 AI 技术前沿,通过其先进的 AI 技术增强开发者体验并赋能未来软件开发的使命 ...
- 大白话说Python+Flask入门(三)
写在前面 今天状态很不好,我发现学这部分知识的时候,会出现溜号或者注意力无法集中的情况. 我能想到的是,大概率是这部分知识,应该是超出了我现在的水平了,也就是说我存在知识断层了,整体感觉真的是一知半解 ...
- led灯实现跑马灯效果,达到设定时间(2秒)两LED灯全部亮起,持续时间1秒,而后重新恢复跑马灯效果;
#include "reg52.h" //此文件中定义了单片机的一些特殊功能寄存器 typedef unsigned int u16; //对数据类型进行声明定义 typedef ...
- 《最新出炉》系列初窥篇-Python+Playwright自动化测试-33-处理https 安全问题或者非信任站点-上篇
1.简介 这一篇宏哥主要介绍playwright如何在IE.Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续 ...