所以說,本系列的重點不在於熱更新技術本身,而是在於如何用最小的成本,賦予一個中規中矩的iOS App的資源部分,以熱更新的能力!好吧,略顯繞口,意會!事實也是如此! ...
必要的序
以後在寫系列文章,準備把基本的規劃和動機等,單獨作為一個小的序言部分給獨立出來.序言部分,可以較為完整地交待系列文章的寫作動機,所展示的編碼技術可能的應用場景等.個人,我還是比較看重文章或者書籍等的序言部分的.真有相對確定確實有價值的東西,才會進一步去閱讀.所以,我覺得,序,總是必要的.
關於我寫博客的節奏
我會儘可能地使每一個系列的文章,能相對完整.但是,就像你看到的這樣,前一個系列還在講Spark,這篇文章就開始講 iOS 開發的一些問題.到底要鬧哪樣?
還能怎麼樣?開心就好!幹嘛要讓那些不存在的東西,束縛自己呢!我覺得,理想的生活節奏就是,做自己喜歡的事,然後分享給有需要的人看.這就夠了.
所以說,未來不管你在博客中看到什麼詭異的系列主題,都不用感到驚訝!如果剛好自己也感興趣,一起來玩嘍~
當然,有人說,天天BUG,還解不完呢,哪有閑心寫BUG呢!這是問題,或許也是答案!你用來解決某個BUG的精湛技巧,或許在QA或者PM眼裡,不過是理所當然地而已;就算他們給你一個贊,你也明白,其實他們可能根本就不懂你解決的這個問題的真正意義.
但是編碼的眾多有趣屬性中的一種就是: 別人的不認同,並沒有辦法真正否定你天馬行空般編碼技術的價值和意義.寫出來,哪怕只有一個人,能真心看懂,發自肺腑地給個贊--足矣!
為什麼要實現iOS圖片等資源文件的熱更新化?
首先說一下,這個系列要做什麼.要做的事,簡單說,就是把圖片,CSS樣式等資源文件從項目中剝離出來,放到一個特定的目錄里;然後,我們每次都這個特定地目錄讀取數據;最重要的是,我們可以動態更新這個目錄,實現圖片等資源文件的動態更新,即熱更新.
這件事,本身思路並不難,各個技術細節,多花點時間,總是可以解決的.但考慮到,在實際地生產環境中,可能是App已經迭代更新了大半年了,圖片PM腦袋一熱說,我們要做個 換膚 功能.然後,自然要把所有涉及圖片的操作剝離重寫下,而且也要把圖片資源從 Images.xcassets 導出.當然,從原始素材導出替換也是可以的,只要你有足夠的時間,只要你不怕進度太慢被PM打死,都是OK的.哈哈!
所以說,本系列的重點不在於熱更新技術本身,而是在於如何用最小的成本,賦予一個中規中矩的iOS App的資源部分,以熱更新的能力!好吧,略顯繞口,意會!事實也是如此!
作為資源熱更新之外的附加收穫,你的App資源文件體積,應該也可以縮小 2/3 左右,當然,也再也不用為了一個圖片素材升級App了.另外,本系列所指的資源,也包括內置的js,css文件,通常是用來加速H5頁面網路訪問的,大家都懂的,不細說了,原理都差不多.
此系列文章規劃
系列,爭取本周內更新完畢,在不是很側重的地方,會適當縮減篇幅.
實現iOS圖片等資源文件的熱更新化(一): 從Images.xcassets導出合適的圖片
此文會基於一個已有的腳本工具自動導出所有的圖片;最終給出的是一個從 Images.xcassets 到基於文件夾的精簡 合適 的圖片資源集的完整過程.難點在於從完整圖片集到精簡圖片集,肯定是基於一個定製化的腳本,自定義導出的.如果自己手動導出?那,還有的忙嘍~
實現iOS圖片等資源文件的熱更新化(二):自定義的動態 imageNamed
這篇文章,要解決的是,使用一個自定義的 imageNamed 函數來替代系統的 imageNamed 函數.內部邏輯,將貫穿對比論證 關於"合適"的圖片的定義.對iOS載入圖片的規則不是很熟悉的童鞋,可以著重看這篇.
實現iOS圖片等資源文件的熱更新化(三):動態的資源文件夾
此文,將嘗試動態從某個不確定的文件夾中載入資源文件.文章,會繼續完善自定義的 imageNamed 函數,併為下一篇文章鋪墊.
實現iOS圖片等資源文件的熱更新化(四): 一個最小化的補丁更新邏輯.
以前寫過一個補丁更新的文章,此處會做一個更精簡的最小化實現,以便於集成.為了使邏輯具有通用性,將剝離對AFNetworking和ReativeCocoa的依賴.原來的文章,可以先看這裡: http://www.ios122.com/2015/12/jspatconline/
實現iOS圖片等資源文件的熱更新化(五): 一個簡單完整的資源熱更新頁面
一個簡單的關於頁面,有一個圖片,版本號,App名稱等,著重演示各個系列的文章完整集成示例.有耐心的,可以直接等著最後一篇文章更新.我還沒寫好呢,沒法提前發. O(∩_∩)O哈哈~
系列專屬github地址: https://github.com/ios122/ios_assets_hot_update