1.導讀
關于應用的主題定制,相信大家或多或少都有接觸,基本上,實作思路可以分為兩類:
- 內置主題(應用內自定義style)
- 外部加載方式(資源apk形式、壓縮資源、插件等)
其實,針對不同的主題定制實作思路,沒有絕對的好壞,每種實作方案都有其利弊,重要的是如何去權衡、選擇,根據實際的專案需求,痛點,制定一個符合實際專案需求,能夠解決主題定制程序中痛點的方案才是好的方案,
由于我和團隊一直是做車載導航應用開發,面向的物件是客戶,不同的客戶對于應用的UI或者主題是有不同需求的,也就是說針對不同客戶,不同渠道的版本,需要有不同的應用主題,
隨著專案的增多,如果沒有一個靈活,易管理,低成本的主題定制方案,那么實作將變得非常困難,
2.過去主題定制的實作方案
針對需要定制的UI,研發增加對應的自定義主題控制元件;
布局由這些自定義主題控制元件搭建而成;
UED修改對應主題控制元件xml中對應的色值實作主題的定制;
研發集成UED配置的檔案,實作主題定制;
研發出包,UED進行主題定制還原度驗證,
基本思路就是界面中需要主題定制的UI,通過自定義主題控制元件實作,而自定義主題控制元件可以通過替換布局xml的方式實作主題色值等的替換,從而實作主題定制,但這種方案的缺點非常明顯:

成本高:主題定制需要UED手動去修改xml,但一般UED對于xml格式內容不是很了解,這樣無疑學習及修改成本都非常高,其次也容易產生錯誤的修改,導致穩定性很差;
效率低:主題定制需要UED修改完xml后,發給研發,然后由研發替換xml,流程多,效率低;
維護難:之前的主題定制,沒有統一的東西管理,主題對于UED來說就是一堆的xml檔案,很難進行維護;
復用性差:由于主題定制是通過xml,如果主題控制元件修改了,xml也就跟著修改,主題的復用就很難實作,
3.新方案的設計與實作

從上圖中我們可以看出在主題定制的整個程序中,UED參與了大部分的流程,只有在主題集成的時候,研發需要參與,其實說到底,UED才是主題定制的Owner,對于主題定制最理想的狀態是研發提供一定的工具平臺,UED設計完主題后,可以直接集成到應用內驗證回歸,中間無需研發干預處理,整個主題定制流程都由UED走完,
3.1 方案要素
基于UED參與就能完成主題定制的理念,同時考慮專案對于主題定制的需求,在新主題定制方案的設計中,應當圍繞核心角色,服務好核心角色,以最大限度降低核心角色的成本,提高整個定制程序的效率,同時兼顧專案核心需求為目標來設計、搭建新方案,以下是方案中應該關注的角色及要解決的關鍵問題:
- 主題定制主角:UED
- UED、UI設計工具:Sketch
- 專案需求:
1. 不同專案的不同渠道有不同的主題定制需求
2. 出包時就有對應主題,無需下載
3. 專案周期短,需要能快速定制
4. 專案需要維護,主題也需要方便維護、管理

3.2 方案雛形
基于以上分析,主題定制的大體流程,方案如下:
- 首先,方案應當圍繞著UED建設,由于UED是基于Sketch進行UI界面設計,因此如果主題定制也能基于Sketch,UED就能很方便的基于Sketch設計UI的同時也設計主題;
- 同時,不同的渠道會有不同的主題定制,并且需要快速定制,方便管理、維護,同時出包時就需內置主題,因此需要有一個主題管理平臺能管理,維護主題資源,并且支持主題復制,使得主題資源能基于現有專案的主題進行少量修改,就能形成一個新的主題;
- 接著,需要在Jenkins打包時,能根據不同的渠道打包不同的主題資源到apk中;
- 最后,需要將打包好的apk快速安裝到真機上進行還原度驗收,
最終主題定制方案也就基本成型,基于Sketch的UI主題定制方案:

4.方案詳解
基于Sketch的UI主題定制,主要分成四大步驟:
UED在Sketch中制作主題資源及上傳云端(主題制作)
UED在WEB主題平臺管理主題資源(主題管理)
Jenkins拉取主題資源打包到應用(主題集成)
真機預覽效果(主題驗證)
以上流程主要針對主分支,第一次界面開發,針對后續不同專案的主題定制,只需要在WEB平臺中copy主題資源,然后進行對應的主題修改,即可快速定制出一套對應的主題出來,
以下詳細介紹主要關鍵步驟:
4.1 主題資源制作
主題資源制作一般在界面設計前就需要提前設計好,UED在Sketch中將主題控制元件設計好之后,我們提供了一個快捷的主題輸入界面,方便UED能快速編輯對應控制元件的主題屬性,并一鍵上傳到云端,如下所示,在Sketch中進行主題控制元件制作:

4.2 WEB主題平臺管理主題資源
WEB主題平臺,保存了專案中所有可定制的主題資源,包含主題控制元件、插畫、iconfont、文字大小等,在這里可以快速基于母版主題,copy出新的主題資源,然后進行個性化定制,或者基于其他專案快速copy,主題的定制不再是繁瑣、耗時的操作,而變成了直觀、易操作,
4.3 真機預覽
在WEB主題平臺編輯完主題資源后,通過Jenkins或服務器將主題資源打包到apk中,最后通過車機設備集群管理平臺,將apk安裝到不同的真機上,實作真機預覽主題定制效果,UED可快速回歸還原度,發現問題,并快速在主題平臺上修復,

5.方案對比
針對業內幾種比較常用的主題定制方案與基于Sketch的UI主題定制方案進行了幾個方面的對比:

以上三個方案的對比:
內置主題:優點在于實作簡單、配置方便,缺點是主題定制不靈活,
外部加載方案(apk):優點在于擴展性很高,但由于該方案需要在代碼中設定所有的可變資源,軟體實作周期較長,寫代碼時容易出錯,而且第一版耗時較長,一旦界面布局改變,需要較長的時間進行代碼的撰寫,
基于Sketch的UI主題定制方案,它的優勢在于:
- 基于UED的UI設計工具Sketch,能在設計UI的時候,同時設計主題資源,并且能快捷的預覽主題資源在整體界面上的顯示效果;
- 可以通過Sketch插件的能力,快速將主題資源上傳到后臺,方便主題資源的統一管理及維護;
- 在后臺配置修改完主題資源還能回流Sketch中進行查看,
這個方案的最大優勢在于與UED的UI設計工具Sketch無縫的銜接在一起,極大的提高了主題的制作效率及成本,使得UED能夠獨立完成主題資源制作、管理、集成、應用、驗證,形成一個主題小倍訓,

6.小結
該方案的特點在于與Sketch很好的結合在一起,通過插件的能力,無縫的與云端進行資源相互同步,能力的實作主要通過WEB主題平臺進行主題的管理、編輯,實作主題的快速復制,方便修改,然后再通過Jenkins的打包能力,實作主題的快速應用,最終實作UI主題定制,
能力建設完成后,以上的每個環節,只需要UED參與就能完成不同專案的主題定制,極大減少了UED及研發的成本,大大提高了效率,同時在定制能力上,從只能定制顏色、圓角、大小等,到能支持插畫、iconfont定制,以及其他各項拓展定制能力等,

關注高德技術,找到更多出行技術領域專業內容
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/67670.html
標籤:其他
上一篇:AB實驗人群定向HTE模型1 - Causal Tree
下一篇:知識圖譜簡介及常見應用場景
