簡體   English   中英

如何解決 Android 支持庫和 AndroidX 之間的沖突?

[英]How to resolve conflict between Android support library and AndroidX?

我是一個統一開發人員,為了解決沖突,我嘗試將我的項目導出到 android studio。

我同時使用 firebase 和 vungle 庫。 firebase 依賴於 androix-core 而 vungle 依賴於 support-compat。 如果我編譯它們,我會收到編譯錯誤:

Duplicate class android.support.v4.app.INotificationSideChannel found in modules classes.jar (:androidx.core.core-1.0.0:) and support-compat-27.1.1.jar (support-compat-27.1.1.jar)

如果我評論其中之一,我會在游戲開始時收到運行時錯誤。 我真的能做什么?

謝謝

此處給出的答案指出,最好的方法是堅持使用 AndroidX 作為替代 Android 支持的新庫,但是在 gradle.properties 中使用 androidx 僅意味着您的項目將使用 AndroidX 但如果您的類超過項目仍在導入 Android 支持庫時會彈出相同的錯誤。

如果您訪問此處的 vungle 支持站點,則會有一節討論 AndroidX 兼容性並說:

AndroidX 兼容性 Vungle Android SDK 6.4.11 或更早版本不正式支持 AndroidX。 發布者必須使用 Android Studio 中提供的遷移工具來轉換 SDK 及其依賴項(第三方庫)以兼容 AndroidX。 AndroidX 的官方支持將在目前處於早期訪問階段的 6.5.0 中提供,該版本不需要任何進一步的轉換即可兼容 AndroidX。 如果您需要,請通過您的客戶經理聯系以提前訪問 6.5.0。

因此,您需要將您的 vungle 庫導入 Android Studio 並按照指南(指南)將整個項目遷移到 AndroidX,然后編譯該庫並在您的 Unity 項目中使用它。 但是,我必須警告您,這很棘手,有時 Android Studio 的遷移工具不會更改 Android Support 的所有用例,甚至有時不會將它們更新為當前的 AndroidX 類,您可能必須瀏覽庫的每個文件,更改對 AndroidX 的每個 android 支持引用,這可能需要幾天時間,具體取決於庫的大小。

或者,這是一個很大的或者,您必須等待與 AndroidX 兼容的 Vungle Android SDK 6.5.0。

PD:正如 Vungle 支持站點所述,您還可以獲得 Vungle 6.5.0 的當前早期訪問 SDK,但這可能包含錯誤,因為它仍在開發中。

Vungle SDK 從 6.5 開始支持 androidx,現在處於搶先體驗階段。如果您想使用 6.4.11,最好使用 Android Studio Gradle 工具進行遷移,如其他答案所述。 那么這個問題應該在 SDK 6.4.11 中得到解決。 以防萬一,有人不想導出 Android Studio 項目而仍想使用 SDK 6.4.11。 您可以按照此處的文檔沒有 Android Studio 的情況下自行遷移 Vungle SDK。 你需要做的是:

  1. 下載jetifier並解壓
  2. 使用終端和 cd 到文件夾(mac)
  3. 下載SDK 6.4.11並將 SDK 6.4.11 jar/aar 拖到文件夾 jetifier-standalone/bin

最后一步運行以下命令:

./jetifier-standalone -i publisher-sdk-android-6.4.11.aar -o publisher-sdk-android-6.4.11-androidx.aar

或者

./jetifier-standalone -i vungle-android-sdk-6.4.11.jar -o vungle-android-sdk-6.4.11-androidx.jar
./jetifier-standalone -i vng-moat-mobile-app-kit-2.5.1.jar -o vng-moat-mobile-app-kit-2.5.1-androidx.jar

如果使用jar文件集成,請務必轉換兩個lib。

請使用JD-GUI檢查 jar/aar 並確保遷移已完成。 我遇到了一次失敗遷移,沒有任何錯誤。 所以檢查它會很棒。 您可以檢查以下文件: 在此處輸入圖片說明 在此處輸入圖片說明

最后,如果您不想自己做,請隨時從我的保管箱下載遷移的aar文件。 我相信它會在一段時間內可用。 如果有人需要罐子,請告訴我。

將這些添加到您的 gradle 屬性中,然后單擊 android studio 中的文件無效緩存重新啟動您的工作室

android.useAndroidX=true
android.enableJetifier=true

你可以試試

Refactor -> Migrate to AndroidX...

然后重建項目

嘗試這個

Refactor -> Migrate to AndroidX
and rebuild the project after that

或在 gradle-Module-app 中替換

 'com.android.support:appcompat-v7:28.+'
 'com.android.support.constraint:constraint-layout:1.0.2'

'androidx.appcompat:appcompat:1.1.0'
'androidx.constraintlayout:constraintlayout:1.1.3'

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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