2024年移动端技术探索

news2024/11/24 10:40:08

2024年移动端技术探索

引子

2023年号称AI元年,AI带来了一些不是很清晰的机会,没有看到有多好的落地,对于互联网,不止技术层面没有突破,业务层面的需求也断崖式下滑,没有创新就没有需求,老业务的修修补补也带不来多少需求。以音视频行业为例,业界很有影响力的LiveVideoStack也停止了商务活动,音视频大会也不再开了。一切都在朝着萎缩的方向发展。裁员已经不是什么新闻,不是不裁了,是大家习惯了。

在移动端,甚至整个互联网还能折腾什么呢?大家早已不再以早轮子为乐了,因为现在缺的不是轮子,而是从头到尾的新车子。参加北京QCon的时候郭东白大佬讲了一个玩笑”一听到重构程序员就很兴奋,有饭吃了“,随着市场的饱和,重构也没有那么必要。

2024马上就要过半了,本文试着总结大家前半年做的事情,探索出移动端目前还可以支持的点以及未来”比较“有前途的方向。

行业背景

这一章我们从大厂和行业大会两方面的信息分析2024年移动端的诉求点。

大厂

从各个企业对外输出的文章和分享,整理了下面几个公司的输出成果。

阿里、支付宝

阿里的输出主要以思维、方法论、推荐书籍、智联、实践为主。以一文带你揭秘淘宝终端技术 为例窥探阿里终端的思路。
淘宝团队为了应对和解决技术挑战和难题,长期探索这几大技术方向:

  • 原生技术,遵循Platform First理念,贴近原生系统、充分挖掘系统组件和特性,沉淀极致性能的渲染引擎/动态化引擎/原子能力集,同时与厂商深度合作,探索站内外用户触达多通道,用技术做用增;
  • 底层技术,遵循First Principle理念,深入虚拟机/字节码/汇编指令等,探索稳定性/性能/包体的极致边界,深入系统底层机制与原理,必要时帮系统打补丁;
  • 跨端技术,遵循Cross Platform理念,抹平多系统/平台差异,充分利用业界较为成熟的前端生态,沉淀自主可控的渲染引擎/图形引擎/脚本引擎,向业务提供符合W3C标准的前端友好的基础设施
  • 工程技术,遵循Productivity First理念,支撑大规模多团队协作式研发,深挖工程组织/编译构建/虚拟机调度等技术,融合前端/客户端研发工作流,向业务提供高效稳定的工程体系;同时持续升级Low Code技术,赋能业务运营同学快速搭建页面上线,实现产品运营需求的想发就发;
  • 网络技术,拥抱网络协议新标准,重点优化移动弱网场景,以更小带宽,实现更快的传输,面对复杂移动场景,提供弹性可伸缩的网络服务,平衡前后台的业务体验;
  • 应用服务技术,遵循API First理念,解决接口大规模稳定快速投放,扩展丰富的请求模式/传输协议/压缩算法等,探索端云交互一体化新模式和端云研发新模式;
  • AI技术,依托于大模型近来的突飞猛进,我们承担着进一步提升淘宝业务研发效率和体验的使命,包括多模态代码生成(一句话需求生成逻辑代码/一张视觉稿生成UI代码/基于一段真实代码生成单测代码)、问题诊断(线上Crash诊断/端到端问题自动定位/构建失败诊断/场景化性能诊断调优)、研发助理(领域知识答疑/最佳实践问答)等等。

