你好,歡迎來到IOS教程網

 Ios教程網 >> IOS編程開發 >> IOS開發綜合 >> iOS 9 App 瘦身功能

iOS 9 App 瘦身功能

編輯:IOS開發綜合

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 下載。

 
  1. 上一頁:
  2. 下一頁:
蘋果刷機越獄教程| IOS教程問題解答| IOS技巧綜合| IOS7技巧| IOS8教程
Copyright © Ios教程網 All Rights Reserved