我目前正在開發一款可在Android平臺上使用的SDK。Android和iOS:如何在構建SDK時處理依賴關係
對於Android,我們在我們的Gradle文件中列出依賴關係,並使用Maven提供SDK(因此我們的依賴關係在.pom文件中列出)。
對於iOS,我們使用cocoapods來處理dependendies。
的問題如下: *我們的SDK使用版本依賴X *我們的一個客戶可能會使用相同的依賴,但在版本Ÿ *另一個客戶也可以使用在版本的Z
完全相同的依賴所以,這導致我們的SDK可能正在對我們的客戶的一個壞了(如果不是兩個),因爲我們要確保它與依賴X,而不是Y和Z.
現在,遺留代碼有簡單地導入導致這個問題的庫的源代碼並命名它,這樣它模擬我們不使用相同的庫。
但在我看來,這不是一個適當的解決方案:我們沒有最新修復程序,更新很痛苦,客戶端有兩次庫而不是一次。所以,現在,我試圖想一個潛在的好解決方案,但無法找到我想要的谷歌(也許我不使用正確的關鍵字:/)。
我在想的是爲每個依賴關係提供一系列版本的支持。有點像「如果這個方法在這裏,執行它,否則,使用以前版本的方法」(比如iOS上的選擇器respondTo)。然後,客戶端應該能夠在支持的範圍內使用任何版本的依賴項。
但是,我不知道這是否正確? 還有其他解決方案嗎?
謝謝:)
我不認爲你正在努力實現的是可能的。即使您將「代碼」更改爲獨立於版本的版本,您的庫仍然需要提及其依賴的其他庫。如果你沒有指定一個版本,則會假定最新版本(至少在cocoapods中)。您不能在依賴項下提及同一個庫的多個版本。除非明確創建要同時使用的版本。 – lukya
然而,你可以做什麼,是使**基礎sdk **的多個版本,唯一的區別是「依賴」版本。正如您所說的,您可以更改**基本代碼**以支持您打算爲其創建單獨版本的所有依賴項版本。然後,你的sdk的各個版本之間的唯一區別就是pom/pod文件提到特定版本的依賴關係。您將不得不維護您的客戶端的所有依賴版本組合的矩陣,以選擇您的sdk的正確版本。 – lukya
通過上述方法,客戶端仍然不能按照您的計劃使用您的sdk的單一版本,但可以簡單**選擇**支持客戶端代碼中其他依賴項版本的**版本。由於您的sdk是通過maven/cocoapods添加的,所以sdk的更改版本只是客戶端的依賴配置文件(pom/pod)中的一個數字更改。它不理想,但我認爲它接近。 – lukya