日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

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

一次炫技差點引發的慘案

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

大家好,我是坤哥A4m28資訊網——每日最新資訊28at.com

今天和大家探討一個話題:技術的穩定性到底有多重要。A4m28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

為什么會出現這種「你升任你升,我用 Java 8」的場景呢,還不是出于穩定性考慮。A4m28資訊網——每日最新資訊28at.com

任何新技術的引入都要考慮以下幾個因素:A4m28資訊網——每日最新資訊28at.com

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

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

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

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

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

所以現在回頭看,Swift 如果未在 ABI 穩定前被引入,一直用的 OC,那壓根不會有這樣的問題。A4m28資訊網——每日最新資訊28at.com

之前有人吐嘈銀行技術棧太過陳舊,如相比于互聯網普遍采用的 JSON, 銀行的數據格式大都是萬能不變的 XML 等。A4m28資訊網——每日最新資訊28at.com

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

最后,問題已經出現了,抱怨解決不了問題,那我們該如何解決呢?A4m28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

圖片圖片A4m28資訊網——每日最新資訊28at.com

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

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

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

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

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

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

標簽:
  • 熱門焦點
  • 7月安卓手機好評榜:三星S23Ultra好評率第一

    性能榜和性價比榜之后,我們來看最后的安卓手機好評榜,數據來源安兔兔評測,收集時間2023年7月1日至7月31日,僅限國內市場。第一名:三星Galaxy S23 Ultra好評率:95.71%在即將迎來新
  • 7月安卓手機性能榜:紅魔8S Pro再奪榜首

    7月份的手機市場風平浪靜,除了紅魔和努比亞帶來了兩款搭載驍龍8Gen2領先版處理器的新機之外,別的也想不到有什么新品了,這也正常,通常6月7月都是手機廠商修整的時間,進入8月份之
  • 谷歌KDD'23工作:如何提升推薦系統Ranking模型訓練穩定性

    谷歌在KDD 2023發表了一篇工作,探索了推薦系統ranking模型的訓練穩定性問題,分析了造成訓練穩定性存在問題的潛在原因,以及現有的一些提升模型穩定性方法的不足,并提出了一種新
  • 使用AIGC工具提升安全工作效率

    在日常工作中,安全人員可能會涉及各種各樣的安全任務,包括但不限于:開發某些安全工具的插件,滿足自己特定的安全需求;自定義github搜索工具,快速查找所需的安全資料、漏洞poc、exp
  • 拼多多APP上線本地生活入口,群雄逐鹿萬億市場

    Tech星球(微信ID:tech618)文 | 陳橋輝 Tech星球獨家獲悉,拼多多在其APP內上線了“本地生活”入口,位置較深,位于首頁的“充值中心”內,目前主要售賣美食相關的
  • “又被陳思誠騙了”

    作者|張思齊 出品|眾面(ID:ZhongMian_ZM)如今的國產懸疑電影,成了陳思誠的天下。最近大爆電影《消失的她》票房突破30億斷層奪魁暑期檔,陳思誠再度風頭無兩。你可以說陳思誠的
  • 新電商三兄弟,“抖快紅”成團!

    來源:價值研究所作 者:Hernanderz 隨著內容電商的概念興起,抖音、快手、小紅書組成的“新電商三兄弟”成為業內一股不可忽視的勢力,給阿里、京東、拼多多帶去了巨大壓
  • 小米MIX Fold 3配置細節曝光:搭載領先版驍龍8 Gen2+罕見5倍長焦

    這段時間以來,包括三星、一加、榮耀等等有不少品牌旗下的最新折疊屏旗艦都得到了不少爆料,而小米新一代折疊屏旗艦——小米MIX Fold 3此前也屢屢被傳
  • 朋友圈可以修改可見范圍了 蘋果用戶可率先體驗

    近日,iOS用戶迎來微信8.0.27正式版更新,除了可更換二維碼背景外,還新增了多項實用功能。在新版微信中,朋友圈終于可以修改可見范圍,簡單來說就是已發布的朋友圈
Top 主站蜘蛛池模板: 上犹县| 阿坝| 永昌县| 望都县| 营山县| 米林县| 贵港市| 江川县| 兴义市| 玛曲县| 伊金霍洛旗| 文成县| 明溪县| 含山县| 越西县| 察隅县| 武乡县| 中方县| 遂川县| 临朐县| 南部县| 敦煌市| 搜索| 仁化县| 贵州省| 承德市| 延津县| 吴桥县| 通城县| 金华市| 广汉市| 沧源| 新安县| 大埔区| 美姑县| 格尔木市| 依兰县| 汤原县| 遵义县| 宜良县| 满城县|