# 老司机 iOS 周报 #149 | 2021-03-01

![ios-weekly](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/ios-weekly.png?raw=true)
老司机 iOS 周报，只为你呈现有价值的信息。

你也可以为这个项目出一份力，如果发现有价值的信息、文章、工具等可以到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 里提给我们，我们会尽快处理。记得写上推荐的理由哦。有建议和意见也欢迎到 [Issues](https://github.com/SwiftOldDriver/iOS-Weekly/issues) 提出。

## 文章

### 🌟 🐕 [一款可让大型 iOS 工程编译速度提升 50% 的工具](https://mp.weixin.qq.com/s/uBpkelG8q_xmskWPYyWONA)

[@JonyFang](https://github.com/JonyFang)：本文介绍了美团平台自研的一款 cocoapods 插件 `cocoapods-hmap-prebuilt`，该插件以 Header Map 技术为基础，进一步提升代码的编译速度，完善头文件的搜索机制，通过该插件可以大幅提升 iOS 工程代码的编译速度。文章前半部分主要介绍相关的原理，后面主要阐述在工程层面的实践，希望能给从事相关开发的同学带来一些帮助或者启发。

### 🐢 [Flutter 路由我定](https://juejin.cn/post/6932115520405635079)

[@CrazyCoderShi](https://github.com/CrazyCoderShi): Flutter 1.22 的版本更新了路由库, 目前最新的是 Navigator 2.0, 本文算是一个比较完整的 Flutter 路由科普文，对于 Flutter 路由不熟悉的同学，推荐仔细阅读.

### 🐕 [Is Apple Banning Free Analytics SDKs?](https://steamclock.com/blog/2021/02/apple-tracking-analytics-sdks/)

[@享耳先森](https://github.com/iblacksun)：iOS 14.5 发布时间临近，新版系统中，如果 App 使用了 IDFA，系统将请求用户授权，本文探讨了新的隐私机制对 App 开发者及统计 SDK 开发者有哪些影响、以及该如何应对。

### 🚧 🐕 [Universal Links 新鮮事](https://medium.com/zrealm-ios-dev/universal-links-%E6%96%B0%E9%AE%AE%E4%BA%8B-12c5026da33d)

[@红纸](https://github.com/nianran)：Universal Links 在 iOS 14 开始使用 CDN 来更新配置文件，并且加入了新的调试模式（在 applinks:domain.com 中加入 ?mode=developer）来解决 CDN 带来的更新延迟问题。本文的后半文，详细的介绍了如何搭建一个简易的本地测试环境来调试配置文件。

### 🐕 [飞猪 Flutter 技术演进及业务改造实践](https://mp.weixin.qq.com/s/08EK76jn-zkqS9flbrAbRA)

[@邦Ben](https://weibo.com/linwenbang)：该文介绍了飞猪团队在 Flutter 上的探索以及落地实践效果。其中重点提及了 Web on Flutter 的尝试，大致流程为：h5 js 代码解析后运行对接 Flutter Render 机制，为了提高 web 显示效果。同时也介绍了 XRay 自动化测试，一套截图识别的自动化测试方案，最大的好处是和具体平台代码无关，跨端效果很好。这也是大部分业务自动化方案采用的方案，有兴趣的童鞋也可以多看下。

### 🐕 [听说你想写个虚拟机（四）？](https://mp.weixin.qq.com/s/LHHDlhbuAMe8J6T3SPSaVg)

[@Leo](https://github.com/leomobiledeveloper)：虚拟机的概念大家或多或少都听说过，但你是否想过如何实现一个虚拟机呢？“写个虚拟机”文章是一个系列，这次推荐的是第四五六章节，作者从一个最小虚拟机开始介绍，到完成 LC-3 这个更加贴近真实意义的虚拟机。一步步从简单，到复杂，由浅入深，慢慢掀开了虚拟机的神秘面纱。

- [听说你想写个虚拟机（五）？](https://mp.weixin.qq.com/s/wTrLJNFlCZOuuPfIOJV_tA)
- [听说你想写个虚拟机（六）？](https://mp.weixin.qq.com/s/ecBgY_fiGVVs5zOD7Z1vtQ)

> 由 [silan-liu](https://github.com/silan-liu) 推荐

## 代码

### [gRPC Swift 1.0.0](https://github.com/grpc/grpc-swift/releases/tag/1.0.0)

[@EyreFree](https://github.com/EyreFree)：gRPC 是一个高性能、开源和通用的 RPC 框架，它基于 HTTP/2 标准设计，带来了双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特性，使得其在移动设备上表现更好、更省电和节省空间占用。本项目 grpc-swift 是它的 Swift 实现，在 4 天前发布了 1.0.0 正式版，可用于配合 Apple 官方的 [Swift Protobuf](https://github.com/apple/swift-protobuf) 一起使用。

### [stream-chat-swift](https://github.com/getstream/stream-chat-swift/)

[@AidenRao](https://weibo.com/AidenRao)：StreamChat SDK 附带有全部 UI（用户界面）组件，可在几分钟内实现 IM 应用程序的构建。这些组件可以在 iOS 和 macOS 之间无缝转换，只需在其行为上做出一些细微改变，就能实现每个平台所期待的用户体验，目前 SDK 已完全开源，非常适合学习 & 使用。

### 🐕 [EasySwiftHook](https://github.com/623637646/SwiftHook)
[@zvving](https://github.com/zvving)：Swift 中 hook 手段有限，对于 Dynamic Dispatch Function 还是有一些『可乘之机』。EasySwiftHook 基于 libffi 以及 objc runtime，hook 代码相对易读，支持 NSObject、Pure Swift Class，兼容 KVO、deinit 等。虽然应用受限于动态分发场景，依旧是不错的学习材料。

> 来自 [Yanni Wang](https://github.com/623637646) 自荐

### [ScheduledNotificationsViewController](https://github.com/nicephoton/ScheduledNotificationsViewController)

[@老峰](https://github.com/gesantung)：ScheduledNotificationsViewController 是一个本地通知调试工具，接入简单，可以方便的调试本地通知。支持查看待发送，已发送通知列表；支持点击直接发送；支持深色模式。

## 赞助者

虚位以待..

**非常感谢以上赞助者的支持，如果你也有赞助我们的兴趣，欢迎添加微信 iTDriverr 哦~**

## 内推

老司机周报团队联合知识小集和 SwiftGG 翻译组收录了一份靠谱的内推职位。

如果你想**找工作**，点这里：https://www.yuque.com/iosalliance/article/bhutav

如果你想**招人**，点这里：https://www.yuque.com/iosalliance/article/ycyhf3

当然，也欢迎你关注我们每一期的周报，我们会在每期周报底部及时更新编辑内推岗位。

## 关注我们

我们开通了公众号，每期发布时公众号（LSJCoding）会推送消息，欢迎关注。

![](https://github.com/SwiftOldDriver/iOS-Weekly/blob/master/assets/qrcode_for_wechat.jpg?raw=true)

同时也支持了 RSS 订阅：https://github.com/SwiftOldDriver/iOS-Weekly/releases.atom 。

## 说明

🚧 表示需某工具，🌟 表示编辑推荐

预计阅读时间：🐎 很快就能读完（1 - 10 mins）；🐕 中等 （10 - 20 mins）；🐢 慢（20+ mins）
