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

在 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.

相关推荐
热点推荐
燃油车主请注意!10月1日车船税新政来袭,你的用车成本要变了

燃油车主请注意!10月1日车船税新政来袭,你的用车成本要变了

慧眼看世界哈哈
2025-09-17 05:19:02
中波双方谈完,波兰当着全球公布重大喜讯,欧盟:为何运气如此好

中波双方谈完,波兰当着全球公布重大喜讯,欧盟:为何运气如此好

墨兰史书
2025-09-18 06:10:07
大清已亡了111年,清东陵为啥还有守陵人,是谁给他们支付薪酬

大清已亡了111年,清东陵为啥还有守陵人,是谁给他们支付薪酬

老谢谈史
2025-09-17 20:14:26
彻底放权?国乒新主帅不选自己人,王励勤态度明朗,马琳终于有戏

彻底放权?国乒新主帅不选自己人,王励勤态度明朗,马琳终于有戏

忠橙家族
2025-09-18 19:06:57
女儿患恶性肿瘤,夫妻诉至法院欲离婚 法院判决:不准离婚!艰难时刻应聚焦于子女治疗

女儿患恶性肿瘤,夫妻诉至法院欲离婚 法院判决:不准离婚!艰难时刻应聚焦于子女治疗

红星新闻
2025-09-18 18:55:09
“三傻女政客”之一,刚上任就逼中国复交,中方:先拿点诚意再说

“三傻女政客”之一,刚上任就逼中国复交,中方:先拿点诚意再说

猫眼观史
2025-09-17 23:16:35
空铺、撤出、冷清!上海又一“巨型”商场沦为“鬼城”?

空铺、撤出、冷清!上海又一“巨型”商场沦为“鬼城”?

品牌观察官
2025-09-18 19:54:27
48:47,美国投票结果出炉,特朗普收到噩耗,他要支付351亿巨款

48:47,美国投票结果出炉,特朗普收到噩耗,他要支付351亿巨款

标体
2025-09-18 18:35:12
多地将从今秋起试行中小学“春秋假”

多地将从今秋起试行中小学“春秋假”

澎湃新闻
2025-09-18 10:04:08
太唏嘘!于朦胧母亲证实儿子意外坠亡,疑似表哥发声直言不能接受

太唏嘘!于朦胧母亲证实儿子意外坠亡,疑似表哥发声直言不能接受

萌神木木
2025-09-16 23:33:22
金正恩能力有多强?创造5个政界记录,有望成为世界级伟大人物

金正恩能力有多强?创造5个政界记录,有望成为世界级伟大人物

文史旺旺旺
2025-09-16 16:18:23
第80分钟,国安和河内球员爆发激烈冲突!

第80分钟,国安和河内球员爆发激烈冲突!

直播吧
2025-09-18 22:04:02
你身边有哪些经典的现世报?网友:总欺负我的一个同事把手机丢了

你身边有哪些经典的现世报?网友:总欺负我的一个同事把手机丢了

解读热点事件
2025-09-17 00:05:08
苹果首批iPhone 17 Pro做工感人:拼接缝隙宽度竟差了一倍

苹果首批iPhone 17 Pro做工感人:拼接缝隙宽度竟差了一倍

快科技
2025-09-18 08:50:53
明明有着大好前途,却毁在一句话上,周炜的消失并不无辜

明明有着大好前途,却毁在一句话上,周炜的消失并不无辜

吴东升成
2025-09-18 16:08:42
韩国釜山电影节红毯:有人似仙女下凡,有人拼命吸腹,有人成怪物

韩国釜山电影节红毯:有人似仙女下凡,有人拼命吸腹,有人成怪物

崽下愚乐圈
2025-09-18 14:04:55
“全球最佳降压药”已被纳入医保,除了可以报销,还有3大优势!

“全球最佳降压药”已被纳入医保,除了可以报销,还有3大优势!

深析古今
2025-09-16 08:31:14
缝纫自习室爆满!27岁杭州姑娘:一晚上就坐在缝纫机前,特别治愈

缝纫自习室爆满!27岁杭州姑娘:一晚上就坐在缝纫机前,特别治愈

极目新闻
2025-09-17 17:52:41
四小时连射1000箭,一张弓阻挡上万骑兵,中国最牛弓箭手如何练成

四小时连射1000箭,一张弓阻挡上万骑兵,中国最牛弓箭手如何练成

悦悦侃历史
2025-09-16 17:36:31
95后UCLA女留学生张晓宁在联合国大楼前举牌并失控杀人

95后UCLA女留学生张晓宁在联合国大楼前举牌并失控杀人

霹雳炮
2025-09-17 22:55:12
2025-09-18 23:27:00
InfoQ incentive-icons
InfoQ
有内容的技术社区媒体
11509文章数 51476关注度
往期回顾 全部

科技要闻

英伟达50亿美元投资英特尔,但代工免谈

头条要闻

重庆一家七口误食蘑菇中毒 60岁老人住进ICU

头条要闻

重庆一家七口误食蘑菇中毒 60岁老人住进ICU

体育要闻

身高170的他,让196的博尔特坐不住了

娱乐要闻

最美央视才女,甩掉孙红雷嫁给张嘉益

财经要闻

起底多校“发臭午餐”供应商绿捷

汽车要闻

女神代言/新增配色/智能升级 26款腾势N9售38.98万起

态度原创

本地
时尚
家居
房产
公开课

本地新闻

云游中国|谁懂!在天下第一关拍到史诗感大片

菜可以预制,信任不可以预支

家居要闻

多维交集 简意雅情结合

房产要闻

好猛!海南楼市,一批王炸楼盘杀出!

公开课

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

无障碍浏览 进入关怀版