AVt天堂网 手机版,亚洲va久久久噜噜噜久久4399,天天综合亚洲色在线精品,亚洲一级Av无码毛片久久精品

當前位置:首頁 > 科技  > 軟件

一次炫技差點引發(fā)的慘案

來源: 責編: 時間:2024-05-16 09:09:24 165觀看
導讀大家好,我是坤哥今天和大家探討一個話題:技術(shù)的穩(wěn)定性到底有多重要。上周用三天的時間把原本預計至少一周才能改造完成的 iOS 項目在最新的 Xcode 15(iOS 開發(fā) IDE)上成功跑起來了!其實說實話這個 iOS 項目用兩周的時間在

大家好,我是坤哥5Mw28資訊網(wǎng)——每日最新資訊28at.com

今天和大家探討一個話題:技術(shù)的穩(wěn)定性到底有多重要。5Mw28資訊網(wǎng)——每日最新資訊28at.com

上周用三天的時間把原本預計至少一周才能改造完成的 iOS 項目在最新的 Xcode 15(iOS 開發(fā) IDE)上成功跑起來了!5Mw28資訊網(wǎng)——每日最新資訊28at.com

其實說實話這個 iOS 項目用兩周的時間在 Xcode 15 上能不能跑起來我心里都沒底,好在結(jié)果是好的。5Mw28資訊網(wǎng)——每日最新資訊28at.com

這個項目過去四年了,是我司的主要盈利產(chǎn)品(返利 app),不過技術(shù)棧還比較陳舊,一些依賴用的 swift 3.0 寫的(最新的 swift 版本是 5.5),在最新的 Xcode 15 上跑不起來,也就無法打包,那還了得,萬一碰到什么 bug 無法打包解決問題可就大了。5Mw28資訊網(wǎng)——每日最新資訊28at.com

其實五一前兩周我們在迭代開發(fā)產(chǎn)品時就發(fā)現(xiàn) 4.29 日之后必須用 Xcode 15 打包,還好提前一周我們發(fā)現(xiàn)了這個問題,這樣可以先降級到 Xcode 14 來開發(fā)打包,迭代的功能也順利上線了。5Mw28資訊網(wǎng)——每日最新資訊28at.com

但是 app 不能在 Xcode 15 上啟動打包的問題終究是要解決的,于是五一回來之后我又馬不停蹄地迭代這個 APP,以讓它能在 Xcode 15 上跑起來,好在運氣比較好,經(jīng)過一番魔改(之后會提到)終于跑起來了。5Mw28資訊網(wǎng)——每日最新資訊28at.com

四年對一個項目其實說長也長,說短也短,理論上像 Java 開發(fā)的項目,由于 JDK 通常設計為向后兼容的(兼容老版本),老項目通常能跑起來,為啥我們的這個 iOS 項目會有這樣在最新版 Xcode 15 上跑不起來的問題呢。5Mw28資訊網(wǎng)——每日最新資訊28at.com

主要原因其實是因為這個項目的 Pod(iOS 項目中的 Pod 類似 Java 中 Maven 管理的第三方依賴庫)不少是由 Swift 開發(fā)(蘋果 2014 年推出的編程語言),這些 Pod 庫中有不少引用 OC(Objective-C,蘋果系之前的主流開發(fā)語言)的代碼。5Mw28資訊網(wǎng)——每日最新資訊28at.com

在之前的 Xcode 中,工程是可以跑起來的,但是最新的 Xcode 15 對編譯器等做了大量的的修改導致這些 Pod 都無法編譯通過了,然后就跑不起來了,試了網(wǎng)上各種方法都不行。5Mw28資訊網(wǎng)——每日最新資訊28at.com

這事其實很要命,試想如果發(fā)現(xiàn)線上有個 bug 需要緊急修復(比如無法提現(xiàn)),然后你的 app 卻無法打包導致短時間內(nèi)無法修復,很可能導致用戶流失,業(yè)務停滯甚至公司倒閉的嚴重后果。5Mw28資訊網(wǎng)——每日最新資訊28at.com

假使我們當時的技術(shù)人員統(tǒng)一在工程中都用 OC,而不是用 Swift 來寫代碼,那壓根就不會出現(xiàn)這樣的問題,如果一定要用 Swift,至少要等到 ABI 穩(wěn)定之后再用。5Mw28資訊網(wǎng)——每日最新資訊28at.com

「這里簡單解釋一下什么是 ABI 穩(wěn)定:想象一下,有一座橋,這座橋連接了兩座島嶼:一個島是 Swift 語言自身,另一個島則是操作系統(tǒng),比如 macOS 或 iOS。這座橋就像是一個協(xié)議,確保兩邊可以互相理解和交流。在軟件的世界里,這座橋就是“應用程序二進制接口”(Application Binary Interface,簡稱 ABI)。5Mw28資訊網(wǎng)——每日最新資訊28at.com

Swift 的 ABI 穩(wěn)定性可以比作這座橋的結(jié)構(gòu)變得堅固且不再改變。初期,Swift 還在不斷發(fā)展,這座橋每隔一段時間就需要重建一次,這意味著開發(fā)者如果使用了新版本的 Swift,他們可能需要重新編譯他們的應用程序,以確保它能在新橋上運行。」5Mw28資訊網(wǎng)——每日最新資訊28at.com

Swift 作為一種新技術(shù),其實還是存在不少坑的,手淘也是在 ABI 穩(wěn)定后才開始在項目中引入 Swift 的,這就好比 JDK 22 出來了,但國內(nèi)大部分還是使用的 Java 8。5Mw28資訊網(wǎng)——每日最新資訊28at.com

