【问题标题】:Unity3d Admob integration breaks Android Build: "D8: Program type already present: android.support.customtabs.ICustomTabsCallback"Unity3d Admob 集成中断了 Android 构建:“D8:程序类型已经存在:android.support.customtabs.ICustomTabsCallback”
【发布时间】:2019-11-11 14:13:23
【问题描述】:

我正在开发一款 Android 游戏,一周以来,我已尽我所能通过中介实现 AdMob。它在编辑器中工作正常,但是当我构建时,它会抛出下面提到的错误。我确实尝试过实现多个其他插件并且它们构建成功,但在启动时崩溃(也尝试在新项目中仅使用它们的示例应用实现)。

经过大量挖掘,我假设 Facebook 需要一些 Admob 需要的 aar,但不能使用它的最新版本(我也尝试了最新的 FB SDK 版本,但无济于事)。以下是我注意到的一些事情:

  1. 请注意此处存在 CustomTabs。我尝试删除这些类,但随后构建失败并出现另一个错误

    发现了一些冲突的依赖项。 修改了以下依赖版本: com.android.support:appcompat-v7:25.3.1 --> com.android.support:appcompat-v7:27.0.2@aar com.android.support:cardview-v7:25.3.1 --> com.android.support:cardview-v7:27.0.2@aar com.android.support:customtabs:25.3.1 --> com.android.support:customtabs:27.0.2@aar com.android.support:support-v4:25.3.1 --> com.android.support:support-v4:27.0.2@aar

  2. 这是 ProjectSettings 目录中的 AndroidResolverDependencies.xml 文件。

    com.android.support:appcompat-v7:25.3.1 com.android.support:cardview-v7:25.3.1 com.android.support:customtabs:25.3.1 com.android.support:support-v4:25.3.1 com.facebook.android:facebook-core:[5,6) com.facebook.android:facebook-login:[5,6) com.facebook.android:facebook-share:[5,6) com.google.ads.mediation:unity:3.1.0.0 com.google.android.gms:play-services-ads:18.0.0 com.parse.bolts:bolts-android:1.4.0 com.unity3d.ads:unity-ads:3.1.0 资产/插件/Android/android.arch.core.common-1.0.0.jar 资产/插件/Android/android.arch.lifecycle.common-1.0.3.jar 资产/插件/Android/android.arch.lifecycle.runtime-1.0.3.aar 资产/插件/Android/androidx.annotation.annotation-1.0.0.jar 资产/插件/Android/androidx.arch.core.core-common-2.0.0.jar 资产/插件/Android/androidx.arch.core.core-runtime-2.0.0.aar 资产/插件/Android/androidx.asynclayoutinflater.asynclayoutinflater-1.0.0.aar 资产/插件/Android/androidx.browser.browser-1.0.0.aar 资产/插件/Android/androidx.collection.collection-1.0.0.jar 资产/插件/Android/androidx.coordinatorlayout.coordinatorlayout-1.0.0.aar 资产/插件/Android/androidx.core.core-1.0.0.aar 资产/插件/Android/androidx.cursoradapter.cursoradapter-1.0.0.aar 资产/插件/Android/androidx.customview.customview-1.0.0.aar 资产/插件/Android/androidx.documentfile.documentfile-1.0.0.aar 资产/插件/Android/androidx.drawerlayout.drawerlayout-1.0.0.aar 资产/插件/Android/androidx.fragment.fragment-1.0.0.aar 资产/插件/Android/androidx.interpolator.interpolator-1.0.0.aar 资产/插件/Android/androidx.legacy.legacy-support-core-ui-1.0.0.aar 资产/插件/Android/androidx.legacy.legacy-support-core-utils-1.0.0.aar 资产/插件/Android/androidx.lifecycle.lifecycle-common-2.0.0.jar 资产/插件/Android/androidx.lifecycle.lifecycle-livedata-2.0.0.aar 资产/插件/Android/androidx.lifecycle.lifecycle-livedata-core-2.0.0.aar 资产/插件/Android/androidx.lifecycle.lifecycle-runtime-2.0.0.aar 资产/插件/Android/androidx.lifecycle.lifecycle-viewmodel-2.0.0.aar 资产/插件/Android/androidx.loader.loader-1.0.0.aar 资产/插件/Android/androidx.localbroadcastmanager.localbroadcastmanager-1.0.0.aar 资产/插件/Android/androidx.print.print-1.0.0.aar 资产/插件/Android/androidx.slidingpanelayout.slidingpanelayout-1.0.0.aar 资产/插件/Android/androidx.swiperefreshlayout.swiperefreshlayout-1.0.0.aar 资产/插件/Android/androidx.versionedparcelable.versionedparcelable-1.0.0.aar 资产/插件/Android/androidx.viewpager.viewpager-1.0.0.aar 资产/插件/Android/com.android.support.animated-vector-drawable-27.0.2.aar 资产/插件/Android/com.android.support.appcompat-v7-27.0.2.aar 资产/插件/Android/com.android.support.cardview-v7-27.0.2.aar 资产/插件/Android/com.android.support.customtabs-27.0.2.aar 资产/插件/Android/com.android.support.support-annotations-27.0.2.jar 资产/插件/Android/com.android.support.support-compat-27.0.2.aar 资产/插件/Android/com.android.support.support-core-ui-27.0.2.aar 资产/插件/Android/com.android.support.support-core-utils-27.0.2.aar 资产/插件/Android/com.android.support.support-fragment-27.0.2.aar 资产/插件/Android/com.android.support.support-media-compat-27.0.2.aar 资产/插件/Android/com.android.support.support-v4-27.0.2.aar 资产/插件/Android/com.android.support.support-vector-drawable-27.0.2.aar 资产/插件/Android/com.facebook.android.facebook-common-5.1.0.aar 资产/插件/Android/com.facebook.android.facebook-core-5.1.0.aar 资产/插件/Android/com.facebook.android.facebook-login-5.1.0.aar 资产/插件/Android/com.facebook.android.facebook-share-5.1.0.aar 资产/插件/Android/com.google.ads.mediation.unity-3.1.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-ads-18.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-ads-base-18.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-ads-identifier-17.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-ads-lite-18.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-basement-17.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-gass-18.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-measurement-base-17.0.0.aar 资产/插件/Android/com.google.android.gms.play-services-measurement-sdk-api-17.0.0.aar 资产/插件/Android/com.google.zxing.core-3.3.3.jar 资产/插件/Android/com.parse.bolts.bolts-android-1.4.0.jar 资产/插件/Android/com.parse.bolts.bolts-applinks-1.4.0.jar 资产/插件/Android/com.parse.bolts.bolts-tasks-1.4.0.jar 资产/插件/Android/com.unity3d.ads.unity-ads-3.1.0.aar

      <settings>
        <setting name="androidAbis" value="armeabi-v7a,x86" />
        <setting name="bundleId" value="com.pratyaksh.cosmicballs" />
        <setting name="explodeAars" value="True" />
        <setting name="gradleBuildEnabled" value="True" />
        <setting name="gradleTemplateEnabled" value="False" />
        <setting name="installAndroidPackages" value="True" />
        <setting name="packageDir" value="Assets\Plugins\Android" />
        <setting name="patchAndroidManifest" value="True" />
        <setting name="patchMainTemplateGradle" value="True" />
        <setting name="projectExportEnabled" value="False" />
        <setting name="useJetifier" value="False" />
      </settings>
    </dependencies>
    
  3. 错误日志中的较小部分

    CommandInvokationFailure:Gradle 构建失败。 E:\UnityEditor\2019.1.0f2\Editor\Data\PlaybackEngines\AndroidPlayer/Tools\OpenJDK\Windows\bin\java.exe -classpath "E:\UnityEditor\2019.1.0f2\Editor\Data\PlaybackEngines\AndroidPlayer\Tools\ gradle\lib\gradle-launcher-4.6.jar" org.gradle.launcher.GradleMain "-Dorg.gradle.jvmargs=-Xmx4096m" "assembleRelease" 标准错误[ D8:程序类型已经存在:android.support.customtabs.ICustomTabsCallback FAILURE:构建失败并出现异常。

    • 出了什么问题: 任务“:transformDexArchiveWithExternalLibsDexMergerForRelease”执行失败。 com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:

。 . //因堆栈溢出而缩短 . . .

:transformClassesWithDexBuilderForRelease C:\Users\TehBlindNutSack.gradle\caches\transforms-1\files-1.1\facebook-android-wrapper-7.17.0.aar\4bb1132b85935d425bf3b80edd9162a8\jars\classes.jar:D8:未找到接口com.facebook.applinks.AppLinkData$CompletionHandler。需要确保 com.facebook.unity.FB$2 的脱糖是正确的。 Desugaring 将假定此接口没有默认方法。 C:\Users\TehBlindNutSack\.gradle\caches\transforms-1\files-1.1\facebook-android-wrapper-7.17.0.aar\4bb1132b85935d425bf3b80edd9162a8\jars\classes.jar: D8: Typecom.facebook.applinks.AppLinkDatawas not found, it is required for default or static interface methods desugaring ofvoid com.facebook.unity.FB.FetchDeferredAppLinkData(java.lang.String)` :transformDexArchiveWithExternalLibsDexMergerForRelease 失败

拜托,如果有人能帮我把它弄好,这对我来说意味着一个世界。 抱歉格式错误。

编辑:重现步骤: 1.创建一个新的Unity(2019.1.0f2)项目,支持android构建 2.添加FB SDK 3.添加GoogleMobileAds SDK 4. 构建

【问题讨论】:

  • 您是否检查过您要构建的 Android 的 SDK 版本和 sdk 版本之间的兼容性?
  • 我相信我有。但可以肯定的是,我如何检查所有包的 android api 兼容性(如果这是你的意思)。
  • 我猜 Admob 有 'AnidroidManifest.xml' 以及最低和最高版本。看到那个版本后,你需要在 Unity 中查看 Android BuildSettings,有 android sdk 版本设置的菜单,我想你可能已经知道了。确定
  • 谢谢,但我已经尝试过了。您能否确认您是否也发生此错误?重现步骤:1. 创建一个新的 Unity 项目,支持 android 构建,2. 添加 FB SDK,3. 添加 GoogleMobileAds SDK,4. 构建。
  • 好的,我马上试试。您使用哪个 Unity 版本?

标签: android unity3d admob android-support-library


【解决方案1】:

当您使用 GooglePlayResolver 时,您将获得新的 androidx. 文件。这可能与 com.android.support. 文件

冲突

尝试这样做:

Assets -> GooglePlayResolver -> Android Resolver -> Settings -> Set Jetiffier On
Force Resolve.

一定要使用最新的: https://github.com/googlesamples/unity-jar-resolver/releases/tag/v1.2.121

查看此讨论以获取更多信息。 https://github.com/googlesamples/unity-jar-resolver/issues/145

【讨论】:

  • 会尝试的。谢谢
  • Maxim,您的解决方案奏效了。谢谢你。直到我需要阅读文档
【解决方案2】:

我找到了解决方案。有库文件重复,请查看目录并查看库文件,就像我做的那样。应为每个平台设置 Android 和 iOS 库。

  1. 从“https://developers.facebook.com/docs/unity/”下载 SDK

  2. 打开 SDK 目录。有重复。所以为每个平台制作一个库。

  3. 为 iOS 和 Android 设置合适的平台。

它有效,我在 Unity 2019.1.0f2 上进行了测试。 facebookSDK 有编译问题。他们制造了陷阱。

【讨论】:

    【解决方案3】:

    我有一个好消息和一个坏消息。

    坏消息第一:以上解决方案都不适合我。

    好消息:我安装了 2019.1.08f,它抛出了同样的错误,但日志更长。我查看了日志,找到了导致冲突的确切文件:androidx.browser.browser-1.0.0.aar 和 androidx.core.core-1.0.0.aar。 我刚刚进入它们,打开 Classes.jar 并删除了两个 aars jar 中的 Android 目录。

    构建并运行...瞧。 (至少目前如此)。

    如果出现其他问题,将在此处更新。

    感谢 Brian,花时间测试并回答问题。

    【讨论】:

      猜你喜欢
      • 2020-02-22
      • 2019-11-15
      • 1970-01-01
      • 2019-07-13
      • 2018-12-23
      • 1970-01-01
      • 2019-08-30
      • 1970-01-01
      • 2019-01-21
      相关资源
      最近更新 更多