最近看了一個直播分享介紹的技術 挺好的。app thinning 應用瘦身技術,這個是WWDC 2015 最新分享的技術。主要分為下面三個部分
App slicing
這個的意思比較簡單 就是應用裁剪。我們都知道系統中代碼文件一般占用不了多少ipa包的大小,主要是圖片資源占用的資源比較多,以前apple的方式是全部從 app store 上面下載下來整個ipa 資源包,使用的時候使用 @1x,@2x,@3x,來區分不同分辨率的圖片,這種比較蠢笨的方式早就遭到了眾多開發者的詬病,特別是游戲,圖片資源占用了大部分ipa包的大小,動不動就是 100M朝上。
有神馬好的解決方案呢?正常人肯定是這樣想的,我是 iPhone 5s 的手機 我的手機只需要 @2x 的圖片,我為啥還要下載一套 @1x 和 @3x 的圖片呢?對啊,大師兄說的對啊... Apple 在WWDC 2015 上面終于把這個蛋疼的地方改了...
具體的解決問題的方法是下面這個 鐺鐺鐺鐺~~ !!
這個資源管理文件夾管理圖片文件。我們開發一般 都切好多 PDF的圖,我讓美工妹子,直接給我一張圖,除了顏色比較復雜的位圖,一般圖標類的純色的圖片都是PDF的圖片,這樣我也方便自己渲染顏色。
使用assets 管理你的圖片,并且打包上傳到 app store 之后,每次用戶下載的時候 apple 的后臺會根據當前用戶的機型生成一套 最適合這個機型的一套圖片
這樣就節省了大量的不必要的圖片資源。能節省出來很大一部分空間。
BitCode
這個機制是優化你的最終生成可執行代碼的,大體的意思就是說。app 需要運行在多種機型上面,但是 apple 的處理器架構并不是全部一樣的,可能這個設備的指令集和其他設備的指令集不是一樣的,這個時候我們就需要對多種指令集做處理。
以前當你打包app 的時候 你需要在 ipa 包中生成兩套可執行代碼,arm-64 一套,arm-32一套,用戶也是這樣從 app store 下載兩套指令集。
用戶下載 app 的時候其實是下載了兩套指令集,當打開應用,系統加載應用的時候選擇一套可用的指令集,去執行。這種機制和上面圖片的機制是一樣的,蠻力的方法,最簡答的方法,我全部給你,你想用哪個你自己選擇。
正常人想會會怎樣解決這個問題呢? 我的是 iPhone 5s 的手機我只需要 arm-64 的針對iPhone 5s 優化過的可執行代碼,我不需要arm-32 的可執行代碼了。對啊。大師兄...
bitcode 的機制是開發人員打包的 ipa 包中的代碼不是最終的可執行代碼,而是一種中間代碼(感覺跟 C# 是一個機制呢... 難道apple在下一盤大棋...)用戶下載應用的時候同樣是 apple 的后臺根據當前設備給你生成最適合當前設備的可執行代碼傳給用戶。這些都無需我們開發者操心,蘋果會幫助我們優化最終的可執行代碼。感覺棒棒噠~~!!
On-Demand Resources (ODR技術)
也是圖片資源管理技術,這個技術的大致意思是這樣的在每個assets管理的圖片上面都可以打上一個tags,不同的tags 分別屬于不同的組,我可以在程序中分情況下載不同組的圖片.這個在游戲場景中用到的很多,比如我用戶第一關沒有過去是不允許進入第二關的,那這個時候第二關的資源就是沒有用的。我不需要下載,當用戶到達第二關的時候我才需要下載第二關的資源。apple 將這些下載代碼都封裝好了 ,用戶只需要代用就行了,但是,但是,但是,這個是 iOS 9 的api 需要適配的話 還是不能用到,用一些黑魔法估計可以,這個技術大致就是這樣的,我想在 app 開發中也用不到,做游戲的可能能用到,具體的還是參考 apple 的文檔吧
ORD BY APPLE