方法/步驟分步閱讀
1
/8
檢查應用程式
首先是檢查.app bundle,看一下程式包裡面哪些檔案佔的空間最大。
在做任何相關最佳化之前,我們需要做一些權衡。透過權衡,可以知道把最佳化的重點集中在什麼地方。本文提到的一些技術缺點我們也需要做出考慮,我們必須考慮相關影響,以確保做出正確的決定。如果不做權衡的話,我們無法知道需要對程式做出什麼樣的改變。
當第一安裝iOS程式時,需要下載完整的一個.ipa檔案。(注意這不同於升級)。實際上.ipa檔案就是一個.zip結構。
我們可以透過這樣的方法來找出程式的.ipa檔案:從App Store下載應用,然後利用iTunes對iOS裝置做同步處理,接著檢視目錄:~/Music/iTunes/iTunes Music/Mobile Applications,就能找到.ipa檔案了。
當讓我們也可以透過使用: Xcode的Archive命令來構造出.ipa檔案——該檔案與提交到App Store上的格式基本一致。
2
檢查.ipa檔案
簡單的將字尾為.ipa檔案修改為.zip,然後利用Finder將其解壓出來。右鍵單擊解壓出來的.app bundle,選擇顯示包內容,以檢視裡面的資原始檔。透過該方法我們可以看到哪些檔案佔的空間最大。記住:.app bundle是經過壓縮的,並且有些檔案的壓縮效果要比別的檔案好,所以壓縮後的效果才是才是最重要的。不過一般情況下在壓縮前最大的檔案,在壓縮後依舊是最大的檔案。我們可以將某個檔案刪除,然後在Finder中右鍵單擊,選擇壓縮,這樣可以更加精確的測量檔案壓縮效果。
3
iOS App Store相關因素
作為提交到App Store中app裡的可執行檔案是被加過密的。加密的副作用是可執行檔案的壓縮效果沒有之前的好了,因為加密會隱藏一些細節問題。因此,從App Store下載下來的.ipa檔案大小要比從本地build出來的.ipa檔案大。
注意:將長文字內容和表資料等從程式碼中移除,並新增到外部檔案中,這樣可以減小最終安裝包下載的大小——因為這些檔案的壓縮效果更好。
4
Build Settings
編譯選項
將build setting中的Optimization Level設定為Fastest, Smallest [-Os]; 將build setting 中的Strip Debug Symbols During Copy設定為YES(COPY_PHASE_STRIP = YES),這樣可以減小編譯出二進位制檔案的尺寸。這裡提到的這些設定在Xcode工程中對於Release的配置是預設的。
警告:這些設定會讓你的程式很難debug。在一般開發環境build中不建議這樣設定,
5
Target針對較少的CPUs
預設情況下,Xcode工程都配置為:對程式指定的特定CPU型別做最佳化處理,以生成相對於的可執行檔案。不同的硬體,將執行不同的可執行程式碼。雖然這樣最佳化後的程式,只能針對某些裝置執行,但是這大大減小可執行程式的大小。
要想只設定特定型別的CPUs,可以修改build setting中的Architectures,將其從Standard $(ARCHS_STANDARD)修改為你希望支援的列表中對應的特定型別CPU。有效的CPU名稱列在Valid Architectures (VALID_ARCHS) build setting中。請不要修改Valid Architectures設定項,最好由Xcode管理。
6
Assets
對應用程式做一個完整性檢查
利用Inspecting Your App中介紹的流程,對.app bundle做一個全面的檢查,以瞭解那些是真正需要用到的。在程式中,經常會包含一些額外的檔案,例如readme之類的,這些從來都不會被用到。
將資料從程式碼中剝離出來
將所有的資源(例如很長的字串)從程式碼中剝離出來,並存入外部檔案,這樣會減小最終檔案下載的大小,因為這些檔案的壓縮效果更好。(參考iOS App Store Specific Considerations中的完整介紹。)
7
Image Assets
儘量使用8-bit圖片
使用8-bit的PNG圖片,比32-bit的圖片能減少4倍的壓縮率。由於8-bit的圖片支援最多256種不同的顏色,所以8-bit的圖片一般只應該用於一小部分的顏色圖片。例如灰度圖片最好使用8-bit。
針對32-bit的圖片儘量使用高壓縮的比率
利用Adobe Photoshop的Save For Web可以減小JPEG和PNG的圖片大小。在Xcode中,預設情況下,會自動的使用pngcrush來壓縮.png圖片。
8
Audio Assets
音訊的壓縮
參考WWDC中的Audio Development for Games,裡面介紹瞭如何有效的處理音訊。常規來說,我們要使用AAC或MP3來壓縮音訊,並且可以嘗試降低一下音訊的位元率。有時候44.1khz的取樣是沒有必要的,稍微低一點的位元率也不會降低音訊的質量。
方法/步驟分步閱讀
1
/8
檢查應用程式
首先是檢查.app bundle,看一下程式包裡面哪些檔案佔的空間最大。
在做任何相關最佳化之前,我們需要做一些權衡。透過權衡,可以知道把最佳化的重點集中在什麼地方。本文提到的一些技術缺點我們也需要做出考慮,我們必須考慮相關影響,以確保做出正確的決定。如果不做權衡的話,我們無法知道需要對程式做出什麼樣的改變。
當第一安裝iOS程式時,需要下載完整的一個.ipa檔案。(注意這不同於升級)。實際上.ipa檔案就是一個.zip結構。
我們可以透過這樣的方法來找出程式的.ipa檔案:從App Store下載應用,然後利用iTunes對iOS裝置做同步處理,接著檢視目錄:~/Music/iTunes/iTunes Music/Mobile Applications,就能找到.ipa檔案了。
當讓我們也可以透過使用: Xcode的Archive命令來構造出.ipa檔案——該檔案與提交到App Store上的格式基本一致。
2
/8
檢查.ipa檔案
簡單的將字尾為.ipa檔案修改為.zip,然後利用Finder將其解壓出來。右鍵單擊解壓出來的.app bundle,選擇顯示包內容,以檢視裡面的資原始檔。透過該方法我們可以看到哪些檔案佔的空間最大。記住:.app bundle是經過壓縮的,並且有些檔案的壓縮效果要比別的檔案好,所以壓縮後的效果才是才是最重要的。不過一般情況下在壓縮前最大的檔案,在壓縮後依舊是最大的檔案。我們可以將某個檔案刪除,然後在Finder中右鍵單擊,選擇壓縮,這樣可以更加精確的測量檔案壓縮效果。
3
/8
iOS App Store相關因素
作為提交到App Store中app裡的可執行檔案是被加過密的。加密的副作用是可執行檔案的壓縮效果沒有之前的好了,因為加密會隱藏一些細節問題。因此,從App Store下載下來的.ipa檔案大小要比從本地build出來的.ipa檔案大。
注意:將長文字內容和表資料等從程式碼中移除,並新增到外部檔案中,這樣可以減小最終安裝包下載的大小——因為這些檔案的壓縮效果更好。
4
/8
Build Settings
編譯選項
將build setting中的Optimization Level設定為Fastest, Smallest [-Os]; 將build setting 中的Strip Debug Symbols During Copy設定為YES(COPY_PHASE_STRIP = YES),這樣可以減小編譯出二進位制檔案的尺寸。這裡提到的這些設定在Xcode工程中對於Release的配置是預設的。
警告:這些設定會讓你的程式很難debug。在一般開發環境build中不建議這樣設定,
5
/8
Target針對較少的CPUs
預設情況下,Xcode工程都配置為:對程式指定的特定CPU型別做最佳化處理,以生成相對於的可執行檔案。不同的硬體,將執行不同的可執行程式碼。雖然這樣最佳化後的程式,只能針對某些裝置執行,但是這大大減小可執行程式的大小。
要想只設定特定型別的CPUs,可以修改build setting中的Architectures,將其從Standard $(ARCHS_STANDARD)修改為你希望支援的列表中對應的特定型別CPU。有效的CPU名稱列在Valid Architectures (VALID_ARCHS) build setting中。請不要修改Valid Architectures設定項,最好由Xcode管理。
6
/8
Assets
對應用程式做一個完整性檢查
利用Inspecting Your App中介紹的流程,對.app bundle做一個全面的檢查,以瞭解那些是真正需要用到的。在程式中,經常會包含一些額外的檔案,例如readme之類的,這些從來都不會被用到。
將資料從程式碼中剝離出來
將所有的資源(例如很長的字串)從程式碼中剝離出來,並存入外部檔案,這樣會減小最終檔案下載的大小,因為這些檔案的壓縮效果更好。(參考iOS App Store Specific Considerations中的完整介紹。)
7
/8
Image Assets
儘量使用8-bit圖片
使用8-bit的PNG圖片,比32-bit的圖片能減少4倍的壓縮率。由於8-bit的圖片支援最多256種不同的顏色,所以8-bit的圖片一般只應該用於一小部分的顏色圖片。例如灰度圖片最好使用8-bit。
針對32-bit的圖片儘量使用高壓縮的比率
利用Adobe Photoshop的Save For Web可以減小JPEG和PNG的圖片大小。在Xcode中,預設情況下,會自動的使用pngcrush來壓縮.png圖片。
8
/8
Audio Assets
音訊的壓縮
參考WWDC中的Audio Development for Games,裡面介紹瞭如何有效的處理音訊。常規來說,我們要使用AAC或MP3來壓縮音訊,並且可以嘗試降低一下音訊的位元率。有時候44.1khz的取樣是沒有必要的,稍微低一點的位元率也不會降低音訊的質量。