iOS 9 App 瘦身功能

來源:互聯網
上載者:User

iOS 9 App 瘦身功能
App 瘦身簡介

當前市場上存在大量的 iOS 裝置,因此有多種螢幕尺寸和解析度,要想保證一個 App 在多種螢幕下的展示效果需要大量的資源(比如 png、jpeg 以及二進位的 PDF)。不幸的是,這導致使用者需要下載一個巨大的程式包(之前的 iOS 版本強制使用者下載全部 App 檔案,包括他們在用 iPhone 時永遠也不會用到的 iPad 適配圖片)。16G 的 iPhone 仍然有不少人在用(並且可能短時間內不會消失),所以你要縮小 App 體積從而可以快速下載並且保證使用者有足夠的空間。App 瘦身特性讓這一切成為可能。

除了代碼和圖片,現在的 App 還包括可執行代碼以及32位、64位版本(針對各種架構進行最佳化,比如 arm64、arm7S 和 arm7)、3D 圖形技術(例如 OpenGL、Metal 等)、聲音和其他檔案。總之,現在的 App 已經複雜到令人難以置信。這就是 App 瘦身需要解決的問題。

App 瘦身會自動檢測使用者裝置類型(比如型號名稱),並為特定的裝置下載相關內容。換句話來說,如果你使用 iPad Mini 1(沒有視網膜屏,只有 1X 的解析度),那麼只有 1X 的檔案會被下載。更強大更清晰的資源(比如 iPad Mini 3 或 4)將不會下載。因為使用者只需要下載他/她需要用到的內容,這加速了下載過程,並節省了裝置上的空間。

雖然這起初可能聽起來很複雜,我們將深入到具體的細節。幸運的是,Xcode 和 AppStore 會完成這項工作的絕大部分,開發人員會輕鬆很多。因此,在本教程中不會有太多的代碼,而是重點關注理解 App 瘦身的過程和它用到的技術。

App 瘦身有三個主要方面,應用程式切片(App Slicing)、中間代碼(Bitcode)和按需載入資源(On Demand Resources)。在本教程中,我們將一一介紹。

應用程式切片(App Slicing)

App瘦身第一個我們要討論的就是切片(slicing)。根據蘋果的文檔,

切片是建立和提供不同的目標裝置的應用程式套件組合的變體(variant)的過程。

一個變體(variant)只包含可執行架構和目標裝置所需要的資源。換句話來說,應用程式切片只提供給與每個裝置相關的資源(取決於螢幕解析度和架構等等)。實際上,應用程式切片完成了 App 瘦身的大部分工作。

假設你已準備好提交 App,和之前一樣,你會上傳 .IPA 或者 .App 檔案到 iTunes Connect(但是必須使用 Xcode7,因為它包含支援 App 瘦身的 iOS 9 SDK)。然後 AppStore 會對 App 進行切片,建立特定的變體(variant),這些變體將根據功能(capabilities)分發給每個裝置,。

按需載入資源(On Demand Resources)

為了完全理解 App 瘦身,你需要瞭解什麼是按需載入資源(ODR)。 按需載入的資源就是在 App 初次安裝後需要下載的檔案。例如,遊戲的特定關卡(以及和這些關卡相關的內容)只有在玩家解鎖時才可以下載。此外,超過設定時間之後,玩家不需要的早期關卡可以被移除,以節省裝置的儲存空間。

在 Xcode 的設定中(在 Build Setting 裡),開啟按需載入資源需要把”Enable On Demand Resources”改為”YES”.

中間代碼(Bitcode)

App 瘦身的最後一個內容是中間代碼。中間代碼有點抽象,但在本質上,它是在 App 被下載前,蘋果最佳化它的新途徑。中間代碼使得 App 可以在任何裝置上儘可能快速和高效執行。中間代碼可以為最近使用的編譯器自動編譯 App,並且對特定的架構做最佳化(例如 arm64 64 位元處理器,如 iPhone6s 和 iPad Air 2)。

中間代碼會和上文提到的其他瘦身技巧一起使用,去除針對其他架構的最佳化內容,只下載需要的最佳化內容,從而減少下載檔案的大小。

在 iOS 中,中間代碼是一種新特性,並且在新的工程中需要手動開啟。這個過程可以在 Build Setting 下把 Enable bitcode 修改為 YES。

在你的項目中使用 App 瘦身

