当前位置:首页 > 科技  > 软件

一次炫技差点引发的惨案

来源: 责编: 时间:2024-05-16 09:09:24 105观看
导读大家好,我是坤哥今天和大家探讨一个话题:技术的稳定性到底有多重要。上周用三天的时间把原本预计至少一周才能改造完成的 iOS 项目在最新的 Xcode 15(iOS 开发 IDE)上成功跑起来了!其实说实话这个 iOS 项目用两周的时间在

大家好,我是坤哥YMA28资讯网——每日最新资讯28at.com

今天和大家探讨一个话题:技术的稳定性到底有多重要。YMA28资讯网——每日最新资讯28at.com

上周用三天的时间把原本预计至少一周才能改造完成的 iOS 项目在最新的 Xcode 15(iOS 开发 IDE)上成功跑起来了!YMA28资讯网——每日最新资讯28at.com

其实说实话这个 iOS 项目用两周的时间在 Xcode 15 上能不能跑起来我心里都没底,好在结果是好的。YMA28资讯网——每日最新资讯28at.com

这个项目过去四年了,是我司的主要盈利产品(返利 app),不过技术栈还比较陈旧,一些依赖用的 swift 3.0 写的(最新的 swift 版本是 5.5),在最新的 Xcode 15 上跑不起来,也就无法打包,那还了得,万一碰到什么 bug 无法打包解决问题可就大了。YMA28资讯网——每日最新资讯28at.com

其实五一前两周我们在迭代开发产品时就发现 4.29 日之后必须用 Xcode 15 打包,还好提前一周我们发现了这个问题,这样可以先降级到 Xcode 14 来开发打包,迭代的功能也顺利上线了。YMA28资讯网——每日最新资讯28at.com

但是 app 不能在 Xcode 15 上启动打包的问题终究是要解决的,于是五一回来之后我又马不停蹄地迭代这个 APP,以让它能在 Xcode 15 上跑起来,好在运气比较好,经过一番魔改(之后会提到)终于跑起来了。YMA28资讯网——每日最新资讯28at.com

四年对一个项目其实说长也长,说短也短,理论上像 Java 开发的项目,由于 JDK 通常设计为向后兼容的(兼容老版本),老项目通常能跑起来,为啥我们的这个 iOS 项目会有这样在最新版 Xcode 15 上跑不起来的问题呢。YMA28资讯网——每日最新资讯28at.com

主要原因其实是因为这个项目的 Pod(iOS 项目中的 Pod 类似 Java 中 Maven 管理的第三方依赖库)不少是由 Swift 开发(苹果 2014 年推出的编程语言),这些 Pod 库中有不少引用 OC(Objective-C,苹果系之前的主流开发语言)的代码。YMA28资讯网——每日最新资讯28at.com

在之前的 Xcode 中,工程是可以跑起来的,但是最新的 Xcode 15 对编译器等做了大量的的修改导致这些 Pod 都无法编译通过了,然后就跑不起来了,试了网上各种方法都不行。YMA28资讯网——每日最新资讯28at.com

这事其实很要命,试想如果发现线上有个 bug 需要紧急修复(比如无法提现),然后你的 app 却无法打包导致短时间内无法修复,很可能导致用户流失,业务停滞甚至公司倒闭的严重后果。YMA28资讯网——每日最新资讯28at.com

假使我们当时的技术人员统一在工程中都用 OC,而不是用 Swift 来写代码,那压根就不会出现这样的问题,如果一定要用 Swift,至少要等到 ABI 稳定之后再用。YMA28资讯网——每日最新资讯28at.com

「这里简单解释一下什么是 ABI 稳定:想象一下,有一座桥,这座桥连接了两座岛屿:一个岛是 Swift 语言自身,另一个岛则是操作系统,比如 macOS 或 iOS。这座桥就像是一个协议,确保两边可以互相理解和交流。在软件的世界里,这座桥就是“应用程序二进制接口”(Application Binary Interface,简称 ABI)。YMA28资讯网——每日最新资讯28at.com

