蘋果爸爸發飆,封殺 React Native?
閱讀本文大概需要 3 分鐘。
昨天早上一上班,就收到了蘋果發來的一封警告郵件,一看內容,就知道這是個大事啊,還趕緊發了個微博,然後,一整天,iOS 界都被這個消息炸裂了!
這封警告郵件大概意思就是說,蘋果將不再允許使用動態下發代碼的機制,如果 App 內部使用了動態下發代碼的框架,將有被拒的風險。
所謂的動態下發代碼,就是我們常說的熱修復、熱更新,就是在我們無需發布的版本的情況下,就可以修復 bug ,發布功能,因為 iOS 審核的機制,這項能力在 iOS 界非常重要。
在 iOS 界擁有動態下發能力的有以下幾個框架:JSPatch、Rollout、React Native、Weex。
其中 JSPatch 跟 Rollout 是專門的熱更新框架,JSPatch 國內應用使用很廣泛,包括我們家的也是,Rollout 則是國外使用的較多,是這次針對的主要對象,之前蘋果針對這種熱更新是睜隻眼閉隻眼,而這次則是下定了決心要整改,畢竟繞過了蘋果爸爸的審核機制,如果以後不加管理,豈不逃出了爸爸的法眼。
這個倒還好,大不了不用熱更新罷了,但是一些 App 中使用 React Native 和 Weex 的開發者,同樣有人收到了蘋果的警告郵件,這可就炸開了鍋,要知道 RN、Weex 這種是大廠推出的跨平台框架,這要是被封殺了,一些大廠的 App 要重寫就誇張了,這可是致命的打擊。
但是在還沒確定結論的情況下,之前學很長時間 RN 的同學簡直要懵逼了,還有一些沒學的同學甚至幸災樂禍,暗自慶幸,幸虧沒學啊,甚至有謠言傳有公司把整個 RN 部門都砍了,真是有點看不下去了,所以我覺得應該弄清楚原因,寫篇文章。
了解到,這次事情的主要起因在 App Store Review Guide Line 的 2.5.2 這條:
2.5.2 Apps should be self-contained in their bundles, and may not read or write data outside the designated container area, nor may they download, install, or execute code, including other iOS, watchOS, macOS, or tvOS apps.
這是在 16 年 WWDC 之後新更新的一條規則。什麼意思呢?意思是說,所有被執行的代碼都應該包含在 App 里,不能下載代碼到本地執行。下發的無論是 OC 還是 JS 或者其他形式的代碼,都可以被認為違反了這條規則,都有被拒的風險。
看到這裡,我大概就明白了,蘋果本次主要是針對下發代碼,而 React Native、Weex 這類框架剛好也具備了下發代碼的能力,但是他們的主要職責不是為了解決熱更新而存在的,而是一種跨平台的解決方案,所以,雖然蘋果官方沒說明,但是我認為,只是剛好在這個風口浪尖,躺槍了而已。
所以,有些人聽風就是雨,不要這麼著急下結論,RN、Weex 這種跨平台解決方案雖然現在還不成熟,使用範圍也沒那麼廣,我個人也不推薦現在在商業項目使用,但是暫時不用擔心會被蘋果封殺,如果真的被蘋果封殺了,那麼微信小程序就不會同意審核過了,因為本質上微信小程序也是類似 RN 的一套方案,請大家具備點基本的思考能力。
而且 React Native 官方也做了回應,說不會受影響,地址在這裡:
https://github.com/facebook/react-native/issues/12778
看似蘋果的事跟 Android 開發者無關,但是如果蘋果封殺了 React Native,那麼 Android 界也會受影響,畢竟採用 RN 主要是為了跨平台,蘋果都不支持了,誰還會用 RN 來開發 Android 啊,故此,寫篇文章給大家說明下。
順便說下,針對這次蘋果事件的解決方案,你們家的 iOS App 很可能會用到:
1. 國內 App 如果有在使用 JSPatch 的,那麼請移除,目前沒有其他更好的方案;
2. 更新或者移除一些第三方使用 JSPatch 的 SDK,目前已知的有高德地圖、BugTags、個推、Bugly。
另外,說個題外話,這次事件一出,JSPatch GitHub 官方庫的 Issues 有人尋求證實與解決方案,誰知道引來一群吃瓜群眾圍觀、蓋樓,那場景相當壯觀,只能說中國人把 GitHub 玩壞了,GitHub 本是一個討論技術的開源社區,把這種不良的風氣帶到 GitHub 上真的看不下去,在這裡呼籲大家,以後不要在 GitHub 幹這種事!
地址在這裡:
https://github.com/bang590/JSPatch/issues/751
最後,這事一出,很多 iOS 開發者開罵蘋果爸爸太霸道,其實我想說,知足吧,身在福中不知福,如果我谷爹能偶爾霸道一回,Android 開發者們估計要高興瘋了!
本文編號2266,以後想閱讀這篇文章直接輸入2266即可。
※日本81歲老太自學編程
※Linux Shell文本處理工具集錦
※人才是我們唯一的資本,萬科沃土人才招募!
※一個程序員要扔掉多少代碼,才能成為真正的程序員
※在線編程教學視頻網站匯總
TAG:程序猿 |
※除了Alexa和Google Assistant,還有你要了解的蘋果Homekit
※三星Galaxy Note 9會是蘋果iPhone X Plus最強競爭對手嗎?
※oppo、vivo齊發飆,新款旗艦挑戰iPhoneX,蘋果你怕了嗎?
※Excuse me?蘋果iPhone X/SE今秋停產?大屏新iPhone 要來?
※擺脫蘋果依賴症,Dialog或將與Synaptics合併
※蘋果今年三款新iPhone齊登場,iPhoneX Plus最被看好!
※HomeKit是蘋果對亞馬遜Echo和GoogleHome的回應
※蘋果捲入 Telegram 與俄羅斯的戰火,被指控不讓 Telegram iOS 版更新
※蘋果秋季欲推除iPhone以外的 5 個One more thing……!
※蘋果高管:Steam Link可重回App Store
※為了 HomePod,蘋果應該跟 Spotify 好好的
※iPhoneX Plus和8Plus一樣大,蘋果將帶來3款新品?
※強勢!蘋果iPhone X Plus與iPhone 9渲染圖來了:你更愛哪個?
※Apple Watch 秒變對講機,蘋果正式發布 watchOS 5
※蘋果殺死Lightning埠解開未來的iPhone無線可能
※新MacBook Pro 曝光/蘋果 Shortcuts 功能開啟測試
※新款蘋果手機iPhone 9,iPhone 9 Plus和iPhone X2?
※蘋果高層:正商討 Steam Link 儘快引入 iOS,iPhone、iPad、Apple TV 可玩電腦遊戲?
※蘋果已棄療?iPhone X Plus又被iOS 12泄露!
※除AirPods外,Lightning to 3.5mm也是蘋果產品中的銷量明星