iOS9 App Thinning(应用瘦身)功能介绍
iOS9 發(fā)布后,產(chǎn)生了一個(gè)使 App Thinning 無法正常運(yùn)行的 bug。在iOS9.0.2 版本中,這個(gè) bug 已經(jīng)被修復(fù),App Thinning 已經(jīng)可以正常使用。當(dāng)你從應(yīng)用商店(App Store)下載應(yīng)用時(shí),請(qǐng)注意這點(diǎn)。
iOS9 推出之后,大受歡迎。僅僅數(shù)周,已經(jīng)有超過半數(shù)的 iOS 設(shè)備安裝了這一新系統(tǒng)。這是 iOS 歷代版本中采納速度最快的—甚至打破了 2013 年 iOS7 創(chuàng)下的記錄。
關(guān)于 iOS9,筆者最近發(fā)表了一篇名為Search APIs and SFSafariViewController的文章,今天,筆者將繼續(xù)探討 iOS9 上另一個(gè)令人興奮的功能——App Thinning(應(yīng)用瘦身)。在這篇教程里,我們將探討 App Thinning 之所以重要的原因,以及如何在你自己的 App 上使用這一令人興奮的功能。
根據(jù) WWDC(蘋果全球開發(fā)者大會(huì))的發(fā)布,App Thinning 是一項(xiàng)可以改變整個(gè)下載進(jìn)程的新技術(shù)。許多用戶反應(yīng),流量費(fèi)用過高、iOS 設(shè)備的存儲(chǔ)空間有限,而下載速度卻不斷提升,為了適應(yīng)這些問題,App Thinning 變得十分值得學(xué)習(xí)。此外,App Thinning 的發(fā)布已經(jīng)推遲了,現(xiàn)在正是學(xué)習(xí)關(guān)于這一新技術(shù)的最好時(shí)機(jī)。
前提條件
在本教程中,筆者假設(shè)你有 Xcode 實(shí)踐經(jīng)驗(yàn)而且知道如何使用 IDE。如果你對(duì)此不甚了解或者不確定 IDE 是什么,也許你會(huì)想看看與此相關(guān)的優(yōu)秀免費(fèi)課程。
此外,筆者也假設(shè)你知道如何在 App Store 上發(fā)布 app,也知道如何使用蘋果的Beta 應(yīng)用測(cè)試服務(wù) testflight。筆者不會(huì)具體說明如何使用 testflight,所以如果你對(duì) testflight 不熟悉或者不清楚上傳發(fā)布 app 的大體流程,筆者推薦你先看一看這篇 AppCoda 上的文章除了這些和你學(xué)習(xí)的意愿之外,就沒有任何前提條件了。
以此為前提,讓我們開始吧。
App Thinning 的介紹
現(xiàn)今,市面上的 iOS 設(shè)備多種多樣,屏幕尺寸和分辨率更是五花八門,這導(dǎo)致一個(gè)app 想在多種屏幕上都能視覺效果良好,就需要大量的優(yōu)化資源(即 PNG 格式,JPEG 格式以及矢量 PDF 文件等)以匹配不同尺寸的屏幕。更糟糕的是,這導(dǎo)致用戶的下載量大幅增加。(之前的 iOS 版本強(qiáng)制要求用戶下載整個(gè) app 文件,即使用戶使用的是 iPhone,也需要下載他們絕不會(huì)使用到的 ipad 圖像文件)16g 的iPhone 還是切實(shí)存在的(短時(shí)間內(nèi)也不會(huì)消失),因此,讓你的 App 變得精簡(jiǎn)而且迅速下載可以確保用戶留有足夠的空間,并且優(yōu)化用戶體驗(yàn)。App Thinning 讓這一切變得可能。
現(xiàn)今,App 不再是由簡(jiǎn)單的代碼和圖像組成了。現(xiàn)代應(yīng)用不僅僅包括可執(zhí)行的代碼,還有不同的 32 位,64 位版本(針對(duì)如 arm64, arm7s, 和 arm7 等多種架構(gòu)的優(yōu)化),3D 圖形技術(shù)(如 OpenGL, Metal 等等),還有音頻以及其他不同的文件。總之,如今 App 功能極其復(fù)雜。這就是 App Thinning 發(fā)揮作用的地方。
App Thinning 會(huì)自動(dòng)檢測(cè)用戶的設(shè)備類型(即型號(hào)名稱)并且只下載當(dāng)前設(shè)備所適用的內(nèi)容。換句話說,如果你使用的是 iPad Mini 1(1x分辨率且非 retina 顯示屏)那么只會(huì)下載 1x分辨率(下文會(huì)有更多介紹)所使用的文件。更強(qiáng)大和更高分辨率的 ipad(如iPad Mini 3或 4)所使用的資源將不會(huì)被下載。因?yàn)橛脩魞H需下載他/她自己當(dāng)前使用的特定設(shè)備所需的內(nèi)容,這不僅加快了下載速度,還節(jié)約了設(shè)備的存儲(chǔ)空間。
盡管一開始聽起來可能有點(diǎn)復(fù)雜,但是筆者會(huì)深入了解細(xì)節(jié)。幸運(yùn)的是,這項(xiàng)工作的大部分會(huì)由 Xcode 和 App Store 負(fù)責(zé)完成,這使得開發(fā)者的生活輕松了許多。因此,本教程的重點(diǎn)在于對(duì) App Thinning 的深刻理解以及其實(shí)現(xiàn)技術(shù),并不會(huì)有大量的代碼。
App Thinning 主要有以下三個(gè)方面:App Slicing(應(yīng)用程序的劃分),Bitcode以及按需加載資源。在本教程中,筆者會(huì)一一詳述每個(gè)方面。
App Slicing
關(guān)于 App Thinning,本文探討的第一個(gè)方面就是劃分問題。根據(jù)蘋果官方文獻(xiàn)的描述「Slicing 是為應(yīng)用捆綁包創(chuàng)建、分發(fā)不同變體以適應(yīng)不同目標(biāo)設(shè)備的過程。一個(gè)變體只包含針對(duì)某個(gè)目標(biāo)設(shè)備的可執(zhí)行架構(gòu)與資源。」 換句話說,App Slicing僅向設(shè)備傳送與之相關(guān)的資源(取決于屏幕分辨率,架構(gòu)等等)。事實(shí)上,App Slicing 負(fù)責(zé)處理 App Thinning 的主要流程。
當(dāng)你準(zhǔn)備好提交 app 時(shí),通常會(huì)(但必須使用 Xcode7,因?yàn)樗С?App Thinning 的 iOS9 SDK)向 iTtunes Connect 上傳 .IPA 或 .App 文件。然后,應(yīng)用商店分割該應(yīng)用,創(chuàng)建特定的變體以適應(yīng)性能不同設(shè)備。
On Demand Resources
按需加載資源
想要充分理解 App Thinning,你必須理解按需加載資源(On Demand Resources , ODR)。按需加載資源是在 app 第一次安裝后可下載的文件。舉例說明,當(dāng)玩家解鎖游戲的特定關(guān)卡后可以下載新關(guān)卡(和這個(gè)關(guān)卡相關(guān)的特定內(nèi)容)。此外,玩家已經(jīng)通過的關(guān)卡可以被移除以便節(jié)約設(shè)備上的存儲(chǔ)空間。
開啟按需加載資源功能涉及改變 Xcode 中的設(shè)置(在編譯設(shè)置(Build Settings)下),將「啟用按需加載資源”選中為 是」 。
Bitcode
App Thinning 的最后一個(gè)方面是 bitcode。Bitcode 有些抽象,但在本質(zhì)上它也是蘋果在用戶下載前優(yōu)化app的新方式。Bitcode 使得 app 無論在何設(shè)備上都能快速高效地運(yùn)行。Bitcode 使用最新的編譯器自動(dòng)編譯app并且針對(duì)特定架構(gòu)進(jìn)行優(yōu)化。(例如,針對(duì) iPhone 6s和 iPad Air 2等 64 位處理器的 arm64)
Bitcode 不會(huì)下載應(yīng)用針對(duì)不同架構(gòu)的優(yōu)化,而僅下載與特定設(shè)備相關(guān)的優(yōu)化,使得下載量更小,同時(shí)與前文所述的 App Thinning 技術(shù)緊密合作。
Bitcode 是 iOS 上較新的功能,對(duì)于新的項(xiàng)目需要手動(dòng)開啟。這可以通過選擇Build Settings(編譯設(shè)置)下的項(xiàng)目設(shè)置,將 bitcode 設(shè)為 YES 來完成。
在自己的項(xiàng)目中應(yīng)用 App Thinning
雖然 Xcode 和 App Thinning 負(fù)責(zé)處理 App Thinning 的主要流程,但是你還是要采取一定的預(yù)防措施以確保你的 app 支持這項(xiàng)新技術(shù)。首先,你必須使用資產(chǎn)目錄。資產(chǎn)目錄在大部分 app 上是默認(rèn)啟用的。如果你尚未啟用資產(chǎn)目錄,現(xiàn)存的許多文件都可以通過下圖的方式點(diǎn)擊 Xcode 項(xiàng)目設(shè)置中“啟用資產(chǎn)目錄”轉(zhuǎn)移到目錄下。
Sprite Atlases 是 Xcode7 中的新特性。Sprite Atlases 本質(zhì)上就是資產(chǎn)目錄的組合,也是 SpriteKit(Xcode用來創(chuàng)建2D游戲的技術(shù))的核心。所以說,如果你使用 SpriteKit,那么 app thinning 就是必須的。
App Thinning 的測(cè)試
正如上文所述,Xcode 和 App Store 負(fù)責(zé)處理大部分的 App Thinning 進(jìn)程,讓這項(xiàng)技術(shù)變得真正易于在你的 app 上應(yīng)用。但是,假如你想測(cè)試自己的 app 以確定它已經(jīng)為 app thinning 做好準(zhǔn)備,應(yīng)該怎么辦呢?幸運(yùn)的是,蘋果的 TestFlight 為我們提供了完美的解決方案。
在本教程的后半段,筆者會(huì)探討如何在 TestFlight 上使用 App Thinning。
首先,下載這個(gè)幾乎空白的項(xiàng)目,將它解壓縮,并在 Xcode 中運(yùn)行。你會(huì)發(fā)現(xiàn)該項(xiàng)目中除了幾張資產(chǎn)目錄下的圖像(而沒有大量的代碼),并無太多內(nèi)容。該資產(chǎn)目錄也包含了該應(yīng)用圖標(biāo)的 1x、2x、3x 版本。
首先,在模擬器或設(shè)備上運(yùn)行該應(yīng)用。打開設(shè)置應(yīng)用程序,單擊「存儲(chǔ)空間與 iCloud 用量」 (在非 iOS 的 9 設(shè)備上只是「存儲(chǔ)」 ),然后選擇「管理存儲(chǔ)空間」 。向下滾動(dòng)找到剛剛編譯的應(yīng)用程序,然后點(diǎn)擊它。你會(huì)發(fā)現(xiàn)它大約只有 17.0 MB 大小(當(dāng)上傳到 iTunes Connect 時(shí)大小可能略有不同)。
aa
當(dāng)你使用 Xcode 編譯和運(yùn)行一個(gè)應(yīng)用時(shí),Xcode 不會(huì)自動(dòng)處理應(yīng)用程序變種和 App Thinning。這樣,整個(gè)應(yīng)用程序文件還是在你的設(shè)備上。
然后點(diǎn)擊 Xcode 的產(chǎn)品選項(xiàng)(Product tab)并且選擇存檔(Archive)。
注:你有可能需要先修改應(yīng)用程序的 Bundle Identifier 去匹配你自己創(chuàng)建的程序。否則,該應(yīng)用程序?qū)o法上傳到 iTunes Connect 上。
確保你在選擇「提交」之前選擇了「包含 bitcode」。如果一切順利,你會(huì)看到一個(gè)綠色的對(duì)號(hào)提示你項(xiàng)目已經(jīng)成功更新了。
現(xiàn)在點(diǎn)擊這里 登錄 iTunes Connect ,創(chuàng)建一個(gè)新的應(yīng)用程序(填入適當(dāng)?shù)睦壈?ID,應(yīng)用程序名稱等)。如果你不確定怎么做,請(qǐng)參考AppCoda TestFlight 教程。
將自己添加為內(nèi)部測(cè)試員。要注意,在建立項(xiàng)目時(shí)數(shù)個(gè)小時(shí)都處于「處理中狀態(tài)并不尋常。一旦應(yīng)用程序處理完畢,就選中它并按下 開始測(cè)試」。
你將會(huì)收到一封電子郵件。請(qǐng)確保使用你想測(cè)試的 iOS 設(shè)備,并接受郵件邀請(qǐng)。你會(huì)被帶到 TestFlight 應(yīng)用。
安裝這個(gè)版本。完成之后,返回到應(yīng)用程序設(shè)置,瀏覽存儲(chǔ),找到我們之前的應(yīng)用程序。發(fā)現(xiàn)這個(gè)應(yīng)用程序現(xiàn)在僅有 5.4MB 了。這就是 App Thinning 的杰作!
哇!你的一個(gè)非常精簡(jiǎn)的應(yīng)用程序都節(jié)省了 12.4MB 的存儲(chǔ)空間。那么,包含多個(gè)不同資源的應(yīng)用程序?qū)?huì)得到更加顯著的大小變化!
概要
在本文中,我們了解了 App Thininng 的功能,討論了 App Thinning 的三個(gè)主要方面:app slicing,按需分配資源以及 bitcode。
不幸的是,2015年9月24日,蘋果在其開發(fā)者門戶網(wǎng)站宣布,App Thinning 已被推遲,并沒有包含在 iOS9(或9.0.1)的公開發(fā)布中:
然而,正如筆者在本文一開始提到過的,App Thinning 已經(jīng)得到修復(fù),所有運(yùn)行 iOS 9.0.2 的設(shè)備都可以使用該功能。App thinning 是一種絕佳的工具,它將大大加快應(yīng)用程序的下載速度!
原文地址:http://www.appcoda.com/app-thinning/
OneAPM Mobile Insight %E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D&utm_campaign=MiiOSArti&from=jseagsbgwv),監(jiān)控網(wǎng)絡(luò)請(qǐng)求及網(wǎng)絡(luò)錯(cuò)誤,提升用戶留存。訪問 OneAPM 官方網(wǎng)站感受更多應(yīng)用性能優(yōu)化體驗(yàn),想技術(shù)文章,請(qǐng)?jiān)L問 OneAPM 官方技術(shù)博客%E5%8A%9F%E8%83%BD%E4%BB%8B%E7%BB%8D&utm_campaign=MiiOSArti&from=jseagsbgwv)。
本文轉(zhuǎn)自 OneAPM 官方博客
總結(jié)
以上是生活随笔為你收集整理的iOS9 App Thinning(应用瘦身)功能介绍的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python数据清洗基本流程
- 下一篇: 自定义behavior-仿华为应用市场