Swift 的 ABI 稳定性可以比作这座桥的结构变得坚固且不再改变。初期,Swift 还在不断发展,这座桥每隔一段时间就需要重建一次,这意味着开发者如果使用了新版本的 Swift,他们可能需要重新编译他们的应用程序,以确保它能在新桥上运行。」YMA28资讯网——每日最新资讯28at.com

Swift 作为一种新技术,其实还是存在不少坑的,手淘也是在 ABI 稳定后才开始在项目中引入 Swift 的,这就好比 JDK 22 出来了,但国内大部分还是使用的 Java 8。YMA28资讯网——每日最新资讯28at.com

为什么会出现这种「你升任你升,我用 Java 8」的场景呢,还不是出于稳定性考虑。YMA28资讯网——每日最新资讯28at.com

任何新技术的引入都要考虑以下几个因素:YMA28资讯网——每日最新资讯28at.com

  1. 新技术对开发效率/程序性能的提升是否显著
  2. 对此新技术熟悉的人是否足够多(人员足够多意味着方便交接,方便定位问题,方便开发功能)
  3. 新技术从短期或长期来看对业务是否稳定

一般我们考虑的重要性按上面三点是依次递减,但实际上第三点可能反而是最重要的。YMA28资讯网——每日最新资讯28at.com

其实我们这个项目虽然还未等 ABI 稳定就引入了 Swift,但当时公司的发展如日中天,有几十号 iOS,也有好几位 iOS 架构师,所以工程一旦有啥技术问题,基本也能轻易解决。YMA28资讯网——每日最新资讯28at.com

但后来公司业务急转直下,iOS 团队被裁或离职导致一个不剩,后来公司彻底转型,干掉了所有的技术,你没看错,iOS 开发全都没了(你说这种情况谁能想到)。YMA28资讯网——每日最新资讯28at.com

那这时之前在项目中引入的 Swift 就成为了一颗随时会引爆的定时炸弹,后患无穷。YMA28资讯网——每日最新资讯28at.com

所以现在回头看,Swift 如果未在 ABI 稳定前被引入,一直用的 OC,那压根不会有这样的问题。YMA28资讯网——每日最新资讯28at.com

之前有人吐嘈银行技术栈太过陈旧,如相比于互联网普遍采用的 JSON, 银行的数据格式大都是万能不变的 XML 等。YMA28资讯网——每日最新资讯28at.com

其实对于银行来说可以理解,毕竟是金融,要以稳定为主,重构几下代码是好看了,但由于历史遗留问题可能会有技术债,一不小心出现问题如金额对不了的问题就悲剧了,所以真的别炫技术,技术这东西够用就行!YMA28资讯网——每日最新资讯28at.com

最后,问题已经出现了,抱怨解决不了问题,那我们该如何解决呢?YMA28资讯网——每日最新资讯28at.com

这里我想简单介绍一下我是如何修改以让老项目在 Xcode 15 上跑起来的。YMA28资讯网——每日最新资讯28at.com

其实运行一个项目与大家熟悉一个项目或者说业务的思路都是相通的,抓大放小, 抓主线,跑通主流程,细枝末节之后再看。YMA28资讯网——每日最新资讯28at.com

老项目无法在最新的 Xcode 15 上跑主要原因是 Pod 中的 Swift 引用了 OC 中的类,那我可以先注释这些逻辑,等跑通后再看看怎么优化。YMA28资讯网——每日最新资讯28at.com

再比如有个防反编译的第三方库,发现它的存在也会导致项目无法启动,怎么也绕不过去,于是直接把它干掉,安全,相比于 app 不能启动这事不是那么重要,这问题可以等 app 跑起来后再想办法补。YMA28资讯网——每日最新资讯28at.com

碰到难题,不要想着硬碰硬,可以绕过去的,千万不要在细枝末节上死磕,捡了芝麻,丢了西瓜。YMA28资讯网——每日最新资讯28at.com

