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

當(dāng)前位置:首頁(yè) > 科技  > 軟件

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

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

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

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

上周用三天的時(shí)間把原本預(yù)計(jì)至少一周才能改造完成的 iOS 項(xiàng)目在最新的 Xcode 15(iOS 開(kāi)發(fā) IDE)上成功跑起來(lái)了!PJ428資訊網(wǎng)——每日最新資訊28at.com

其實(shí)說(shuō)實(shí)話這個(gè) iOS 項(xiàng)目用兩周的時(shí)間在 Xcode 15 上能不能跑起來(lái)我心里都沒(méi)底,好在結(jié)果是好的。PJ428資訊網(wǎng)——每日最新資訊28at.com

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

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

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

四年對(duì)一個(gè)項(xiàng)目其實(shí)說(shuō)長(zhǎng)也長(zhǎng),說(shuō)短也短,理論上像 Java 開(kāi)發(fā)的項(xiàng)目,由于 JDK 通常設(shè)計(jì)為向后兼容的(兼容老版本),老項(xiàng)目通常能跑起來(lái),為啥我們的這個(gè) iOS 項(xiàng)目會(huì)有這樣在最新版 Xcode 15 上跑不起來(lái)的問(wèn)題呢。PJ428資訊網(wǎng)——每日最新資訊28at.com

主要原因其實(shí)是因?yàn)檫@個(gè)項(xiàng)目的 Pod(iOS 項(xiàng)目中的 Pod 類似 Java 中 Maven 管理的第三方依賴庫(kù))不少是由 Swift 開(kāi)發(fā)(蘋(píng)果 2014 年推出的編程語(yǔ)言),這些 Pod 庫(kù)中有不少引用 OC(Objective-C,蘋(píng)果系之前的主流開(kāi)發(fā)語(yǔ)言)的代碼。PJ428資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

最后,問(wèn)題已經(jīng)出現(xiàn)了,抱怨解決不了問(wèn)題,那我們?cè)撊绾谓鉀Q呢?PJ428資訊網(wǎng)——每日最新資訊28at.com

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

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

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

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

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

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

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

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

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

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

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

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

下一篇: 萬(wàn)丈高樓平地起,一切從 PyObject 開(kāi)始

標(biāo)簽:
  • 熱門(mén)焦點(diǎn)
  • 一加Ace2 Pro真機(jī)揭曉 鈦空灰配色質(zhì)感拉滿

    終于,在經(jīng)過(guò)了幾波預(yù)熱之后,一加Ace2 Pro的外觀真機(jī)圖在網(wǎng)上出現(xiàn)了。還是博主數(shù)碼閑聊站曝光的,這次的外觀設(shè)計(jì)還是延續(xù)了一加11的方案,只是細(xì)節(jié)上有了調(diào)整,例如新加入了鈦空灰
  • K6:面向開(kāi)發(fā)人員的現(xiàn)代負(fù)載測(cè)試工具

    K6 是一個(gè)開(kāi)源負(fù)載測(cè)試工具,可以輕松編寫(xiě)、運(yùn)行和分析性能測(cè)試。它建立在 Go 和 JavaScript 之上,它被設(shè)計(jì)為功能強(qiáng)大、可擴(kuò)展且易于使用。k6 可用于測(cè)試各種應(yīng)用程序,包括 Web
  • 線程通訊的三種方法!通俗易懂

    線程通信是指多個(gè)線程之間通過(guò)某種機(jī)制進(jìn)行協(xié)調(diào)和交互,例如,線程等待和通知機(jī)制就是線程通訊的主要手段之一。 在 Java 中,線程等待和通知的實(shí)現(xiàn)手段有以下幾種方式:Object 類下
  • CSS單標(biāo)簽實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)logo

    轉(zhuǎn)轉(zhuǎn)品牌升級(jí)后更新了全新的Logo,今天我們用純CSS來(lái)實(shí)現(xiàn)轉(zhuǎn)轉(zhuǎn)的新Logo,為了有一定的挑戰(zhàn)性,這里我們只使用一個(gè)標(biāo)簽實(shí)現(xiàn),將最大化的使用CSS能力完成Logo的繪制與動(dòng)畫(huà)效果。新logo
  • Flowable工作流引擎的科普與實(shí)踐

    一.引言當(dāng)我們?cè)谌粘9ぷ骱蜆I(yè)務(wù)中需要進(jìn)行各種審批流程時(shí),可能會(huì)面臨一系列技術(shù)和業(yè)務(wù)上的挑戰(zhàn)。手動(dòng)處理這些審批流程可能會(huì)導(dǎo)致開(kāi)發(fā)成本的增加以及業(yè)務(wù)復(fù)雜度的上升。在這
  • JavaScript學(xué)習(xí) -AES加密算法

    引言在當(dāng)今數(shù)字化時(shí)代,前端應(yīng)用程序扮演著重要角色,用戶的敏感數(shù)據(jù)經(jīng)常在前端進(jìn)行加密和解密操作。然而,這樣的操作在網(wǎng)絡(luò)傳輸和存儲(chǔ)中可能會(huì)受到惡意攻擊的威脅。為了確保數(shù)據(jù)
  • 使用Webdriver-manager解決瀏覽器與驅(qū)動(dòng)不匹配所帶來(lái)自動(dòng)化無(wú)法執(zhí)行的問(wèn)題

    1、前言在我們使用 Selenium 進(jìn)行 UI 自動(dòng)化測(cè)試時(shí),常常會(huì)因?yàn)闉g覽器驅(qū)動(dòng)與瀏覽器版本不匹配,而導(dǎo)致自動(dòng)化測(cè)試無(wú)法執(zhí)行,需要手動(dòng)去下載對(duì)應(yīng)的驅(qū)動(dòng)版本,并替換原有的驅(qū)動(dòng),可能還
  • 三星獲批量產(chǎn)iPhone 15全系屏幕:蘋(píng)果史上最驚艷直屏

    按照慣例,蘋(píng)果將繼續(xù)在今年9月舉辦一年一度的秋季新品發(fā)布會(huì),有傳言稱發(fā)布會(huì)將于9月12日舉行,屆時(shí)全新的iPhone 15系列將正式與大家見(jiàn)面,不出意外的話
  • 榮耀Magicbook V 14 2021曙光藍(lán)版本正式開(kāi)售,擁有觸摸屏

    榮耀 Magicbook V 14 2021 曙光藍(lán)版本正式開(kāi)售,搭載 i7-11390H 處理器與 MX450 顯卡,配備 16GB 內(nèi)存與 512GB SSD,重 1.48kg,厚 14.5mm,具有 1.5mm 鍵盤(pán)鍵程、
Top 日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不
亚洲视频视频在线| 国产一区二区三区丝袜| 免费试看一区| 欧美精品电影| 国产精品豆花视频| 国内欧美视频一区二区| 最新国产乱人伦偷精品免费网站 | 欧美激情1区2区3区| 欧美精选午夜久久久乱码6080| 国产精品v亚洲精品v日韩精品| 国产一区二区三区在线免费观看 | 国产亚洲福利一区| 亚洲国产综合在线| 亚洲一区影院| 久久综合综合久久综合| 欧美日韩精品免费观看视一区二区 | 国产在线精品一区二区夜色| 91久久精品日日躁夜夜躁国产| 亚洲图片欧美日产| 久久久久久穴| 欧美色123| 一色屋精品视频在线观看网站| 日韩午夜在线电影| 欧美一区二区三区的| 欧美激情亚洲激情| 国产婷婷精品| 99精品视频免费在线观看| 欧美有码视频| 欧美日韩国产免费| 红桃视频国产精品| 亚洲性人人天天夜夜摸| 猫咪成人在线观看| 国产精品一区久久久久| 91久久在线播放| 欧美一区午夜精品| 欧美午夜精品久久久| 亚洲大片av| 樱桃国产成人精品视频| 中文日韩在线| 欧美成人国产va精品日本一级| 国产精品影视天天线| 日韩天堂在线视频| 老司机一区二区三区| 国产九区一区在线| 一区二区三区精品视频在线观看| 久久免费视频在线| 国产欧美短视频| 中日韩高清电影网| 欧美精品一区二区三| 精久久久久久| 欧美亚洲一区二区在线| 欧美日韩在线精品一区二区三区| 在线欧美小视频| 久久黄色级2电影| 国产精品免费观看视频| 亚洲精品日本| 男同欧美伦乱| 黄网站免费久久| 欧美在线一区二区| 国产伦精品一区二区三区照片91 | 国产精品日韩欧美大师| 亚洲免费精彩视频| 欧美国产第一页| 亚洲成色777777女色窝| 久久久久女教师免费一区| 国产精品网站在线播放| 亚洲午夜91| 欧美日韩亚洲网| 一本久久综合亚洲鲁鲁五月天| 欧美国产欧美亚洲国产日韩mv天天看完整| 狠狠色狠狠色综合系列| 久久精品一区二区三区不卡牛牛 | 久久精品日韩欧美| 国产日韩欧美自拍| 欧美亚洲视频| 国产视频欧美视频| 欧美一区二区精品久久911| 国产精品乱码久久久久久| 亚洲视频精选| 国产精品久久一级| 亚洲在线观看视频| 国产精品美女www爽爽爽| 亚洲一区国产视频| 国产精品久久久一区二区| 亚洲一卡二卡三卡四卡五卡| 欧美视频精品在线| 亚洲午夜黄色| 国产精品久久一区二区三区| 亚洲永久免费av| 国产精品推荐精品| 久久成人综合网| 激情五月婷婷综合| 免费不卡欧美自拍视频| 亚洲国产精品一区| 欧美精品激情在线观看| 欧美色道久久88综合亚洲精品| 亚洲精品你懂的| 欧美日韩极品在线观看一区| 日韩视频―中文字幕| 欧美视频导航| 性色av一区二区三区红粉影视| 国产日韩欧美综合精品| 久久九九热re6这里有精品| 黄色精品一区二区| 欧美顶级大胆免费视频| 99精品视频免费观看| 国产精品高潮粉嫩av| 新片速递亚洲合集欧美合集| 国产一区二区精品久久91| 久久亚洲视频| 日韩视频免费看| 国产精品美女久久久久久2018 | **性色生活片久久毛片| 欧美精品日韩三级| 亚洲一区影院| 激情综合久久| 欧美老女人xx| 新67194成人永久网站| 亚洲第一精品夜夜躁人人爽| 欧美日本久久| 欧美一级大片在线免费观看| 在线观看日韩精品| 欧美三区不卡| 久久久久国产一区二区三区四区| 亚洲国产另类精品专区 | 欧美天堂在线观看| 久久riav二区三区| 亚洲人被黑人高潮完整版| 欧美深夜影院| 久久一区二区三区国产精品| 亚洲毛片播放| 国产日韩欧美综合一区| 久久先锋资源| 亚洲深夜影院| 黄色一区二区三区四区| 欧美日韩亚洲国产精品| 久久se精品一区二区| 亚洲美女色禁图| 国产视频在线观看一区| 欧美激情国产精品| 欧美在线视频导航| 日韩视频在线观看一区二区| 国产欧美在线看| 欧美精品一区二区在线观看 | 久久久亚洲高清| 夜久久久久久| 伊人久久大香线蕉综合热线 | 亚洲伦伦在线| 狠狠色丁香婷婷综合| 欧美三级在线| 欧美成人精品| 久久久999成人| 亚洲一区二区成人在线观看| 亚洲福利专区| 国产欧美精品日韩区二区麻豆天美| 欧美aa国产视频| 久久精品国产亚洲5555| 亚洲一区国产一区| 亚洲日本视频| 精品1区2区3区4区| 国产精品一区二区三区久久久| 欧美成人在线免费观看| 久久国产精品免费一区| 亚洲天天影视| 亚洲精品婷婷| 136国产福利精品导航网址| 国产欧美日本一区视频| 欧美色中文字幕| 欧美激情一区在线| 久久综合中文| 久久精品国产欧美激情| 午夜一区在线| 亚洲欧美www| 一区二区三区精品在线| 亚洲黄色尤物视频| 尤物yw午夜国产精品视频| 国产亚洲激情| 国产日韩高清一区二区三区在线| 欧美日韩一区二区三区四区五区| 免费成人激情视频| 久久久久久电影| 欧美在线免费| 欧美在线一级va免费观看| 亚洲欧美日韩成人高清在线一区| 99热免费精品在线观看| 亚洲精品国产精品国自产观看浪潮 | 久久精品免费电影| 午夜久久tv| 一区二区三区精品| 99视频精品全部免费在线| 亚洲精品婷婷| 亚洲伦理一区| 亚洲欧洲精品一区二区三区波多野1战4 | 欧美成人嫩草网站| 久久综合网hezyo| 久久久久成人精品免费播放动漫| 欧美在线视频观看免费网站| 亚洲欧美国产另类| 亚洲中无吗在线| 亚洲男人的天堂在线| 亚洲综合国产精品| 欧美一区二区三区喷汁尤物| 午夜免费日韩视频| 西西人体一区二区|