网易首页 > 网易号 > 正文 申请入驻

在 Lyft 创建 iOS 应用扩展的挑战

0
分享至

作者 | Sergio De Simone

译者 | 王强

策划 | Tina

在最近的一篇文章中,Lyft 工程师 Artur Stepaniuk 和 Max Husar 描述了 Lyft 如何处理为其 iOS 应用创建应用扩展的复杂性,其难点在于不打破苹果设置的严格的 RAM 和二进制大小限制,也不损害用户体验。

Lyft 的 iOS 应用包含一个扩展,可将其与 Apple Maps 集成,并在 Maps 应用内提供有关 Lyft 优惠的信息。正如 Stepaniuk 和 Husar 所解释的那样,以有效方式创建 iOS 应用扩展的关键是正确管理依赖项,以尽可能提高应用和扩展中的代码重用率,同时优化二进制大小和内存使用率。

此过程中的主要复杂因素是无法使用动态链接来避免在启动时将它们加载到内存中的成本,这会让应用程序在启动时过于缓慢。这使得静态链接成为唯一可行的选择,尽管代价是增加应用程序二进制大小及其内存占用。但是,

更大的二进制大小会导致更长的下载和安装时间,从而可能减少安装数量。最坏的情况是达到 200 MB 的下载大小限制,这会在使用蜂窝数据下载应用程序时触发额外的确认对话框。

在内存方面,Lyft 工程师发现扩展可能只能使用 20 到 50MB 的 RAM,具体取决于 iOS 版本、设备型号和其他因素。

为了减少应用程序二进制大小和内存占用,Lyft 工程师分析了他们应用程序的依赖关系图,以确定占用最大的模块。由于 Lyft 使用 Bazel,他们依靠图形可视化软件 Graphviz,使用 query --output=graph 命令从 Bazel 生成的数据创建图像。

为了详细测量二进制大小影响,可以将每个模块作为唯一的依赖项添加到 Apple Maps 扩展,并使用 binary-size-diff 工具进行分析。

binary-size-diff 是一种对比基础分支和给定拉取请求之间的二进制大小差异的工具。这样就可以测量删除(或包含)依赖项的实际效果。

获得该信息后,下一步就是识别所有看起来没必要加入的依赖项。为此,Lyft 工程师使用了 Bazel 的另一个功能来显示两个模块之间的传递依赖关系。

bazel query 'allpaths(INITIAL_MODULE_PATH:INITIAL_MODULE_NAME, TARGET_MODULE_PATH:TARGET_MODULE_NAME)' --output=graph | grep -v 'node \[shape=box\];' > relations.dot

此命令会显示将所调查模块与其每个较大依赖项连接起来的路径中包含哪些模块,这样你就可以删除它们或使目标模块不依赖它们。在某个场景下,Lyft 团队决定复制一项服务以创建最小依赖项,目的是打破对较大模块的依赖。

使用这种方法,Lyft 工程师将其扩展的二进制大小从 45MB 减少到了 15MB。虽然 30MB 的减少对于服务端或桌面应用程序来说并不重要,但它相当于 200MB“安全”大小限制的 15%。

Stepaniuk 和 Husar 的文章包含了与发布应用扩展过程相关的其他细节,例如如何确保扩展可用于所有受支持的区域、使用 APPLICATION_EXTENSION_API_ONLY 构建设置的效果以及 SiriKit 特性,因此如果你对这些主题感兴趣,请不要错过它。

