繁体   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