App Store 狠抓精神文明建設,JSPatch要亡了?

據悉,近日美國蘋果公司響應黨的號召,爲了實現了社區文明和諧,各項事業全面發展,狠抓精神文明建設。將造成組織領導、按期引導、精準對標、適時檢查、總結提升等五項機制,確保建立工做規範化、科學化、常態化。 ---來自老司機的前線報道swift

事情的主要原由在 App Store Review Guide Line 的 2.5.2 這條:weex

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.app

這條是在16年WWDC以後更新上去的。這條規則也很容易理解,全部被執行的代碼都應該包含在App裏,不能下載代碼到本地執行。下發的不管是OC仍是JS或者其餘形式的代碼,均可以被認爲違反了這條規則。可是蘋果一直沒有嚴格「執法」,直到今天才開始給大批有相似嫌疑的開發者發了警告郵件,或者紛紛被拒。框架

固然這沒有什麼可怪的,這種執行力度全靠心情,畢竟爸爸歷來不用講道理。
ide

根據看到的反饋,目前蘋果判斷的依據主要有兩條。
一種是掃描特定的 API ,好比:ui

dlopen(), dlsym(), respondsToSelector:, performSelector:, method_exchangeImplementations()spa

可是這裏並非徹底禁止使用這些 API ,只是有個規則會檢查這些 API 的參數是否是多是外部引入的。
好比這麼寫是沒問題的:3d

if([self.delegate respondsToSelector: @selector(myDelegateMethod)]) {
   [self.delegate performSelector: @selector(myDelegateMethod)];
}複製代碼

這麼寫就可能被打回:code

NSString *remotelyLoadedString = .... (download from your backend)
[self performSelector: NSSelectorFromString(remotelyLoadedString)];複製代碼

另外會檢查特定的類名,好比你們都知道的JSPatch和Rollout,發現APP裏帶了這樣有潛在威脅的庫就可能打回。可是這個方式彷佛經過混淆就能過關。
orm

不懂爲何提到JSPatch我就想發個表情,印象中過去某個時間段也有被這樣提示被下架,後來又放鬆了。心裏 OS :「皇上!我是被冤枉的!。」

紫薇,快救我

對將來的判斷

蘋果是百分百不肯意代碼繞過審覈被下發的。不管是修bug,仍是一個小功能,高冷的資本主義企業怎麼能讓你亂蹭,萬一你進去了呢。其實我國國情特殊,真要是什麼違法的東西上了蘋果也遭不住,搞很差App Store都要下線。

道高一尺魔高一丈,程序執行起來老是要有漏洞。沒錯,是能夠和官方博弈,可是你想一下下發代碼這件事是否是真的影響到App運行非作不可?若是代價提升呢?好比被發現一次直接封掉你的Apple ID,以爲仍是非作不可?

聰明的人已經在如何提APP穩定性的道路上努力了。忘了HotPatch這件事吧。

RN&Weex 還能續一輪命

從各方的反饋來看,蘋果這輪狠抓的是下發代碼,而不是針對用 JS 代碼編寫業務邏輯。若是以爲這個有問題,就會把 JSCore 的一些核心 API 改成私有 API 了。只是在這個風口,基於這個技術的框架恰好很容易就提供了下發代碼執行邏輯的能力,因此被推到燈光下。
我以前有次也問過Weex的負責人,他明確表示 Weex 不是爲了解決熱更新的問題存在的。只是恰巧有這個能力。
蘋果在 iOS 7中引入新的 JavaScriptCore 框架,必然是認爲在 APP 裏執行 JS 對於整個 iOS 生態是有益的,不然何須畫蛇添足。因此目前只是要解決掉引入這個框架後帶來的濫用問題。 因此我認爲這一輪的整治裏,JS2Native 的框架確定能夠全身而退。

Swift ?

有人說有沒多是蘋果在爲 Swift 下一步很大的棋。爲了確認此事某好事網友諮詢了 Swift 之父CL:


爸爸口風很緊表示:

共建和諧社會

來,讓咱們一塊兒表態:我方願與美方一道建設和諧的 App Store 生態。

相關文章
相關標籤/搜索