iOS 9 下周就正式推出了翰撑,你的 app 真的適配好了嗎?


編者按:本文來自騰訊第三方崩潰捕獲服務(wù)Bugly啊央,近期他們支持 ATS 及 Bitcode 特性的 SDK 即將發(fā)布眶诈。作者馮義力,騰訊 Bugly SDK 開發(fā)工程師瓜饥。昨天 Apple 宣布逝撬,iOS 9 正式版會在 9 月 16 日開始推送。經(jīng)歷過 5 個 Beta 版后压固,開發(fā)者們球拦,你們的 App 都做好適配了嗎?

Apple 秋季產(chǎn)品發(fā)布會剛剛結(jié)束帐我,iOS 9 GM 版本也正式發(fā)布了坎炼。新的 iPhone 設(shè)備即將開售,iOS 9 系統(tǒng)升級也將會在下周開始陸續(xù)進(jìn)行推送拦键。

在這之前谣光,我們還可以為自己的 App 兼容適配做點什么,或者說芬为,我們的 App 真的已經(jīng)兼容適配好 iOS 9 系統(tǒng)了嗎萄金?

從 7月 份開始到現(xiàn)在,Apple 已發(fā)布 5 個 iOS 9 的 Beta 版本媚朦,相信開發(fā)者在這段時間也已經(jīng)把 iOS 9 系統(tǒng)的特性基本了解清楚氧敢,也為自己的 App 進(jìn)行了一系列兼容適配處理。

但在這里询张,筆者還是要再次跟大家聊聊 iOS 9 中兩個比較特別的特性及其兼容問題孙乖,即:App Transport Security 和 App Thinning。

App Transport Security

App Transport Security is a feature that improves the security of connections between an app and web services. The feature consists of default connection requirements that conform to best practices for secure connections.

App Transport Security (ATS) 是 Apple 為提高系統(tǒng)及應(yīng)用安全性而在 iOS 9 和 OS X EI Capitan 中引入的新特性,必然唯袄,出于安全性的考慮弯屈,在新發(fā)布的 watchOS 2 系統(tǒng)中也會適用。

一旦開啟 ATS 后恋拷,應(yīng)用所有的網(wǎng)絡(luò)請求將會自動轉(zhuǎn)換為 HTPPS 傳輸资厉,且采用一系列配置要求來保證數(shù)據(jù)傳輸?shù)陌踩裕ǎ?/p>

Transport Layer Security 協(xié)議版本要求 TLS1.2 以上

服務(wù)的 Ciphers 配置要求支持 Forward Secrecy 等

證書簽名算法符合 ATS 要求等

這些配置項在升級服務(wù)器支持 HTTPS 過程中都需要嚴(yán)格遵守的蔬顾,否則就會導(dǎo)致你的 HTTPS 服務(wù)在 iOS 9 系統(tǒng)中連接仍是失效的宴偿。

如果你的 App 的服務(wù)也在升級以適配 ATS 要求,可以使用如下的方式進(jìn)行校驗:

在 OS X EI Capitan 系統(tǒng)的終端中通過 nscurl 命令來診斷檢查你的 HTTPS 服務(wù)配置是否滿足 Apple 的 ATS 要求:$ nscurl --verbose --ats-diagnostics https://

當(dāng)然阎抒,你也可以參考 Apple 提供官方指南 App Transport Security Technote 進(jìn)行服務(wù)的升級配置以滿足 ATS 的要求酪我。

Apple 雖然希望開發(fā)者可以積極的參與并為系統(tǒng)及應(yīng)用安全共同努力,但官方仍提供了一些參考配置去禁用 ATS 功能或降低 ATS 的安全性要求且叁。

開發(fā)者可以在 App 的 Info.plist 中添加 NSAppTransportSecurity 的相關(guān)配置,用以禁用 ATS 或者添加白名單秩伞,可用的配置參數(shù)如下:

NSAllowsArbitraryLoads - 設(shè)置 true 即支持所有 HTTP 請求

NSExceptionDomains - 添加白名單

NSExceptionMinimumTLSVersion - 白名單指定域名支持的 TLS 版本

NSExceptionRequiresForwardSecrecy - 白名單指定域名是否支持 Forward Secrecy

NSExceptionAllowsInsecureHTTPLoads - 白名單指定域名禁用 ATS

