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