如何解决 Android 支持库和 AndroidX 之间的冲突?

How to resolve conflict between Android support library and AndroidX?

我是一名统一开发人员,为了解决冲突尝试将我的项目导出到 android 工作室。

我同时使用 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 支持的新库,但是使用 [=30= gradle.properties 中的 ]x 仅表示您的项目将使用 AndroidX,但如果您的 类 项目仍在导入 Android 支持库,则会出现相同的错误弹出。

如果你去 vungle 支持网站 here,有一个部分讨论 AndroidX 兼容性并说:

AndroidX Compatibility Vungle Android SDK 6.4.11 or earlier versions do not officially support AndroidX. Publishers must use migration tool that is available from Android Studio to transform the SDK and its dependencies (third-party libraries) for AndroidX compatibility. The official support for AndroidX will be available with 6.5.0 which is currently in early access stage, and that version would not need any further transformation to be AndroidX compatible. Please reach out through your Account Manager for early access to 6.5.0 if you needed.

因此,您需要将您的 vungle 库导入 Android Studio 并按照指南 (this one),将整个项目迁移到 AndroidX,然后编译库并在您的 Unity 项目中使用它。但是,我必须警告您这很棘手,有时 Android Studio 的迁移工具不会更改 Android 支持的所有用例,甚至有时不会将它们更新到当前AndroidX 类,并且您可能必须检查库中的每个文件,更改每个 android 对 AndroidX 的支持引用,这可能需要几天时间,具体取决于图书馆有多大。

OR,这是一个很大的 or,您必须等待与 AndroidX 兼容的 Vungle Android SDK 6.5.0。

PD:如 Vungle 支持网站所述,您还可以获得 Vungle 6.5.0 的当前早期访问 SDK,但它可能包含错误,因为它仍在开发中。

将这些添加到您的 gradle 属性中,然后单击 android studio 中的文件使缓存无效重新启动您的工作室

android.useAndroidX=true
android.enableJetifier=true

你可以试试

Refactor -> Migrate to AndroidX...

然后重建项目

Vungle SDK 从 6.5 开始支持 androidx,并且处于抢先体验阶段 now.If 您想使用 6.4.11,使用 Android Studio Gradle 工具会很棒按照提到的其他答案进行迁移。那么这个问题应该用 SDK 6.4.11 来解决。 但是以防万一有人不想导出Android Studio 项目而仍想使用SDK 6.4.11。 您可以按照文档here 进行迁移没有 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文件集成,请务必转换两个库

请使用JD-GUI检查jar/aar并确保迁移已完成。我曾经遇到过一次没有任何错误的失败迁移。所以检查它会很棒。 您可以检查以下文件:

最后,如果您不想自己做,请随时从我的保管箱下载迁移后的aar文件。我确定将可用一段时间。 如果有人需要罐子,请告诉我。

试试这个

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'