實現iOS圖片等資源文件的熱更新化(零): 序

来源:http://www.cnblogs.com/ios122/archive/2016/09/13/5867444.html
-Advertisement-
Play Games

所以說,本系列的重點不在於熱更新技術本身,而是在於如何用最小的成本,賦予一個中規中矩的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


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • application不能運行,console顯示 The connection to adb is down, and a severe error has occured. You must restart adb and Eclipse. Please ensure that adb is c ...
  • iOS Swift 簡單值(The Swift Programming Language) ___ 常量的聲明:let 在不指定類型的情況下聲明的類型和所初始化的類型相同. 在制定類型的情況下聲明的類型要和初始化的類型相同,否則報錯. 變數的聲明:var 在使用變數的時候要謹記: 1.不要聲明並賦值 ...
  • iOS Swift HelloWord 按部就班選擇Swif開發語言,輸出HelloWord. override func viewDidLoad() { super.viewDidLoad() print("HelloWord"); } Swift學習從此開始... ...
  • iOS 字典與JSON相互轉換 ___ 首先簡單說一下為什麼會寫這種幼稚的文章. 現在的網路請求幾乎都是AFN完成的,AFN也為我們寫了了JSON轉換字典的方法,但是不要忘記後臺是一個很愛用JSON的人群,H5也是... 因此很多時候他們給我們的參數都是JSON,因此在這裡簡單介紹一下字典與JSON ...
  • iOS 常用三方類庫整理 ___ 1:基於響應式編程思想的oc 地址:https://github.com/ReactiveCocoa/ReactiveCocoa 2:hud提示框 地址:https://github.com/jdg/MBProgressHUD 3:XML/HTML解析 地址:htt ...
  • iOS 限制TextField輸入長度(標準) ___ 網上有很多限制textField輸入長度方法,但是我覺得都不是很完美,準確來說可以說是不符合實際開發的要求,因此在這裡整理一下textField限制輸入長度的方法. 我所採用的並不是監聽方法而是最不同的代理實現方法,為什麼不使用監聽呢??? 當 ...
  • App Store: 編程詞典 - Swift version 1. 語法更新至Swift 3.0 2. 加入重置內容功能(老用戶可用此功能更新內容) 3. 支持iOS 10 App Store: 編程詞典 - Swift version ...
  • 1.關閉發送成功的提示 只要在分享的時候調用一下代碼即可: [UMSocialConfig setFinishToastIsHidden:YES position:UMSocialiToastPositionCenter]; 2.自定義提示 //如果點擊返回app會調用這個方法 - (void)di ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...