一、背景
高德 App 經過多年的發展,其代碼量已達到數百萬行級別,支撐了高德地圖複雜的業務功能。但與此同時,隨着團隊的擴張和業務的複雜化,越來越碎片化的代碼以及代碼之間複雜的依賴關係帶來諸多維護性問題,較爲突出的問題包括:
- 不敢輕易修改或下線對外暴露的接口或組件,因爲不知道有什麼地方對自己有依賴、會受到影響,於是代碼變得臃腫,包大小也變得越來越大;
- 模塊在沒有變動的情況下,發佈到新版本的客戶端時,需要全量回歸測試整個功能,因爲不知道所依賴的模塊是否有變動;
- 難以判斷 Native 從業務實現轉變爲底層支撐的趨勢是否合理,治理是否有效;
這些問題已經達到了我們必須開始治理的程度了,而解決此類問題的關鍵在於需要了解代碼間的依賴關係。
二、高德 APP 平臺架構
爲了消除一些疑惑,在討論依賴分析的實現前,先簡單說明一下高德 APP 的平臺架構,以便