理解AndroidX
剛剛看到自己加的一個Android群里有人問AndroidX,還是Google自己的,竟然沒聽說過,慌的一匹。趕緊去看了下官方文檔和一些博客,對AndroidX有了如下理解
Android X 是 Jetpack 的一個項目,解決了原來support 包在第三方依賴時的問題。
第三方依賴問題具體案例如下:
假如現在工程A,使用了依賴庫b,在b中依賴了support包 appcompat-v7並且該版本為26; 如果我想不做任何修改的在A中使用appcompat-v7,我只使用版本26。
此時A又依賴一個庫c,該庫使用了appcompat-v7的版本為27,這回作為程序員的我們該哭了吧,沒辦法了,還好gradle在引入庫的時候有個exclude 關鍵字,能夠將依賴庫中指定的代碼(或文件)刪除,因此我們在b或者c庫中選中一個exclude 即可。
使用exclude有一個大前提:兩個版本的appcompat-v7接口是相同的(雖然正常情況下確實是相同的)! 做一個假設,假如v26中有個接口api26.api,並且在b中使用了; v27中直接刪除了api26.api(不是標記了@Deprecated,而是直接刪除了接口代碼),加了api27.api,並且c庫中又好巧的使用api27.api,這樣及時通過exclude 成功打包,我們的apk也是運行不成功的。
AndroidX的出現就解決了上述依賴問題,通過嚴格的 語義化版本控制 ,每個版本的庫都是向下兼容的,並且配合gradle 直接在構建時將v26 v27修改為 當前最新的v28,這樣我們就可以無憂無慮的使用最新版的Jetpack庫了。
更多參考
官方文檔