此外碰到问题千万不要慌,要冷静分析,比如项目在 Xcode 15 跑起来后,我发现几个 weex(一种跨平台框架)页面的展示有些错乱,如下:YMA28资讯网——每日最新资讯28at.com

图片图片YMA28资讯网——每日最新资讯28at.com

看到这个页面第一眼我想的是得用 H5 来重构了,但用 H5 重构,工作量比较大,有没其他的方法?YMA28资讯网——每日最新资讯28at.com

我发现这个页面其实并不是每个 UI 都是错乱的,只是少数几个 UI 的渲染有问题,那就可以分析一下这几个出问题的 UI 和其他正常显示的 UI 在 weex 的写法有哪些区别,于是经过分析发现是三元运算符还有 text 的写法有区别,经过改造,问题就解决了,相比于使用 H5 来重构的时间,这点时间几乎可以忽略不计。YMA28资讯网——每日最新资讯28at.com

本文链接://www.dmpip.com//www.dmpip.com/showinfo-26-88376-0.html一次炫技差点引发的惨案

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 剖析 Figma 图形对象的基本属性

下一篇: 万丈高楼平地起,一切从 PyObject 开始

标签:
  • 热门焦点
  • 把LangChain跑起来的三个方法

    把LangChain跑起来的三个方法

    使用LangChain开发LLM应用时,需要机器进行GLM部署,好多同学第一步就被劝退了,那么如何绕过这个步骤先学习LLM模型的应用,对Langchain进行快速上手?本片讲解3个把LangChain跑起来
  • 最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    最“俊美”淘宝卖家,靠直播和短视频圈粉,上架秒光,年销3000万

    来源 | 电商在线文|易琬玉编辑|斯问受访店铺:Ringdoll戒之人形图源:微博@御座的黄山、“Ringdoll戒之人形”淘宝店铺有关外貌的评价,黄山已经听累了。生于1985年的他,哪
  • 梁柱接棒两年,腾讯音乐闯出新路子

    梁柱接棒两年,腾讯音乐闯出新路子

    文丨田静 出品丨牛刀财经(niudaocaijing)7月5日,企鹅FM发布官方公告称由于业务调整,将于9月6日正式停止运营,这意味着腾讯音乐长音频业务走向消亡。腾讯在长音频领域还在摸索。为
  • “又被陈思诚骗了”

    “又被陈思诚骗了”

    作者|张思齐 出品|众面(ID:ZhongMian_ZM)如今的国产悬疑电影,成了陈思诚的天下。最近大爆电影《消失的她》票房突破30亿断层夺魁暑期档,陈思诚再度风头无两。你可以说陈思诚的
  • 阿里瓴羊One推出背后,零售企业迎数字化新解

    阿里瓴羊One推出背后,零售企业迎数字化新解

    作者:刘旷近年来随着数字经济的高速发展,各式各样的SaaS应用服务更是层出不穷,但本质上SaaS大多局限于单一业务流层面,对用户核心关切的增长问题等则没有提供更好的解法。在Saa
  • 重估百度丨大模型,能撑起百度的“今天”吗?

    重估百度丨大模型,能撑起百度的“今天”吗?

    自象限原创 作者|程心 罗辑2023年之前,对于自己的“今天”,百度也很迷茫。“新业务到 2022 年底还是 0,希望 2023 年出来一个 1。”这是2022年底,李彦宏
  • 微博大门常打开,迎接海外画师漂洋东渡

    微博大门常打开,迎接海外画师漂洋东渡

    作者:互联网那些事“起猛了,我能看得懂日语了”。“为什么日本人说话我能听懂?”“中文不像中文,日语不像日语,但是我竟然看懂了”…&hell
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 2299元起!iQOO Pad明晚首销:性能最强天玑平板

    2299元起!iQOO Pad明晚首销:性能最强天玑平板

    5月23日,iQOO如期举行了新品发布会,除了首发安卓最强旗舰处理器的iQOO Neo8系列新机外,还在发布会上推出了旗下首款平板电脑——iQOO Pad,其最大的卖点
Top
Baidu
map