Xcode 14.3 编译错误 Missing file libarclite_iphoneos.a

升级到 Xcode 14.3 编译部分工程出现错误

1
2
ld: file not found: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/arc/libarclite_iphoneos.a
clang: error: linker command failed with exit code 1 (use -v to see invocation)

查到是 Xcode14 支持最低版本是 iOS 11, 然后部分库基于 arc 的支持在 Xcode14.3 被移除了, 升级到 14.3 后无法链接, 就报错了

阅读全文 »

[转载] iOS端一次视频全屏需求的实现

原文地址

对于一个带有视频播放功能的app产品来说,视频全屏是一个基本且重要的需求。虽然这个需求看起来很简单,但是在实现上,我们前后迭代了三套技术方案。这篇文章将介绍这三种实现方案中的利弊和坑点,以及实现过程中积累的经验。

阅读全文 »

[转载] iOS性能优化实践:头条抖音如何实现OOM崩溃率下降50%+

原文地址

iOS OOM 崩溃在生产环境中的归因一直是困扰业界已久的疑难问题,字节跳动旗下的头条、抖音等产品也面临同样的问题。

在字节跳动性能与稳定性保障团队的研发实践中,我们自研了一款基于内存快照技术并且可应用于生产环境中的 OOM 归因方案——线上 Memory Graph。基于此方案,3 个月内头条抖音 OOM 崩溃率下降 50%+。

本文主要分享下该解决方案的技术背景,技术原理以及使用方式,旨在为这个疑难问题提供一种新的解决思路。

阅读全文 »

[转载] 抖音 iOS 启动优化 - 原理篇

原文地址

前言

启动是 App 给用户的第一印象,启动越慢用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实战。

本文从基础知识出发,先回顾一些核心概念,为后续章节做铺垫;接下来介绍 IPA 构建的基本流程,以及这个流程里可用于启动优化的点;最后大篇幅讲解 dyld3 的启动 pipeline,因为启动优化的重点还在运行时。

阅读全文 »

[转载] 抖音 iOS 启动优化 - 实战篇

原文地址

前言

启动是 App 给用户的第一印象,启动越慢,用户流失的概率就越高,良好的启动速度是用户体验不可缺少的一环。启动优化涉及到的知识点非常多,面也很广,一篇文章难以包含全部,所以拆分成两部分:原理和实战,本文是实战篇。

原理篇:抖音品质建设-iOS 启动优化《原理篇》

阅读全文 »

转载 今日头条 iOS 安装包大小优化 - 新阶段、新实践

原文地址

前言

今日头条 iOS 端从 2016 年起就关注到了安装包大小的问题,并启动了包大小优化。2017 年,我们将当时的经验发表为技术文章 《干货|今日头条iOS端安装包大小优化—思路与实践》[1]。

如今三年过去了。今日头条在继续探索包大小优化时实践了更多思路,包括构建配置、图片压缩、__TEXT 段迁移、二进制段压缩等。这些优化项在业务入侵较少的前提下给今日头条带来了显著的包大小收益。同时,整个业界在包大小优化上也产出了更多方案。因此我们更新文章,期待与大家共同交流包大小优化这件事。

阅读全文 »

[转载] iOS 稳定性问题治理:卡死崩溃监控原理及最佳实践

原文地址

不同于 Android 系统中的卡死(ANR)问题,目前业界对 iOS 系统中 App 发生的卡死崩溃问题并无成熟的解决方案,主要原因是:

  1. 通常 App 卡死时间超过 20s 之后会触发操作系统的保护机制,发生崩溃,此时在用户的设备中能找到操作系统生成的卡死崩溃日志,但是因为 iOS 系统封闭生态的关系,App 层面没有权限拿到卡死崩溃的日志。

  2. 一般而言用户遇到卡死问题的时候并没有耐心等待那么久的时间,可能在卡住 5s 时就已经失去耐心,直接手动关闭应用或者直接将应用退到后台,因此这两种场景下系统也就不会生成卡死崩溃日志。

由于上面提到的两个原因,目前业界 iOS 生产环境中的卡死监控方案其实主要是基于卡顿监控,即当用户在使用 App 的过程中页面响应时间超过一定的卡顿的阈值(一般是几百 ms)之后判定为一次卡顿,然后抓取到当时现场的调用栈并且上报到后台分析。这种方案的缺陷主要体现在:

阅读全文 »

[转载] 抖音 iOS 工程架构演进

原文地址

前言介绍

2016.09.26,抖音版本 1.0.0 上线,随后不断迭代优化和丰富产品,截止目前,抖音日活跃用户突破 6 亿,短短 4 年间,抖音从零爆发性增长。

快速的业务发展也对技术支撑提出了更高的要求,为了保障敏捷的业务开发,提升跨团队的协同合作效率,提高本地研发和 CI/CD 效率,抖音 iOS App 工程架构在不同的阶段进行了不同的技术方案的改进,满足合理的架构演化,同时又不影响正常的业务迭代速度。

阅读全文 »

[转载] 抖音iOS最复杂功能的重构之路–播放器交互区重构实践

原文地址

背景介绍

本文以抖音中最为复杂的功能,也是最重要的功能之一的交互区为例,和大家分享一下此次重构过程中的思考和方法,主要侧重在架构、结构方面。

交互区简介

交互区是指播放页面中可以操作的区域,简单理解就是除视频播放器外附着的功能,如下图红色区域中的作者名称、描述文案、头像、点赞、评论、分享按钮、蒙层、弹出面板等等,几乎是用户看到、用到最多的功能,也是最主要的流量入口。

阅读全文 »