為什么會出現(xiàn)這種「你升任你升,我用 Java 8」的場景呢,還不是出于穩(wěn)定性考慮。5Mw28資訊網(wǎng)——每日最新資訊28at.com

任何新技術(shù)的引入都要考慮以下幾個因素:5Mw28資訊網(wǎng)——每日最新資訊28at.com

  1. 新技術(shù)對開發(fā)效率/程序性能的提升是否顯著
  2. 對此新技術(shù)熟悉的人是否足夠多(人員足夠多意味著方便交接,方便定位問題,方便開發(fā)功能)
  3. 新技術(shù)從短期或長期來看對業(yè)務是否穩(wěn)定

一般我們考慮的重要性按上面三點是依次遞減,但實際上第三點可能反而是最重要的。5Mw28資訊網(wǎng)——每日最新資訊28at.com

其實我們這個項目雖然還未等 ABI 穩(wěn)定就引入了 Swift,但當時公司的發(fā)展如日中天,有幾十號 iOS,也有好幾位 iOS 架構(gòu)師,所以工程一旦有啥技術(shù)問題,基本也能輕易解決。5Mw28資訊網(wǎng)——每日最新資訊28at.com

但后來公司業(yè)務急轉(zhuǎn)直下,iOS 團隊被裁或離職導致一個不剩,后來公司徹底轉(zhuǎn)型,干掉了所有的技術(shù),你沒看錯,iOS 開發(fā)全都沒了(你說這種情況誰能想到)。5Mw28資訊網(wǎng)——每日最新資訊28at.com

那這時之前在項目中引入的 Swift 就成為了一顆隨時會引爆的定時炸彈,后患無窮。5Mw28資訊網(wǎng)——每日最新資訊28at.com

所以現(xiàn)在回頭看,Swift 如果未在 ABI 穩(wěn)定前被引入,一直用的 OC,那壓根不會有這樣的問題。5Mw28資訊網(wǎng)——每日最新資訊28at.com

之前有人吐嘈銀行技術(shù)棧太過陳舊,如相比于互聯(lián)網(wǎng)普遍采用的 JSON, 銀行的數(shù)據(jù)格式大都是萬能不變的 XML 等。5Mw28資訊網(wǎng)——每日最新資訊28at.com

其實對于銀行來說可以理解,畢竟是金融,要以穩(wěn)定為主,重構(gòu)幾下代碼是好看了,但由于歷史遺留問題可能會有技術(shù)債,一不小心出現(xiàn)問題如金額對不了的問題就悲劇了,所以真的別炫技術(shù),技術(shù)這東西夠用就行!5Mw28資訊網(wǎng)——每日最新資訊28at.com

最后,問題已經(jīng)出現(xiàn)了,抱怨解決不了問題,那我們該如何解決呢?5Mw28資訊網(wǎng)——每日最新資訊28at.com

這里我想簡單介紹一下我是如何修改以讓老項目在 Xcode 15 上跑起來的。5Mw28資訊網(wǎng)——每日最新資訊28at.com

其實運行一個項目與大家熟悉一個項目或者說業(yè)務的思路都是相通的,抓大放小, 抓主線,跑通主流程,細枝末節(jié)之后再看。5Mw28資訊網(wǎng)——每日最新資訊28at.com

老項目無法在最新的 Xcode 15 上跑主要原因是 Pod 中的 Swift 引用了 OC 中的類,那我可以先注釋這些邏輯,等跑通后再看看怎么優(yōu)化。5Mw28資訊網(wǎng)——每日最新資訊28at.com

再比如有個防反編譯的第三方庫,發(fā)現(xiàn)它的存在也會導致項目無法啟動,怎么也繞不過去,于是直接把它干掉,安全,相比于 app 不能啟動這事不是那么重要,這問題可以等 app 跑起來后再想辦法補。5Mw28資訊網(wǎng)——每日最新資訊28at.com

碰到難題,不要想著硬碰硬,可以繞過去的,千萬不要在細枝末節(jié)上死磕,撿了芝麻,丟了西瓜。5Mw28資訊網(wǎng)——每日最新資訊28at.com

此外碰到問題千萬不要慌,要冷靜分析,比如項目在 Xcode 15 跑起來后,我發(fā)現(xiàn)幾個 weex(一種跨平臺框架)頁面的展示有些錯亂,如下:5Mw28資訊網(wǎng)——每日最新資訊28at.com

圖片圖片5Mw28資訊網(wǎng)——每日最新資訊28at.com

看到這個頁面第一眼我想的是得用 H5 來重構(gòu)了,但用 H5 重構(gòu),工作量比較大,有沒其他的方法?5Mw28資訊網(wǎng)——每日最新資訊28at.com

我發(fā)現(xiàn)這個頁面其實并不是每個 UI 都是錯亂的,只是少數(shù)幾個 UI 的渲染有問題,那就可以分析一下這幾個出問題的 UI 和其他正常顯示的 UI 在 weex 的寫法有哪些區(qū)別,于是經(jīng)過分析發(fā)現(xiàn)是三元運算符還有 text 的寫法有區(qū)別,經(jīng)過改造,問題就解決了,相比于使用 H5 來重構(gòu)的時間,這點時間幾乎可以忽略不計。5Mw28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.tebozhan.com/showinfo-26-88376-0.html一次炫技差點引發(fā)的慘案

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權(quán)等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: 剖析 Figma 圖形對象的基本屬性

下一篇: 萬丈高樓平地起,一切從 PyObject 開始

標簽:
  • 熱門焦點
Top