【问题标题】:Unity, Android Studio Export: Error: more than one library with package name 'android.support.v7.appcompat'Unity,Android Studio 导出:错误:多个库的包名称为“android.support.v7.appcompat”
【发布时间】:2017-05-23 14:37:52
【问题描述】:

我正在 Unity 中制作一个非常简单的移动端 F2P 街机游戏 为 facebook、gamesparks、firebase 和 appodeal 添加 SDK 后,我无法构建,出现“方法引用过多:76221;最大值为 65536”错误。

Too many field references: 70613; max is 65536 的解决方案显然是导出一个 ADT 项目,将其导入 Android Studio 并从那里开始。

我按照these instructions 构建,在构建我的Android Studio 项目后,出现与Facebook SDK 相关的错误,类似于此处:Unity exporting android project with Facebook SDK issue

提出的解决方案是将 Unity 项目中的所有 .aar 复制到 Android Studio 项目的文件中,并在 build.gradle 文件中添加引用它们的行,我这样做了。

在完成所有 4 个与 facebook 相关的错误之后,出现了一个新错误:

错误:多个库的包名称为“android.support.v7.appcompat”

A proposed solution for that 是在 Windows 资源管理器中搜索有问题的文件并将其删除,但在我的 Android Studio 项目文件夹中没有该名称。我尝试删除一些名称中带有 appcompat 的 .aar 文件,但我最终恢复到之前的 4 个 facebook 错误

看来我可能有 4 个 facebook 错误或“多个库”错误。

这是我的 build.gradle 文件的样子..

    apply plugin: 'com.android.application'

    android {
        compileSdkVersion 25
        buildToolsVersion "25.0.3"

        defaultConfig {
            applicationId "com.ARTEFICER.fruitfall"
            minSdkVersion 16
            targetSdkVersion 25
        }

        buildTypes {
            release {
                minifyEnabled false
                proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
            }
        }
    }

    dependencies {
        compile(name: 'animated-vector-drawable-23.4.0', ext: 'aar')
        compile(name: 'appcompat-v7-23.4.0', ext: 'aar')
        compile(name: 'cardview-v7-23.4.0', ext: 'aar')
        compile(name: 'customtabs-23.4.0', ext: 'aar')
        compile(name: 'facebook-android-sdk-4.17.0', ext: 'aar')
        compile(name: 'facebook-android-wrapper-7.9.4', ext: 'aar')
        compile(name: 'firebase-app-unity-3.0.3', ext: 'aar')
        compile(name: 'firebase-common-10.2.6', ext: 'aar')
        compile(name: 'firebase-iid-10.2.6', ext: 'aar')
        compile(name: 'firebase-messaging-10.2.6', ext: 'aar')
        compile(name: 'firebase-messaging-unity-3.0.3', ext: 'aar')
        compile(name: 'play-services-ads-10.2.6', ext: 'aar')
        compile(name: 'play-services-ads-lite-10.2.6', ext: 'aar')
        compile(name: 'play-services-base-10.2.6', ext: 'aar')
        compile(name: 'play-services-basement-10.2.6', ext: 'aar')
        compile(name: 'play-services-clearcut-10.2.6', ext: 'aar')
        compile(name: 'play-services-gass-10.2.6', ext: 'aar')
        compile(name: 'play-services-location-10.2.6', ext: 'aar')
        compile(name: 'play-services-tasks-10.2.6', ext: 'aar')
        compile(name: 'support-compat-25.2.0', ext: 'aar')
        compile(name: 'support-core-ui-25.2.0', ext: 'aar')
        compile(name: 'support-core-utils-25.2.0', ext: 'aar')
        compile(name: 'support-fragment-25.2.0', ext: 'aar')
        compile(name: 'support-media-compat-25.2.0', ext: 'aar')
        compile(name: 'support-v4-25.2.0', ext: 'aar')
        compile(name: 'support-vector-drawable-23.4.0', ext: 'aar')
        compile project(':animatedvectordrawable2340')
        compile project(':cardviewv72340')
        compile project(':cheetahmobile')
        compile project(':customtabs2340')
        compile project(':facebookandroidsdk4170')
        compile project(':facebookandroidwrapper794')
        compile project(':firebase')
        compile project(':firebaseappunity303')
        compile project(':firebasecommon1026')
        compile project(':firebaseiid1026')
        compile project(':firebasemessaging1026')
        compile project(':firebasemessagingunity303')
        compile project(':playservicesads1026')
        compile project(':playservicesadslite1026')
        compile project(':playservicesbase1026')
        compile project(':playservicesclearcut1026')
        compile project(':playservicesgass1026')
        compile project(':playserviceslocation1026')
        compile project(':playservicestasks1026')
        compile project(':supportcompat2520')
        compile project(':supportcoreui2520')
        compile project(':supportcoreutils2520')
        compile project(':supportfragment2520')
        compile project(':supportmediacompat2520')
        compile project(':supportv42520')
        compile project(':supportvectordrawable2340')
        compile 'com.google.android.gms:play-services:+'
        compile 'com.android.support:appcompat-v7:25.3.1'
        compile files('libs/applovin-6.3.0.jar')
        compile files('libs/appodeal-1.15.9.jar')
        compile files('libs/bolts-android-1.4.0.jar')
        compile files('libs/bolts-applinks-1.4.0.jar')
        compile files('libs/bolts-tasks-1.4.0.jar')
        compile files('libs/chartboost-6.6.1.jar')
        compile files('libs/flurry-analytics-6.5.0.jar')
        compile files('libs/libmessaging_unity_player_activity.jar')
        compile files('libs/my-target-4.5.10.jar')
        compile files('libs/support-annotations-25.2.0.jar')
        compile files('libs/unity-ads-2.0.4.jar')
        compile files('libs/unity-classes.jar')
        compile files('libs/yandex-metrica-2.62.jar')
    }

    allprojects {
       repositories {
          jcenter()

          flatDir {
            dirs 'libs'
          }
       }
    }