总结下来就是原生、底层、工程、网络、应用服务以及AI技术。文章中还提到了这些方向的部分代表作:

  • 原生动态化技术:基于play core的动态化方案,具备了Replugin(360)和Qigsaw(iQiyi)合并的优势,既支持插件化,又支持组件动态化;
  • 原生研发框架DX 4.0,以Kotlin+Compose为标准,声明式/响应式/状态管理/一码多屏为特性,基于原生系统UIKit构建原生渲染管线、基于KMP构建面向多平台的编译体系,支持原生组件和能力的快速定制和扩展;
  • 自绘渲染引擎Weex 2.0,自建符合 Web 标准的自绘渲染引擎,包含执行代码/节点构建/布局/绘制/合成/光栅化/上屏等完整渲染管线;建立字节码离线编译的工程体系,编译期可进行耗时更高更彻底的优化,并支持标准 ESM 模块、多文件拼接、动态执行脚本、模块搭建等能力;弹性可扩展的容器和插件能力,支持全页/浮层/卡片/小部件/Embed 等多种形态及插件;
  • 流式SSR技术,业界率先尝试零运维流式 SSR 托管服务,简化流式 SSR 页面研发成本,相对业内中心化 SSR 渲染方案,引入了 CDN ER 的边缘能力,降低客户端渲染压力,并实现就近的渲染快照,实现极致的 FCP 时间;
  • LSM对象存储技术,业界腾迅开源的MMKV、mongodb的子项目realm都是针对移动端的对象/键值存储方案,分别使用了MVCC等存储模型用于提升高并发场景的性能,但没有针对Flash存储(SSD/UFS/)特性的优化。sqlite的btree模型对大对象键值存储的读写放大系数较高。我们针对Flash存储特性(块读写机制、垃圾回收机制等)实现的LSM Tree,支持了内存压缩、冷热分区、碎片化抑制等特性,在读写放大系数和吞吐性能上有显著优势,大量应用在移动端上图片及小文件缓存等场景;
  • 终端APP到全链路的观测与性能技术,立足Android/iOS原生特性提供APP维度的观测套件,以及各类APP高性能框架、组件,实现端性能持续优化与业务迭代;立足OpenTelemetry提供终端访问云上服务的全链路分布式技术规范与观测套件,实现终端RPC、远程配置、消息、大文件上传/下载等高性能中间件,支撑业务链路优化与治理;
  • 终端工程构建技术,以流水线为主要支撑,通过灵活的配置插件形成统一的构建流水线,我们沉淀了终端丰富的工程构建工具链,支持iOS/Android/PC/IOT等多终端的自定义,同时结合私有化部署能够完全开放定制整个工程构建生产链路;
  • 高性能网络技术,在IETF国际标准组织,主导Multipath-QUIC协议标准化进程(作为协议第一作者);有4篇网络领域顶级学术会议论文和期刊收录,包括网络学术Top1顶会SIGCOMM 21发表论文<XLINK>/顶会NSDI收录<TECC>等;开源国内首个标准化协议库XQUIC(git star 1.5K)/开源高性能云原生网关Tengine(git star 12.2K);网络领域专利授权超过20个以上。

阿里电商未来主要会通过先进的人机交互技术,如手势控制、面部识别、语音助手,以最自然的方式同设备进行交互,无需学习复杂的操作,为我们提供将更优雅的用户体验。

腾讯、微信

微信主要还是针对C++跨平台,迭代了WCDB以及探讨了C++模版代码膨胀问题,也还是老生常谈,下面是搜集到的几篇文章:

  • 无障碍功能框架:如何让残疾/老龄群体更好使用微信?
  • Android微信客户端是如何支持R8构建的?
  • 视频号直播:如何进一步降低功耗占用?
  • 从入门到精通:如何解决C++模板代码膨胀问题?
  • 五年沉淀,微信全平台终端数据库WCDB迎来重大升级!
百度

百度主要分享了iOS包体积优化,里面介绍的很多手段大家也或多或少的有在使用了。
在这里插入图片描述

字节、抖音

字节抖音分享了ANR自动归因平台建设的实践:抖音 ANR 自动归因平台建设实践,ANR采集完成后原因归类和移动端技术已经没有太大关系了,还是平台能力建设。

京东

京东基于自身研发的小程序框架对纯血鸿蒙做了适配:使用Taro开发鸿蒙原生应用——当Taro遇到纯血鸿蒙,是小程序跨端方案在鸿蒙的延伸。

滴滴

在这里插入图片描述

滴滴发布的400+页技术实践干货合集,助你开启新旅程,对质量和效能都有提及,但是对移动端已经没有只言片语。

美团

在这里插入图片描述

600+页电子书,前端、后端、算法、测试、运维系列大合集 中,移动端也是R8和热修复,以及平台能力建设。

小红书

小红书发布了一个跨Android、iOS、鸿蒙的播放器,比较商业播放器和开源ijk没有看到特别明显的优势,不过也是今年看到为数不多的轮子。

行业大会

四月份去了一天InfoQ组织的QCon开发者大会,整理了一下大会的主题和分享内容:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

