[英]Guava in Android dynamic feature module
我有一個依賴於 com.google.guava:guava:30.1.1-android 的 com.google.http-client:google-http-client-gson:1.40.1 的動態功能模塊。 我的基本模塊使用了幾個 Androidx 庫,它們傳遞地依賴於 com.google.guava:listenablefuture:1.0
為項目構建 Relase Bundle 時,出現以下錯誤
R8:類型 com.google.common.util.concurrent.ListenableFuture 定義了多次:/home/michael/MyExpenses/myExpenses/build/intermediates/module_and_runtime_deps_classes/playWithAdsInternRelease/base.Z68995FCBF432492D1548:com/googleAcommon/4currentZ8:com/googleA/4con ListenableFuture.class, /home/michael/MyExpenses/drive/build/intermediates/module_and_runtime_deps_classes/playRelease/feature-drive.jar:com/google/common/util/concurrent/ListenableFuture.class
我可以通過在基本模塊 build.gradle 中提供以下內容來使構建通過
implementation "com.google.guava:listenablefuture:9999.0-empty-to-avoid-conflict-with-guava"
但不確定這是否是正確的解決方案。 我的假設是,當未加載動態功能模塊時,應用程序將找不到 com.google.common.util.concurrent.ListenableFuture 類型的任何實現,並且可能會崩潰。 由於我不知道在哪里需要這種類型,所以我不確定如何測試這個假設。
我可以將功能模塊定義為安裝時,並且不允許任何卸載,但這當然超出了動態功能模塊的目的。
關於如何測試,如何解決的任何建議?
經過一番思考,我決定在基礎模塊中添加對 Guava 的依賴:
implementation "com.google.guava:guava:30.1.1-android"
我一開始猶豫不決的原因是擔心增加基礎 apk 大小。 但是,R8 刪除任何未使用的代碼似乎並非如此。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.