NSThirdPartyExceptionMinimumTLSVersion - 白名單指定第三方服務(wù)域名最低支持的 TLS 版本

NSThirdPartyExceptionRequiresForwardSecrecy - 白名單指定第三方服務(wù)域名是否支持 Forward Secrecy

NSThirdPartyExceptionAllowsInsecureHTTPLoads - 白名單指定第三方域名禁用 ATS

舉個例子:

禁用所有連接使用 ATS

在 Info.plist 中配置禁用 ATS:

NSAppTransportSecurity

NSAllowsArbitrary

指定域名禁用 ATS

在 Info.plist 中配置 App 的服務(wù)域名mine.test.com支持 HTTP:

NSAppTransportSecurity

NSExceptionDomains

mine.test.com

NSExceptionAllowsInsecureHTTPLoads

指定域名修改 ATS 安全要求

在 Info.plist 中配置第三方服務(wù)third.test.com的 TLS1.1 及禁用 Forward Secrecy:

NSAppTransportSecurity

NSExceptionDomains

mime.test.com

NSExceptionAllowsInsecureHTTPLoads

third.test.com

NSThirdPartyExceptionMinimumTLSVersion

1.1

NSThirdPartyExceptionRequiresForwardSecrecy

App Thinning

The App Store and operating system optimize the installation of iOS and watchOS apps by tailoring app delivery to the capabilities of the user’ s particular device, with minimal footprint. This optimization, called app thinning, lets you create apps that use the most device features, occupy minimum disk space, and accommodate future updates that can be applied by Apple. Faster downloads and more space for other apps and content provides a better user experience.

開發(fā)者都知道逞带,當(dāng)前 iOS App 的編譯打包方式是把適配兼容多個設(shè)備的執(zhí)行文件及資源文件合并一個文件,上傳和下載的文件則包含了所有的這些文件纱新,導(dǎo)致占用較多的存儲空間展氓。

App Thinning 是一個關(guān)于節(jié)省 iOS 設(shè)備存儲空間的功能,它可以讓 iOS 設(shè)備在安裝脸爱、更新及運行 App 等場景中僅下載所需的資源遇汞,減少 App 的占用空間,從而節(jié)省設(shè)備的存儲空間簿废。

根據(jù) Apple 官方文檔的介紹空入,App Thinning 主要有三個機(jī)制:

Slicing

開發(fā)者把 App 安裝包上傳到 AppStore 后,Apple 服務(wù)會自動對安裝包切割為不同的應(yīng)用變體 (App variant)族檬,當(dāng)用戶下載安裝包時歪赢,系統(tǒng)會根據(jù)設(shè)備型號下載安裝對應(yīng)的單個應(yīng)用變體。

On-Demand Resources

ORD (隨需資源) 是指開發(fā)者對資源添加標(biāo)簽上傳后单料,系統(tǒng)會根據(jù) App 運行的情況埋凯,動態(tài)下載并加載所需資源,而在存儲空間不足時扫尖,自動刪除這類資源白对。

Bitcode

開啟 Bitcode 編譯后,可以使得開發(fā)者上傳 App 時只需上傳 Intermediate Representation (中間件)换怖,而非最終的可執(zhí)行二進(jìn)制文件甩恼。 在用戶下載 App 之前,AppStore 會自動編譯中間件,產(chǎn)生設(shè)備所需的執(zhí)行文件供用戶下載安裝媳拴。

其中黄橘,Bitcode 的機(jī)制可以支持動態(tài)的進(jìn)行 App Slicing,而對于 Apple 未來進(jìn)行硬件升級的措施屈溉,此機(jī)制可以保證在開發(fā)者不重新發(fā)布版本的情況下而兼容新的設(shè)備塞关。

如果你的應(yīng)用也準(zhǔn)備啟用 Bitcode 編譯機(jī)制,就需要注意以下幾點:

Xcode 7 默認(rèn)開啟 Bitcode子巾,如果應(yīng)用開啟 Bitcode帆赢,那么其集成的其他第三方庫也需要是 Bitcode 編譯的包才能真正進(jìn)行 Bitcode 編譯

開啟 Bitcode 編譯后,編譯產(chǎn)生的.app 體積會變大 (中間代碼线梗,不是用戶下載的包)椰于,且.dSYM 文件不能用來崩潰日志的符號化 (用戶下載的包是 Apple 服務(wù)重新編譯產(chǎn)生的,有產(chǎn)生新的符號文件)