Challenges of Creating iOS App Extensions at Lyft(https://www.infoq.com/news/2024/12/lyft-ios-maps-extension/)

声明:本文为 InfoQ 翻译,未经许可禁止转载。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

相关推荐
热点推荐
台积电创办人张忠谋:如果想扼杀中国大陆,中国大陆真的无能为力

台积电创办人张忠谋:如果想扼杀中国大陆,中国大陆真的无能为力

混沌录
2026-02-27 21:29:05
45岁的李娟近况曝光,住15W的房子,不生孩子也不上班,选择隐居

45岁的李娟近况曝光,住15W的房子,不生孩子也不上班,选择隐居

查尔菲的笔记
2026-03-05 18:13:12
有钱了!中超最贵标王出炉:武汉三镇5年内第3次签下标王

有钱了!中超最贵标王出炉:武汉三镇5年内第3次签下标王

邱泽云
2026-03-05 18:18:21
央视公布!中国卫星立大功,全程直播美军行动,一举一动尽收眼底

央视公布!中国卫星立大功,全程直播美军行动,一举一动尽收眼底

李健政观察
2026-03-05 14:23:55
当韩国人知道韩国很小中国很大后,是完全颠覆他们认知的!

当韩国人知道韩国很小中国很大后,是完全颠覆他们认知的!

夜深爱杂谈
2026-02-25 21:23:43
聚焦波斯:伊朗死亡人数增至1045人,以色列又夺取叙利亚3个村庄

聚焦波斯:伊朗死亡人数增至1045人,以色列又夺取叙利亚3个村庄

史政先锋
2026-03-05 11:37:20
美国的汽油价格“暴涨”至每加仑三美元 - 约每升0.79美元

美国的汽油价格“暴涨”至每加仑三美元 - 约每升0.79美元

一种观点
2026-03-03 11:16:17
不足17公里却耗时8年分三段修建!成都地铁18号线三期通何时开通

不足17公里却耗时8年分三段修建!成都地铁18号线三期通何时开通

科学发掘
2026-03-05 18:08:09
比原子弹更稀有!全世界仅有两个国家掌握,高端光刻机究竟有多难

比原子弹更稀有!全世界仅有两个国家掌握,高端光刻机究竟有多难

博卜talk
2026-03-03 17:00:17
俄罗斯在乌克兰遭遇2023年11月以来最惨单月

俄罗斯在乌克兰遭遇2023年11月以来最惨单月

刀刀观察
2026-03-04 00:12:07
爱泼斯坦帮凶医生曝光:直接在餐桌上给女孩缝针,太狠了……

爱泼斯坦帮凶医生曝光:直接在餐桌上给女孩缝针,太狠了……

新欧洲
2026-03-04 19:48:55
伊朗飞行员驾机撞舰视频竟是游戏画面,网友评论:白哭一回

伊朗飞行员驾机撞舰视频竟是游戏画面,网友评论:白哭一回

历史总在押韵
2026-03-04 23:22:58
迪丽热巴被困迪拜最新!家属证实她已死里逃生,但麻烦事还在后面

迪丽热巴被困迪拜最新!家属证实她已死里逃生,但麻烦事还在后面

潮鹿逐梦
2026-03-04 18:33:10
伊朗一旦倒下,下一个就是中国?不慌,中方早已准备了三个后手

伊朗一旦倒下,下一个就是中国?不慌,中方早已准备了三个后手

三农老历
2026-03-04 21:15:21
开年暴击,公司全员大降薪,工作群已沸腾!

开年暴击,公司全员大降薪,工作群已沸腾!

黯泉
2026-03-03 22:14:47
2026胡润全球富豪榜发布,马斯克5.5万亿元一骑绝尘

2026胡润全球富豪榜发布,马斯克5.5万亿元一骑绝尘

IT之家
2026-03-05 14:45:18
19家公司公布年报 5家业绩增幅翻倍

19家公司公布年报 5家业绩增幅翻倍

证券时报
2026-03-05 10:51:02
无语!平顶山母女遗产案爆出操作猛如虎,舅舅舅妈吃绝户!

无语!平顶山母女遗产案爆出操作猛如虎,舅舅舅妈吃绝户!

社会日日鲜
2026-03-04 06:58:18
2387亿,零售之王资产清零

2387亿,零售之王资产清零

投资家
2026-03-05 20:07:37
赖清德面临着重大抉择,转变“台独”立场统一,功绩有望载入史册

赖清德面临着重大抉择,转变“台独”立场统一,功绩有望载入史册

南风不及你温柔
2026-01-05 08:11:52
2026-03-05 21:19:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
12110文章数 51786关注度
往期回顾 全部

科技要闻

阿里内部邮件回应:批准林俊旸辞职

头条要闻

美军罕见公开袭击伊朗武器清单 专家:意对伊朗施加压

头条要闻

美军罕见公开袭击伊朗武器清单 专家:意对伊朗施加压

体育要闻

不开玩笑,没人想在季后赛碰上黄蜂

娱乐要闻

谢娜下场撕薛之谦,张杰前女友爆猛料

财经要闻

“十五五”开局之年,这么干!

汽车要闻

15.98万元起 第三代领克03大尾翼版上市

态度原创

本地
亲子
房产
公开课
军事航空

本地新闻

食味印象|一口入魂!康乐烤肉串起千年丝路香

亲子要闻

别让萌娃轻易开口,一开口就是灵魂拷问

房产要闻

超猛!又有2800套房源砸出,2026海口安居房,彻底爆发!

公开课

李玫瑾:为什么性格比能力更重要?

军事要闻

2026年中国国防预算增长7%

无障碍浏览 进入关怀版