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

在 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-01-16 00:00:03
华晨宇演唱会造型辣眼睛:大红唇,金色长发配粉色衣服,娘味太重

华晨宇演唱会造型辣眼睛:大红唇,金色长发配粉色衣服,娘味太重

启迪你的思维
2026-01-15 22:40:14
李在明面见高市,绝口不提日本扩军,还提了个和中国有关的要求

李在明面见高市,绝口不提日本扩军,还提了个和中国有关的要求

博览历史
2026-01-15 04:30:03
离婚10个月,央媒发文,高调官宣38岁陈晓喜讯,陈妍希后悔了吗?

离婚10个月,央媒发文,高调官宣38岁陈晓喜讯,陈妍希后悔了吗?

查尔菲的笔记
2026-01-14 21:39:14
马年第一颗雷爆了!烧光500亿,“中国宝马”倒下

马年第一颗雷爆了!烧光500亿,“中国宝马”倒下

象视汽车
2026-01-14 07:00:03
吴晓求:若4100点还没挣钱,或不具备独立投资能力,ETF比很多个人投资者涨得好

吴晓求:若4100点还没挣钱,或不具备独立投资能力,ETF比很多个人投资者涨得好

界面新闻
2026-01-15 15:58:12
关灯吃面?48000万股牢牢封死跌停板:250亿资金惨遭闷棍…

关灯吃面?48000万股牢牢封死跌停板:250亿资金惨遭闷棍…

新浪财经
2026-01-15 17:13:16
媒体:多国空军排队购买枭龙战机

媒体:多国空军排队购买枭龙战机

财联社
2026-01-14 17:33:05
人民日报点名批评,这类主播将被严厉打击,乱象已经存在多年

人民日报点名批评,这类主播将被严厉打击,乱象已经存在多年

新游戏大妹子
2026-01-14 13:07:41
16位灯神大集结!

16位灯神大集结!

碧波万览
2026-01-16 02:50:03
棋圣聂卫平抗癌前放纵生活:贪食螃蟹、烟酒成瘾、豪饮百万茅台

棋圣聂卫平抗癌前放纵生活:贪食螃蟹、烟酒成瘾、豪饮百万茅台

章媸解说体育
2026-01-15 11:01:37
2026年棋牌室严查来袭!9条红线碰就罚,娱乐与违法就差这一步!

2026年棋牌室严查来袭!9条红线碰就罚,娱乐与违法就差这一步!

老特有话说
2026-01-15 19:15:47
笑不活!常坟镇上开了肯德基,网友:肯德基已经混到租这种房子了

笑不活!常坟镇上开了肯德基,网友:肯德基已经混到租这种房子了

火山诗话
2026-01-15 07:08:18
马斯克警告中国在AI计算和电力上大幅领先美国:中国电力产能2026年达到美国的3倍

马斯克警告中国在AI计算和电力上大幅领先美国:中国电力产能2026年达到美国的3倍

知识圈
2026-01-15 16:49:27
拼命的贺娇龙与将关掉102家门店的西贝

拼命的贺娇龙与将关掉102家门店的西贝

吴女士
2026-01-15 19:54:51
植入电极戒毒后,一起医疗试验引发的“副作用”争议

植入电极戒毒后,一起医疗试验引发的“副作用”争议

新京报
2026-01-15 10:21:12
中央纪委全会提年轻干部腐败,有何深意

中央纪委全会提年轻干部腐败,有何深意

中国新闻周刊
2026-01-15 20:02:26
央妈,动作来了!聪明的人已经在换方向了

央妈,动作来了!聪明的人已经在换方向了

子木聊房
2026-01-15 18:11:41
章泽天的新播客,干翻了“高知人设”

章泽天的新播客,干翻了“高知人设”

文娱先声
2026-01-15 17:35:18
加拿大打破核聚变世界纪录,为什么令整个能源行业震惊?

加拿大打破核聚变世界纪录,为什么令整个能源行业震惊?

百科密码
2026-01-15 16:05:03
2026-01-16 06:04:49
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
11945文章数 51701关注度
往期回顾 全部

科技要闻

阿里最狠的一次“自我革命”

头条要闻

白宫:特朗普正密切关注伊朗局势 并保留所有选项

头条要闻

白宫:特朗普正密切关注伊朗局势 并保留所有选项

体育要闻

聂卫平:黑白棋盘上的凡人棋圣

娱乐要闻

92岁陶玉玲去世,冯远征曹可凡悼念

财经要闻

央行再次结构性降息0.25个百分点

汽车要闻

吉利帝豪/缤越推冠军一口价 起售价4.88万

态度原创

健康
本地
数码
公开课
军事航空

血常规3项异常,是身体警报!

本地新闻

云游内蒙|黄沙与碧波撞色,乌海天生会“混搭”

数码要闻

部分内存条价格暴涨超300% 报告称存储市场进入超级牛市

公开课

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

军事要闻

美国已正式开始出售委内瑞拉石油

无障碍浏览 进入关怀版