簡體   English   中英

Android動態特性模塊中的番石榴

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM