今天,網友發現自己設備上的iOS 應用都在瘋狂崩潰,一大堆 App 受到了影響。
要知道,現在國外疫情嚴峻,大家都只能宅在家玩手機,遇到這種情況真的要命。。。

小眾軟體也就不提了,像 TikTok ( 抖音國際版 )、 Quora ( 類似知乎 )、 Spotify ( 音樂軟體 )、 Pinterest ( 圖片社交軟體 )這樣的主流軟體也都跪了。
這些軟體的常用程度,跟咱們手機上的抖音、網易雲音樂、知乎、微博等等差不多。
而且崩的很徹底,打開就閃退,再打開再閃退,開開開,退退退。
這特麼簡直不能忍啊,用啥軟體啥崩潰,還玩個錘子手機!
軟體崩了,網友們只是暫時用不了,最多發發推騷擾一下各大 App 而已。
但以維護軟體為工作的程式設計師們就不一樣了,他們都快哭了。。。


很快程式設計師們就開始找起元凶,針對網上發佈的崩潰日誌分析了起來,最後不少人把罪魁禍首指向了小扎的 Facebook 。
具體而言,這個鍋得 iOS 版的 Facebook SDK 來背。。。

Facebook 大家都不陌生,沒想到這位坐擁 30 億用戶的社交軟體巨頭也有這麼翻車的一天。
但 Facebook 翻車管其他軟體屁事?怎麼其他軟體就被坑了呢?
這事還得從 SDK 說起。
SDK 就是軟體開發工具包,有些公司會出售自己軟體的某一功能,把它封裝成一個包,其他需要這個功能又不想從頭開發的公司,可以直接氪金了事。

舉個例子,滴滴出行。
在選擇目的地時,滴滴會自動獲取用戶的當前位置,或者讓用戶在地圖上選擇一個上車點。
這些功能對於滴滴這樣的出行公司來說,可以說是重要的一匹! ~
但。。。
這套服務並不是他們自己的東西,看右下角 ~

再來! ~

沒錯,這套服務是滴滴從騰訊地圖那邊搞來的。
儘管這些功能非常重要,但是滴滴沒有必要再自己開發一次,說白了,沒必要重複造輪子。
他只需要找成熟服務商購買自己需要的 SDK ,再加入到自己的軟體中,需要的時候調用相應的接口就能方便、快捷的完成相應的效果。
他只用在完成後,對最後結果進行呈現就可以了 ~
這樣的好處顯而易見,開發一套功能的成本是巨大的,開發後還需要調試,可能還會出現問題。
直接花點錢跟成熟的服務商購買省事又省時。

對於擁有成熟功能的公司這也是一件好事,把自己開發出來的功能賣給需要的人,也是一筆營收 ~
Facebook 作為頂級網際網路大廠,當然也有不少 SDK 。

這次出問題的,就是 Facebook 的一個用來支持 Facebook 共享、簽到、登錄的 SDK 。

軟體用了這個 Facebook SDK ,在啟動環節就會調用,往 Facebook 伺服器上發送相關指令。
有網友通過崩潰代碼分析出, FB SDK 從 FB 伺服器那邊收到了一個限制性的參數,但是這個參數的類型跟所需要的類型不匹配。

你通過家政公司叫了一個保姆來搞衛生,結果來了一個電工,可不得崩潰麼。
從程序運行的角度來說,返回的參數類型對不上號,程序沒法理解自然就崩了,連帶著拖累了所有使用這個 SDK 的軟體。。。
目前 Facebook 沒有正面迴應這個事情,但是在出現問題後的 3 個小時後在伺服器上發佈了一個補丁。
但是因為這個 Facebook SDK 實在太多人用了,17 年的時候網友曾在 Quora 上說明過這個 SDK 有 20 多萬個軟體在用。


所以這一波操作把這麼多軟體都給搞炸了。
不得不說, SDK 的存在大大方便了技術實現,造輪子多麻煩啊,直接拿成熟的輪子來用簡直爽。
但誰會想到呢,就算你拿的是坐擁 30 億用戶的 Facebook 的輪子,也有可能翻車翻到水溝裡去。。。
參考資料、圖片來源:
騰訊地圖、滴滴出行、推特、 GitHub
極客公園《 Facebook 月活用戶首次超過 30 億,巨頭依舊在增長 》
站長之家《 Facebook 修復 SDK 漏洞導致 TikTok 等多個主流 iOS 應用程序崩潰 》
