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

时间:2019-12-11 14:22:36

标签: android android-studio 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)

如果我评论其中之一,则在游戏开始时会收到运行时错误。我到底能做什么?

谢谢

5 个答案:

答案 0 :(得分:1)

here给出的答案指出,最好的方法是坚持使用AndroidX,就像用新库代替Android支持一样,但是在gradle.properties中使用androidx仅意味着您的项目将使用AndroidX但是如果您在该项目上的课程仍在导入Android支持库,则会弹出相同的错误。

如果您访问vungle支持网站here,则有一节讨论了AndroidX的兼容性,并说:

  

AndroidX兼容性   Vungle Android SDK 6.4.11或更早版本不正式支持AndroidX。发布者必须使用Android Studio提供的迁移工具来转换SDK及其依赖关系(第三方库),以实现AndroidX兼容性。对AndroidX的正式支持将在6.5.0(目前处于早期访问阶段)中提供,并且该版本不需要任何进一步的转换即可与AndroidX兼容。如果需要,请通过客户经理与您联系,以尽早访问6.5.0。

因此,您需要将vungle库导入Android Studio并遵循指南(this one),将整个项目迁移到AndroidX,然后编译该库并在Unity项目上使用它。但是,我必须警告您,这很棘手,有时Android Studio的迁移工具不会更改Android支持的所有用例,甚至有时也不能将其更新为当前的AndroidX类,因此您可能必须遍历库中的每个文件,将每个android支持参考都更改为AndroidX,这可能需要几天的时间,具体取决于库的大小。

或者,这很大,或者,您必须等待与AndroidX兼容的Vungle Android SDK 6.5.0。

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

答案 1 :(得分:1)

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

android.useAndroidX=true
android.enableJetifier=true

答案 2 :(得分:1)

Vungle SDK从6.5开始支持androidx,并且现在处于早期访问状态。如果您想使用6.4.11,那么使用Android Studio Gradle工具进行迁移将是很棒的选择。然后应使用SDK 6.4.11解决该问题。 但是以防万一,有人不想导出Android Studio项目,但仍然想使用SDK 6.4.11。您可以按照文档here自行迁移Vungle SDK,而无需使用Android Studio 。 您需要做的是:

  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

OR

./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,并确保已完成迁移。我遇到了一次失败迁移,没有任何错误。因此,进行检查非常好。 您可以检查以下文件: enter image description here enter image description here

最后,如果您不想自己做,请随时从我的保管箱下载已迁移的aar文件。我相信它可以用于而。 请让我知道是否有人需要罐子。

答案 3 :(得分:0)

您可以尝试

Refactor -> Migrate to AndroidX...

然后重建项目

答案 4 :(得分:0)

试试这个

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

OR 在 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'