假設我有這樣的 gradle mudule 結構:module1 => module2 => gson。Module2 在其公共介面的方法之一中將 gson 作為回傳型別公開,但它從未在 module1 中使用。使用提供依賴項
執行
配置。問題是我應該為 module1 提供 gson 依賴項,因為它沒有在那里使用嗎?這有什么標準嗎?我問是因為在 kotlin 1.6.10 中它作業正常,但 kotlin 1.7.20 似乎破壞了它,并且在 dagger2 處理步驟中我收到如下錯誤:
ComponentProcessingStep 無法處理“module1.MyComponent”,因為“Gson”無法決議。
uj5u.com熱心網友回復:
這就是apigradle 中的(而不是實作)依賴項。只需替換implementation("gson:...")為api("gson:...")
見https://docs.gradle.org/current/userguide/java_library_plugin.html#sec:java_library_separation
那么什么時候應該使用api配置呢?API 依賴項包含至少一種在庫二進制介面中公開的型別,通常稱為其 ABI(應用程式二進制介面)。這包括但不限于:
- 超類或介面中使用的型別
- 公共方法引數中使用的型別,包括泛型引數型別(其中公共是編譯器可見的東西。即,Java 世界中的公共、受保護和包私有成員)
- ...
后者是您的用例。
至于為什么 dagger 在 1.6 沒有報錯,我不知道,反正 1.6 也是錯的,你只是很幸運沒有絆倒它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/521315.html
標籤:科特林毕业典礼匕首-2
上一篇:如何將“Android開源專案應用”轉換為GradleAndroidStudio?
下一篇:如何定義Gradle任務
