iOS模組化灰度 A BTest

2021-08-19 18:07:24 字數 1580 閱讀 4095

to 技術:

新功能模組級別的 灰度發布.

線上版本回退老版本的能力.

支援多個版本並行開發.

to 業務方:

不同地區 執行不同版本的業務**.

某些地區先試點,時機成熟後 線上動態擴大/縮小試點範圍.

不同地區 不同市場策略 業務邏輯的實現.

新舊版本a/b test.

預埋節假日模組,指定節假日不用發版 即可執行節假日模式.

第一階段:

將業務**拆分到pods中,不同版本的業務**打包成不同的pods.

接入服務端配置中心後,可以在服務端控制native使用者使用的業務版本.

第二階段:

將第一階段業務**拆分為不同的元件,僅對需要灰度的模組進行多版本的預埋.

手動配置指令碼化.

包內預埋多個版本的模組 包大小增加.

部分步驟目前需要手工配置xcode.

這裡我們封裝為.framework形式的動態庫.

封裝過程

編譯時如果遇到找不到標頭檔案,請檢查wxpay.framework中的module.modulemap 是否包含下圖中的標頭檔案.

或者 在 module.modulemap中指定的umbrella header檔案wxpay.h中 引入需要暴漏的標頭檔案 如下圖. 也比較推薦這種方式.

比如amap3dmap.framework amapfoundation.framework中沒有包含module.modulemap的三方framework,

編譯時找不到標頭檔案,需要手工/指令碼新增 module.modulemap.

我們這裡可採用在 podfile中新增指令碼的方式 具體見下圖:

由於之前swfit工程通過header bridge標頭檔案去找引入oc**的標頭檔案.改造後引入的庫封裝到pods中 以framework的形式引入工程,

在新增module.modulemap後無需通過header bridge標頭檔案的方式引入標頭檔案.

所以可以在主工程刪除header bridge標頭檔案.

在 build settings > framework search path 中新增 vender framework的路徑

當預置兩個版本業務**pods後,會出現pods安裝不成功.

分析一下 專案結構時 主工程 包含 pods a & pods b.

pods a & pods b包含了同樣的vendor framework.

此時我們可以把pods b中vendor framework中的庫刪掉.

然後在pods b的target > build settings > framework search paths中指向pods a的vendor framework.

達到 主工程 包含 pods a & pods b. pods a & pods b沒有引入兩份相同的vendor framework,而是共用乙份vendor framework.

元件化-動態庫實戰

讓cocoapods static library支援module

xcode 建立.a和framework靜態庫

iOS程式模組化設計

一 模組化設計的概述 模組化設計 block based design 對一定範圍內的不同功能或相同功能的不同效能 不同規格的產品進行功能分析的基礎上,劃分並設計出一系列功能模組,通過模組的選擇和組合構成不同的定製產品,以滿足市場的不同需求。模組化設計是綠色設計方法之一,綠色設計是指 在產品整個生命...

什麼是模組化?模組化的好處

1.高內聚低耦合,有利於團隊作戰,當專案很複雜的時候,將專案劃分為子模組分給不同的人開發,最後再組合在一起,這樣可以降低模組與模組之間的依賴關係體現低耦合,模組又有特定功能體現高內聚。2.可重用,方便維護,模組的特點就是有特定功能,當兩個專案都需要某種功能的時候,我們定義乙個特定的模組來實現該功能,...

什麼是模組化?模組化怎麼實現?

前言 增加印象,留下腳印 忘記還可以翻一翻 奧利給。1,什麼是模組化 公司裡乙個專案是有很多程式設計師一起開發的,例如 多人運動 這個專案 有程式設計師a 程式設計師b 程式設計師c 程式設計師a 寫了 aaa.js 裡面有幾千行 幾萬行 程式設計師b 寫了 bbb.js 裡面有幾千行 幾萬行 程式...