看分享主题全部都是AI,不愧是AI元年,哪个方向都和AI有关。
重点看一下移动端方向:

  • 自研OS时代的大终端
    • 钉钉 Apple Vision Pro 创新之旅
    • 突破开发与测试的技术栈壁垒——注入式方案在性能调优与自动化测试中的运用
    • Android 工程元数据配置系统:助力超大型工程研发效能
  • 自研 OS 时代的大终端(HarmonyOS 专题)
    • 高德地图的鸿蒙化经验——追求极致体验
    • 闲鱼应用基于 Kun/Flutter 在鸿蒙 OS 上的移植实践
    • Taro 适配鸿蒙的框架原理和性能优化
    • 小红书鸿蒙一多工程实践——基于鸿蒙一多特性打造多设备使用体验
  • 大前端
    • MIX:饿了么小程序从端智能到智能体验的探索
    • Rust 如何引领前端基建新潮流以及字节跳动的应用
    • Kotlin Multiplatform 基于 Bazel 的逻辑层跨平台 (iOS、Android、Harmony) 实践
    • Web 前端技术在智能电动汽车行业的探索
    • Web 前端技术在智能电动汽车行业的探索

移动端主要是鸿蒙方向为主,还有一部分是提效相关的(跨段等手段),还有就是钉钉在Version Pro中的尝试这三个方向。

移动端主要方向分析

通过上面的分析我们把移动端分成下面几个方向讨论:

业务迭代

随着各个行业增长的停滞,业务需求真的没有那么多了,但是业务需求和功能维护还是移动端主要的需求方向,但是在这个方向上,其实没有什么技术门槛了,学历、履历、年龄开始成为AI的筛选目标(对,没错,现在HR已经开始用AI来筛选工具了,限制条件写好,简历往kimi一传,结果清晰调理),开始后悔没有考个好学校了。

鸿蒙

在现在看,鸿蒙的结果还是扑素迷离,但是不得不承认,鸿蒙带来了一些需求和岗位,所谓的技术创新特别依赖华为生态,对于开发者来说没有带来技术创新,对于企业来说是一种负担,不会带来增长,还得花钱去开发和维护。真正有一天生态足够开放,可以万物互联,对于开发者和消费者才是真正的福音。

系统应用/Framework/驱动开发

不管是鸿蒙的南向开发,还是车企间的互相较真,Framework还有一些岗位,但是一直以来都很小众。

提效

越是环境不好的时候企业越是关注效能,对于移动端来说,跨端一直是个尝试方向,虽然Flutter前端时间在传谷歌Flutter团队被裁,但是市场上一些新APP,特别是出海方向的,Flutter也是主流选择。目前随着鸿蒙的加入,双端边三端,跨平台的收益更明显,鸿蒙的ARK-X还在萌芽的萌芽,难堪大用,Flutter还是主流方式。

还有一些企业在搞多栈,就是一个人把前端后端的都搞了,这块我没有看到太明确的收益,对于开发者好,可以尝试一些其他方向技术,但是对于公司的收益,具体怎么提效,没有见有人说明白的,都说分工产生能效,现在打破分工对于企业来说可能也是一厢情愿的“提效”。

AI编程助手在国际市场上,GitHub Copilot 成为一枝独秀,JetBrains AI、Codium 也紧追不放。开发者们获得了数倍的效率提升。而在国内市场,各大厂商也纷纷投入资源,大力推出自家的平替工具。比如: Baidu Comate、智谱CodeGeeX、阿里通义灵码、腾讯云 AI 代码助手、华为CodeArts Snap、讯飞iFlyCode、商汤代码小浣熊,这些助手对于编程提效是实实在在的,企业如果抛开代码安全的考虑,工程师使用这些工具可以极大的提升开发效率。

XR

视觉方向,苹果推出的 Version Pro震撼了好多人,在这个方向一直有人在搞,但是一直没有很成熟的产品,无法大众化的铺开,可能还是缺乏真正的技术。一些业务性质特殊的企业会投人在这个方向做一些尝试。

AI

AI很火,但是和移动端都没有太大的关系,端侧部署的大模型,效果还是很差,无法找到落地场景,只能做一些大模型衍生的应用工具,在语音、图像等方向,算法的方向也都放到了大模型多模态方面,传统的图像识别等也很少在进行迭代。

在[[2023移动端技术探索]]中分析的性能优化、架构设计、开发平台搭建、音视频方向目前都没有太大的潜力,性能优化在经过前几年的努力,现在一方面趋于稳定了,另一方面配套的工具已经搭建好了,当做常规需求消化即可;架构设计、平台搭建因为没有增长,所以也不在需要那么多轮子了;音视频方向也建设的七七八八,顶不住的直接采购也是不错的选择,所以这些方向没有单独讨论的必要了。

未来展望