儘管 Xcode 和 App Store 處理了 App 瘦身的絕大多數流程,你仍然需要採取一定的預防措施以確保你的 App 真的使用了這種新的技術。首要的,你必須使用資來源目錄(asset catalogs).在這一點上,大多數的 App 預設使用資來源目錄(asset catalogs)。如果你還沒有用採用資來源目錄(asset catalogs),你現有的大部分內容可以被轉移到一個目錄下,只需要在 Xcode的項目設定中點擊”Use Asset Catalog”按鈕,如下所示。

Xcode 的新特性之一就是Sprite Atlases。Sprite Atlases 基本上結合使用資來源目錄和 SpriteKit(Xcode 中開發 2D 遊戲用到的技術)。同樣的,如果你是用 SpriteKit,App 瘦身是必須的。

測試 App 瘦身

如你所見,Xcode 和蘋果的 AppStore 已經處理了絕大多數 App 瘦身的過程,這樣在你自己的 App 中使用這個技術會容易很多。但是如何測試你的 App 並且確保它已經應用了 App 瘦身?幸運的是蘋果的 TestFlight 提供了完美的解決方案。除 AppStore 的應用瘦身技術外,TestFlight 的使用者也可以體驗這個特性。

在本篇教程的第二部分,我們會介紹如何在 TestFlight 中使用 App 瘦身。

首先,下載這個基本空白的項目,解壓,並且在 Xcode 中運行,你將會注意到這個項目基本沒有什麼除了在資來源目錄(asset catalogs)中的一系列的圖片(以及少量的代碼)。這個資來源目錄(asset catalogs) 也包含 1x、2x和3x 版本的 App 表徵圖。

首先,在模擬器或者真機上運行這個 App。開啟設定應用,點擊儲存和 iCloud 使用這一項(如果不是 iOS 9 裝置,點儲存) 並選擇管理儲存空間。向下滑動到我們剛剛編譯好的 App 並點擊它。你會注意到它大概有 17.0 MB(當上傳至 iTunes Connect 時這個大小可能略有不同)。

當你使用 Xcode 構建並運行一個 App 時,Xcode 不會自動處理 App 變體(variant)並對 App 瘦身,因此整個 App 檔案都在你的裝置上。

下一步,在 Xcode 中單擊Product標籤,選擇Archive.

注意,你可能首先需要修改這個 App 的Bundle Identifier以匹配一個你自己建立的標識符。否則,這個 App 將不會被上傳到 iTunes Connect.

確保你在點擊”Submit”前,選擇了”Include bitcode”。如果一切順利的話,你將會看到一個綠色對號通知你這次構建已經被上傳。

現在登入到iTunes Connect,建立一個新的 App(包含合適的 bundle ID、App 名字等等)。

把你自己添加為自我裝載人員。注意,一次構建保持“正在處理中”這個狀態幾小時是很尋常的。一旦這個 App 處理完成,選擇它並且按下開始測試按鈕。

一封電子郵件將會被發送到你的地址。確保你正在使用想要測試的 iOS 裝置,開啟這封電子郵件。你將會進入 TestFlight 應用。

安裝此次構建,一旦完成安裝,就回到設定應用中,找到儲存,像此前一樣找到這個 App。注意,這個 App 現在接近 5.4 MB。這就是 App 瘦身的意義。

哇哦!你剛剛從你的 App 中剔除掉了 12.4 MB - 並且這隻是一個非常簡單的 App。那些包含多種不同的資源(asset)的 App 效果更好。

總結

在本篇教程,我們看到了 App 瘦身的強大。我們討論了 App 瘦身的三個主要的方面:應用程式切片(App Slicing)、中間代碼(Bitcode)和按需載入資源(On Demand Resources).

不幸的是,2015 年 9 月 24 日,蘋果在它的開發人員門戶宣布 App 瘦身已經被延遲,並且不會包含在 iOS 9(或者 9.0.1)公開發行版中:

應用程式切片目前不可用於 iOS 9 應用,因為 iCloud 建立 iOS 9 備份有問題,AppStore 中的一些 App 只能還原到相同型號的 iOS 裝置。

當使用者下載你的 iOS 9 應用時,他們會擷取通用版本,而不是針對他們的裝置類型的特定變體(vatiant)。TestFlight 將會給自我裝載使用者繼續分發變體(vatiant). 應用程式切片將會在未來的軟體更新中可以使用。現在你什麼都不用做。

然而,就像我在文章的一開始中提到的,App 瘦身已經被修複並且已經為所有運行 iOS 9.0.2 的裝置準備就緒。App 瘦身是一個簡直不可思議的工具,它將會持續加速 App 下載。

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.