我试过注释掉这些行。

compile 'com.android.support:appcompat-v7:25.3.1'

compile project(':supportcompat2520')

compile(name: 'support-compat-25.2.0', ext: 'aar')

但我仍然有一个“具有包名称的多个库”错误

另外请注意,我是一名 Unity 开发人员。直到几天前我才打开 Android Studio,所以你肯定需要尽可能地简化操作!

【问题讨论】:

  • 可能你的一些依赖里面有 appcompat 库,所以你应该排除它,或者至少只导入一次
  • 我不太明白你的评论,但如果删除 appcompat-v7-23.4.0.aar 并在 build.gradle 中删除对它的引用,那么我又会再次收到 4 个 facebook 错误
  • 你有两个导入,compile(name: 'appcompat-v7-23.4.0', ext: 'aar') 和 compile 'com.android.support:appcompat-v7:25.3.1' ,我不确定,但这可能是问题所在。你给编译器两次相同的包。
  • 是的,我确实尝试删除上面的那 3 行(包括您刚才提到的那一行),但没有任何区别,仍然出现“多个具有包名称的库”错误。如果我删除这个 compile(name: 'appcompat-v7-23.4.0', ext: 'aar'),那么我又回到了 4 个 facebook 错误

标签: android facebook firebase unity3d appodeal


【解决方案1】:

ADT 已弃用。最新版本的 Unity 支持 gradle。生成 Android 项目时,使用 Gradle(New) 选项构建并使用 Android Studio 打开项目。不要使用 ADT(Legacy) 选项构建。这将为您生成正确的文件,并且可能会解决您遇到的错误或减少错误。

【讨论】:

  • 我试过了。它不会建立......我会再试一次并尽快发布细节
【解决方案2】:

我还没有解决这个问题。但我 绕过了它。

  1. Appodeal 有另一个 SDK 包,方法更少

  2. 我删除了这个 appodeal SDK 的部分内容。他们为他们使用的每个广告提供商都有库。我将从已删除其库的广告提供商处取消注册。

通过这种方式,我可以得到低于 65536 的方法,所以我可以从 Unity 正常构建。

ps。即使我能够让这个导出工作,我也会把它留在一个分支中,完成其他所有事情,然后在我要发布时将它合并到最后。以这种方式构建是站不住脚的,因为某些东西(比如 facebook)只能在设备上运行,所以我通常会构建到设备上,比如说每小时一次。

【讨论】:

  • 这不是一个真正的答案,因为这个问题的标题是关于在导出项目并尝试打开项目时出错。如果这是关于引用错误的问题,那么它是duplicate
  • 你一直做得很好,跟着我四处走动,毫无意义地阻碍我的努力,没有提供任何帮助。做得好。成就今天的样子。
猜你喜欢
  • 2018-12-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-23
  • 1970-01-01
相关资源
最近更新 更多