• 博客(9)
  • 收藏
  • 关注

原创 卡死 App 的神秘字符串,究竟是何方神圣(下)

一、卡死 App 字符串的神秘之处延续上篇的内容,本文将继续分析神秘字符串导致 App 卡死的问题。在继续翻阅源码和 Debug 的过程中,我们会遇到几个概念,比如 runs 和 level,在 getOffsetBeforeAfter 的入参也能看到它们。在继续分析这个问题之前,我们先来了解几个关于文字排版的基础知识,以帮助我们更加顺畅地理解后面的分析过程。这部分包含对网络资料的摘录整理以及一些个人的理解,如有纰漏还请老铁们不吝赐教。Unicode 断行算法断行是为了在显示一长

2021-09-28 16:11:32 582

原创 卡死 App 的神秘字符串,究竟是何方神圣(上)

一、事情是这样的我正在热火朝天地吃着面的时候呢,老大在群里 @ 了我一下,吓得我碗都掉面里了。于是无知的我为了体验一下这个 Bug,就把神秘代码复制直接发群里了。发完之后,点了点,戳了戳,发现没卡死呀。但是等了半响,突然察觉到事情有些不太对劲。对不起????‍♂️二、“卡死”是怎么产生的cue 完之后我们来看一下这个问题。我在 Pixel2 (8.1.0) 设备上用微信 8.0.7 重现了这个问题,但是之前在 Redmi Note 3 (5.0

2021-09-28 16:00:38 656

原创 一个JavaScriptCore框架中对象与Timer引发的死锁问题内幕

背景介绍在奥运项目中,快手主站的首页入口挂件、金牌时刻弹窗需要进行动态布局和渲染,因对性能要求较高,我们采用了 JavaScriptCore 与 Native 交互的技术方案。在上线灰度放量的过程中,我们发现一个长卡顿问题占比明显上升,于是我们开始排查。其最后的调用栈信息如下:经过分析排查,我们发现此问题具有以下特点:1.Native 执行 JS 的方法时,问题发生概率较大。2.从系统分布来看,问题只会在 iOS 13 系统出现。3.从堆栈信息来看,无法判定问题发生的业务代码位置,只

2021-09-28 14:27:50 586

原创 快手海外Swift/ObjC混编与二进制化工程实践

背景介绍在苹果的全力推动下,Swift逐渐成为MacOS和iOS生态的主力语言,以替换老旧的ObjectiveC语言(以下简称OC)。自Swift诞生以来,苹果不断完善语言的表达能力和生态环境,使其从饱受诟病到日趋完善。Swift语言具有语法简洁、多范式、健壮性强、性能高等诸多优点,如今越来越多的开发者投入到了Swift的怀抱,快手海外客户端团队在Kwai-Pro、MV Master、Zynn等项目中也积累了不少Swift和OC混编的经验。为了有效提高编译效率,团队又进一步展开了对Swift/OC二

2021-09-28 14:00:12 887

原创 Flutter系列(三):Flutter挑战复杂页面!视频编辑页面来袭。

目前市面上的Flutter都普遍用于一些简单页面,单纯铺设UI,而开眼快创作为完全使用Flutter开发的APP,除了简单的信息流页面,还有更重要的页面——视频编辑页面和模版视频制作页面。今天主要介绍一下开眼快创的视频编辑页面是如何生成和优化的。在进入开眼快创项目之前,项目里有很多人甚至对Flutter是完全没有了解的,再加上当时市面上还没找到用Flutter写视频编辑页面的APP,因此很多技术方案都经过了漫长的摸索和迭代。首先,熟悉一下开眼快创APP中视频编辑页面的基本样式(如下图):视频

2021-09-28 11:42:02 1532

原创 Flutter系列(二):Flutter在开眼快创的工程演进实践

上篇文章分享了开眼快创在Flutter跨端实现上的一些实践,本篇文章继续介绍一下Flutter在音视频领域的实践和探索,以及在工程提效方面的一些工作。音视频实践开眼快创的业务场景有很多的音视频功能,包括视频播放、直播、模板视频、视频编辑等,后续可能还会增加拍摄功能。其中最复杂的是视频编辑模块,主要有以下几个特点: 功能复杂,包含导入、导出,剪辑:分割、删除、变速、复制、排序,音乐:原声、音乐、音效、录音,字幕,滤镜、特效,多轨道,撤销,草稿等等功能; 状态复杂,太多视频编辑的状态

2021-09-28 11:13:25 768

原创 Flutter系列(一):Flutter在开眼快创的实践

背景介绍随着跨端方案技术的不断演进,Flutter作为新一代自渲染引擎跨端方案,也随之受到了越来越多业内开发者的青睐,并且因为官方以及社区开发者持续对其版本进行迭代与优化,解决了大部分的性能和易用性问题,所以,Flutter也快速进入了 2.0时代。开眼快创[1]是围绕商业化广告创意构建的一款产品,其目标人群涵盖了供应商、代理商、广告主、商家号以及视频行业等从业者,产品的目标是提供智能化生产素材相关的产品能力,从而达到降低商业属性用户生产(创意制作)门槛的目的,大幅提升广告创意质量,提高素材消耗。它

2021-09-28 11:06:17 572

原创 A站 的 Swift 实践 —— 下篇

如何混编昨天刚刚结束的Google I/O让人想起了Kotlin在三年前曾经上过一次热搜,Google I/O官宣Kotlin替代Java,正式成为Android开发的首选语言。正所谓演进的力量,这一切都要归功于苹果公司在2014年推出的Swift替代了Objective-C,成为iOS乃至苹果全平台首选的开发语言,从而提高了iOS开发者的热情。上篇介绍了Swift的技术背景以及如何选择开发框架。下篇的内容会介绍大多数以OC为主体的工程如何与Swift共舞,以及如何利用Swift动态性解决工程难题。

2021-09-28 10:56:22 382

原创 A站 的 Swift 实践 —— 上篇

背景介绍AcFun俗称为“A站”,作为一款二次元内容社区产品,以“认真你就输了”为文化导向,倡导轻松欢快的亚文化。AcFun涵盖了中长视频,小视频,番剧,文章等众多内容,支撑这些内容的大部分功能都选择了用Swift开发,早在2019年,AcFun的iOS技术团队就已将Swift作为AcFun app和水母app的开发首选语言。Swift的出现为用户提供了更稳定的使用体验和更快的产品更新节奏,同时也为研发工程师创造了更高效舒适的开发体验。Objective-C已成过去时,AcFun正全面拥抱S...

2021-09-28 10:40:01 350

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除