我是一个统一的开发人员,为了解决冲突,请尝试将我的项目导出到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)
如果我评论其中之一,则在游戏开始时会收到运行时错误。我到底能做什么?
谢谢
答案 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 。 您需要做的是:
最后一步运行以下命令:
./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,并确保已完成迁移。我遇到了一次失败迁移,没有任何错误。因此,进行检查非常好。 您可以检查以下文件:
最后,如果您不想自己做,请随时从我的保管箱下载已迁移的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'