市场行情很不乐观,现在不是去造几个轮子或者怎么造轮子的事情了,因为未来可能根本不需要轮子。
汽车不是马车上安装了一台发动机,而是一种全新的体验。
未来的AI可能是一种我们现在完全想不到的心态,终端也不是现在遮遮掩掩的开发生态,而是真正能万物互联的新体验。
在这里插入图片描述

我们应该潜行修炼,现在看技术已经没有那么重要,但是技多不压身,还是要好好修炼,一切重要性都存在想象中,而重要性又是在比较重显现。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1834468.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Folly,一个强大的C++库

目录 1.引言 2.Folly库的特点 3.Folly库的应用场景 4.示例代码 5.总结 1.引言 Folly 是Facebook开发的一个开源、无许可&#xff08;Apache 2.0&#xff09;的现代C库&#xff0c;旨在提升性能和简化编写复杂任务的工作流程。它包含了一系列用于系统级编程的工具&#xff…

联华集团:IT团队如何实现从成本中心提升至价值中心|OceanBase 《DB大咖说》(十)

OceanBase《DB大咖说》第 10 期&#xff0c;我们邀请到了联华集团的CTO楼杰&#xff0c;来分享他如何思考 IT 业务价值&#xff0c;以及联华华商数据库的升级实践。 楼杰从大学毕业后就进入了联华工作&#xff0c;并一直扎根在近 20 年的&#xff0c;从一名底层的技术员成长为…

Swift Combine — Future和Promise的使用

平时在开发的过程中&#xff0c;免不了进行异步编程&#xff0c;比如进行网络请求&#xff0c;以前异步编程的时候主要采用两种方法&#xff1a; 通过代理方法&#xff0c;设置代理&#xff0c;实现代理方法。通过闭包block块处理。 采用第一种方法代码分家&#xff0c;不利于…

eNSP学习——配置DHCP中继

目录 主要命令 原理概述 实验目的 实验内容 实验拓扑 实验编址 实验步骤 1、基本配置 2、搭建OSPF网络 3、配置DHCP服务器 4、配置DHCP中继 5、配置PC获取地址方式为DHCP 主要命令 //配置指定DHCP服务器的方法 //方法一&#xff1a;在面向PC的接口下直接配置DHCP服…

CentOS 7.9上创建的JBOD阵列恢复(二)

系列文章目录 CentOS 7.9上创建JBOD&#xff08;一&#xff09; CentOS 7.9检测硬盘坏区、实物定位&#xff08;三&#xff09; 文章目录 系列文章目录前言一、用命令查看是否认到盘二、直接组JBOD三、挂载到新目录四、查看原数据总结 前言 在CentOS 7.9上创建了一个软阵列JB…

游戏运营与发行:从入门到实践

&#x1f482; 个人网站:【 摸鱼游戏】【神级代码资源网站】【工具大全】&#x1f91f; 一站式轻松构建小程序、Web网站、移动应用&#xff1a;&#x1f449;注册地址&#x1f91f; 基于Web端打造的&#xff1a;&#x1f449;轻量化工具创作平台&#x1f485; 想寻找共同学习交…

数据中心分类和类别综合指南

数据中心可根据其规模、功能、所有权、层级和部署方法进行分类。以下是一些典型的数据中心类别和分类。 数据中心的分类和分级 根据尺寸 1. 小型数据中心&#xff1a;通常是为了满足对IT基础设施需求较少的组织或小型企业的需求而创建的。与大型数据中心相比&#xff0c;小型…

Redis缓存设计之常见问题及解决方案

背景&#xff1a;缓存的常见问题及对应的解决方案进行了整理&#xff0c;给大家分享一下。 1.缓存穿透 缓存穿透是指查询一个根本不存在的数据&#xff0c; 缓存层和存储层都不会命中&#xff0c; 通常出于容错的考虑&#xff0c; 如果从存储 层查不到数据则不写入缓存层。 缓…

【深度学习】GPT-3,Language Models are Few-Shot Learners(一)

论文&#xff1a; https://arxiv.org/abs/2005.14165 摘要 最近的研究表明&#xff0c;通过在大规模文本语料库上进行预训练&#xff0c;然后在特定任务上进行微调&#xff0c;可以在许多NLP任务和基准上取得显著的进展。虽然这种方法在结构上通常是任务无关的&#xff0c;但…

国内外LabVIEW开发的区别