通過 Archive 方式上傳 AppStore 的包仪搔,可以在 Xcode 的 Organizer 工具中下載對應(yīng)安裝包的新的符號文件

iOS 9?的 ATS 特性和 App Thinning 特性給開發(fā)者帶來安全提升和體驗上的優(yōu)化瘾婿,也是開發(fā)者在后續(xù)?App 的兼容適配方便會考慮的事項。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末烤咧,一起剝皮案震驚了整個濱河市偏陪,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌煮嫌,老刑警劉巖笛谦,帶你破解...
    沈念sama閱讀 221,576評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異昌阿,居然都是意外死亡饥脑,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,515評論 3 399
  • 文/潘曉璐 我一進(jìn)店門懦冰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來灶轰,“玉大人,你說我怎么就攤上這事儿奶】蛲” “怎么了?”我有些...
    開封第一講書人閱讀 168,017評論 0 360
  • 文/不壞的土叔 我叫張陵闯捎,是天一觀的道長椰弊。 經(jīng)常有香客問我,道長瓤鼻,這世上最難降的妖魔是什么秉版? 我笑而不...
    開封第一講書人閱讀 59,626評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮茬祷,結(jié)果婚禮上清焕,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好秸妥,可當(dāng)我...
    茶點故事閱讀 68,625評論 6 397
  • 文/花漫 我一把揭開白布滚停。 她就那樣靜靜地躺著,像睡著了一般粥惧。 火紅的嫁衣襯著肌膚如雪键畴。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,255評論 1 308
  • 那天突雪,我揣著相機(jī)與錄音起惕,去河邊找鬼。 笑死咏删,一個胖子當(dāng)著我的面吹牛惹想,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播督函,決...
    沈念sama閱讀 40,825評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼嘀粱,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了辰狡?” 一聲冷哼從身側(cè)響起草穆,我...
    開封第一講書人閱讀 39,729評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎搓译,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體锋喜,經(jīng)...
    沈念sama閱讀 46,271評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡些己,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,363評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了嘿般。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片段标。...
    茶點故事閱讀 40,498評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖炉奴,靈堂內(nèi)的尸體忽然破棺而出逼庞,到底是詐尸還是另有隱情,我是刑警寧澤瞻赶,帶...
    沈念sama閱讀 36,183評論 5 350
  • 正文 年R本政府宣布赛糟,位于F島的核電站,受9級特大地震影響砸逊,放射性物質(zhì)發(fā)生泄漏璧南。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,867評論 3 333
  • 文/蒙蒙 一师逸、第九天 我趴在偏房一處隱蔽的房頂上張望司倚。 院中可真熱鬧,春花似錦、人聲如沸动知。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,338評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽盒粮。三九已至鸵鸥,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間拆讯,已是汗流浹背脂男。 一陣腳步聲響...
    開封第一講書人閱讀 33,458評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留种呐,地道東北人宰翅。 一個月前我還...
    沈念sama閱讀 48,906評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像爽室,于是被迫代替她去往敵國和親汁讼。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,507評論 2 359

推薦閱讀更多精彩內(nèi)容

  • 很可能你的應(yīng)用是與一個支持HTTPS傳輸數(shù)據(jù)的服務(wù)器交互阔墩,但是并沒有使用TLS 1.2或更高嘿架。在這種情況下,你定義...
    Www劉閱讀 3,075評論 0 5
  • 當(dāng)今世界啸箫,社區(qū)化生活似乎已經(jīng)成為一種趨勢耸彪,這里略想幾個可能的案例。 問答調(diào)查社區(qū) 有一次無意間下載了一款同城交友軟...
    自在牛閱讀 417評論 0 1
  • Sinatra 是我很喜歡的 web 開發(fā)框架忘苛,相比與 Rails 蝉娜,它更輕量級,同時給我更多的控制而不是一大堆的...
    Frederich閱讀 918評論 0 1
  • 各位優(yōu)秀的學(xué)兄企業(yè)家們扎唾,大家晚上好召川,今天是8月18日,與大家分享《正念的奇跡》一行禪師的著作胸遇。 序言一 英譯者序言...
    雅璇閱讀 1,212評論 0 1