​分析国内外在LabVIEW开发中的差异需要从多个方面进行比较&#xff0c;包括界面设计、架构设计、注释与文档、调试方法、维护策略以及升级与迭代管理等。 界面设计&#xff1a; 国外的LabVIEW界面设计通常更加注重用户体验和视觉美观&#xff0c;使用现代化的控件和布局&…

基于ResNet-18的简单分类(新手,而且网络效果不咋滴,就是学个流程)

引言 先看问题&#xff1a; 我手边有一数据集&#xff0c;然后我想分分类&#xff01;~~ 咳咳&#xff0c;最近刚做了一个&#xff1a;训练集有1143张&#xff0c;分为5类&#xff0c;里面图片是打乱的。测试集有248张&#xff0c;想把它分分类看看咋样。 再看一下效果: …

mellanox HCA IB网卡固件更新

注意事项&#xff1a; 1.如果PSID以SGN开头&#xff0c;说明该产品是曙光的OEM产品&#xff0c;可以向HPC高速网络部获取固件。如果PSID以MT开头&#xff0c;说明该产品是Mellanox或nvidia的标准产品&#xff0c;可以通过官网下载固件。 2.通过官网获取固件&#xff0c;一定要…

Nginx缓存之web缓存配置

Web 缓存可节约网络带宽&#xff0c;有效提高用户打开网站的速度。由于应用服务器被请求次数的降低&#xff0c;也相对使它的稳定性得到了提升。Web 缓存从数据内容传输的方向分为前向位置缓存和反向位置缓存两类。如下图所示。 前向位置缓存既可以是用户的客户端浏览器&#x…

【免费API推荐】:轻松集成,为您的应用增添更多价值(9)

开发者喜爱的免费API是他们在开发过程中最宝贵的伙伴。这些API提供了丰富的功能和数据&#xff0c;帮助开发者构建出令人惊叹的应用。无论是地图服务、社交媒体集成、数据分析还是人工智能&#xff0c;这些免费API为开发者提供了强大的工具和资源&#xff0c;让他们能够更轻松地…

任务4.8.3 利用SparkSQL统计每日新增用户

实战概述&#xff1a;利用SparkSQL统计每日新增用户 任务背景 在大数据时代&#xff0c;快速准确地统计每日新增用户是数据分析和业务决策的重要部分。本任务旨在使用Apache SparkSQL处理用户访问历史数据&#xff0c;以统计每日新增用户数量。 任务目标 处理用户访问历史数…

兴业法拍网周报|在北京你是选择租房还是买房?(6.10-6.14)

西城区金融世家10号楼6单元801、803&#xff08;共两套&#xff09; 位置优越:金融世家所在区域位于国家政治中心和国家金融管理中心&#xff0c;是凝集国家“政经”的焦点。临近长安街、金融街、西二环交通动脉&#xff0c;道路通畅便捷&#xff0c;保值率高。 优质教资:附近…

Objective-C 学习笔记 | KVO(key-value obsereving)

Objective-C 学习笔记 | KVO&#xff08;key-value obsereving&#xff09; Objective-C 学习笔记 | KVO&#xff08;key-value obsereving&#xff09;使用 KVOKVO 的工作原理 Objective-C 学习笔记 | KVO&#xff08;key-value obsereving&#xff09; KVO 是指当指定的对象…

如何掌握 Java 中的国际化和本地化

随着全球化的发展&#xff0c;软件开发不仅要满足本地用户的需求&#xff0c;还要满足全球用户的需求。因此&#xff0c;软件的国际化&#xff08;Internationalization&#xff0c;I18N&#xff09;和本地化&#xff08;Localization&#xff0c;L10N&#xff09;显得尤为重要…

为什么网上这么多破解 Intellij IDEA 的工具,但是官方却不管呢?

大家好&#xff0c;我是小2&#xff0c;一个程序员~ 程序员小2 每天一篇技术重磅好文&#xff0c;涉及一线互联网大厂应用架构&#xff08;高可用、高性能、高稳定&#xff09;&#xff0c;AI、大数据、java架构等热门领域。 112篇原创内容 公众号 来源&#xff1a;Java知音…

【代码随想录——动态规划——第五周】

1.单词拆分 func wordBreak(s string, wordDict []string) bool {n : len(s)dp : make([]bool, n1)dp[0] truefor j : 0; j < len(wordDict); j {if len(wordDict[j]) > n {continue}if wordDict[j] s[:len(wordDict[j])] {dp[len(wordDict[j])] true}}//fmt.Println(…