gpt4 book ai didi

Android/Cordova 与 google-play-services 构建依赖关系错误(多个库的包名称为 'com.google.android.gms' )

转载 作者:行者123 更新时间:2023-12-02 03:33:03 24 4
gpt4 key购买 nike

注意:我知道 SO 上有一千个关于此错误的问题,我发誓我已经阅读了所有这些问题,但没有一个解决方案有效。 (下面详细介绍了我多次失败的尝试。)

当我尝试构建适用于 Android 的 cordova 应用程序时,出现以下错误:

:processDebugResources FAILED

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':processDebugResources'.
> Error: more than one library with package name 'com.google.android.gms'
You can temporarily disable this error with android.enforceUniquePackageName=false
However, this is temporary and will be enforced in 1.0

我的问题:如何解决此问题并构建我的应用程序?

背景

从我读过的许多答案中,我知道这几乎肯定是插件添加重复的 Google Play 依赖项的问题。我的应用程序(及其所有插件)运行良好,直到我最近添加了插件: Urban Airship cordova plugin 。这是我当前的插件列表:

cc.fovea.cordova.purchase 4.0.0 "Purchase"
com.xmartlabs.cordova.market 1.1 "Market"
cordova-google-play-services 25.0.0 "Google Play Services for Android"
cordova-plugin-analytics 1.3.3 "Google Analytics Plugin"
cordova-plugin-console 1.0.2 "Console"
cordova-plugin-device 1.1.0 "Device"
cordova-plugin-dialogs 1.2.0 "Notification"
cordova-plugin-file 3.0.0 "File"
cordova-plugin-inappbrowser 1.1.1 "InAppBrowser"
cordova-plugin-network-information 1.1.0 "Network Information"
cordova-plugin-splashscreen 3.0.0 "Splashscreen"
cordova-plugin-statusbar 2.0.0 "StatusBar"
cordova-plugin-whitelist 1.2.0 "Whitelist"
cordova-plugin-x-socialsharing 5.0.7.1 "SocialSharing"
cordova-plugin-x-toast 2.3.1 "Toast"
urbanairship-cordova 4.0.1 "Urban Airship"

我已经通读了每个插件的plugin.xml,唯一引用Google Play服务的另一个是Appfeel's cordova-plugin-analytics

我正在使用 cordova 5.4.1 和 cordova-android@4.1.1。这是my config.xml 。我没有使用 IDE。

此外,另一个答案建议调查编译依赖项并使用 ./gradlew dependencies 查找重复项。 。这样做给了我this output 。正如您所看到的,它有很多重复项:很多 com.google.android.gms 和很多 com.android.support 以及很多 CordovaLib。

我尝试过的

  1. 删除并重新添加 Android 平台。它什么也没改变。
  2. 删除并重新添加 cordova-google-play-services。我无法删除它并收到以下错误:

    Error: The plugin 'cordova-google-play-services' is required by (cordova-plugin-analytics), skipping uninstallation.

    (我没有明确安装 cordova-google-play-services – 它是由 cordova-plugin-analytics 自动安装的。)

    在我的项目的早期,我尝试使用 danwilson 提供的更常见的分析插件。和 cmackay ,但我在安装这些插件时遇到了类似的问题,这就是为什么我现在使用 Appfeel 的 Google Analytics 插件(安装没有问题并且运行良好)。

  3. 使用以下代码在/platforms/android 中添加 build-extras.gradle:

    configurations {
    all*.exclude group: 'com.android.support', module: 'support-v4'
    all*.exclude group: 'com.google.android.gms', module: 'play-services-analytics'
    }

    当我运行此命令时,我确实避免了“多个库”错误,但相反,我收到了数十个包不存在的错误,如下所示:

    :compileDebugJava
    /Users/sarah/Development/app/platforms/android/src/com/urbanairship/cordova/CordovaAutopilot.java:31: error: package android.support.v4.app does not exist
    import android.support.v4.app.NotificationCompat;
    ^

    我还尝试了各种其他排除组合,这些组合是由 ./gradlew dependencies 激发的。输出我上面提到的。

  4. 更新Android平台,更新cordova

  5. 确保我拥有最新版本的 gradle

  6. 尽我所能更新 Android SDK 管理器中的所有内容。这是 screenshot of the Extras I have installed 。还有一个screenshot of Tools 。和other SDK packages .

  7. 添加使用 dependencies 的 build-extras.gradle排除项而不是 configurations 。我尝试了大约二十种不同的包、组和模块的组合(再次受到 ./gradlew dependencies 输出的插入)。有时我尝试仅排除组或仅排除模块。有时我尝试排除有或没有版本号。 (如您所见,我真的不知道我在做什么 re:gradle。)这是一次尝试:

    dependencies {
    compile('com.urbanairship.android:urbanairship-sdk:6.4.1') {
    exclude group: 'com.google.android.gms', module: 'play-services-base'
    exclude group: 'com.google.android.gms', module: 'play-services-basement'
    exclude group: 'com.android.support', module: 'support-v4'
    }
    }

    这是另一个:

    dependencies {
    compile('com.urbanairship.android:urbanairship-sdk:6.4.1') {
    exclude group: 'com.google.android.gms', module: 'play-services-base'
    exclude group: 'com.google.android.gms', module: 'play-services-maps'
    exclude group: 'com.google.android.gms', module: 'play-services-basement'
    exclude group: 'com.android.support', module: 'support-v4'
    }

    compile('com.google.android.gms:play-services-location:8.1.0') {
    exclude group: 'com.google.android.gms', module: 'play-services-base'
    exclude group: 'com.google.android.gms', module: 'play-services-maps'
    exclude group: 'com.google.android.gms', module: 'play-services-basement'
    exclude group: 'com.android.support', module: 'support-v4'
    }

    compile('com.android.support:cardview-v7:23.1.0') {
    exclude group: 'com.android.support', module: 'support-v4'
    }
    }
  8. 在我的研究中,我发现 Urban Airship 插件有 its own build-extras.gradle在/platforms/android/urbanairship-cordova 中。因此,我尝试将编译排除添加到 build-extras.gradle,而不是使用像我在 #7 中提到的无数组合。最终,我排除了太多内容,最终出现了像 #3 中所示的包不存在错误,但退出会导致相同的多个库错误。

  9. 注释掉<dependency id="cordova-google-play-services" />analytics plugin's plugin.xml .

我的问题

很抱歉这篇文章很长,但这一切似乎都是相关的故障排除信息!从头开始重申我的问题:如何修复此错误并成功构建?

最佳答案

我最近遇到了这个问题,因为 com.android.support 冲突并且(为此)我强烈推荐https://github.com/dpa99c/cordova-android-support-gradle-release这是一个“用于对齐其他插件指定的各种版本的 Android 支持库的插件”。

为了避免删除支持库的所有版本的问题(这可能会导致插件缺少依赖项/gradle 同步失败),他们使用了一些 clever gradle dependency resolution解决问题:

configurations.all {
resolutionStrategy.eachDependency { DependencyResolveDetails details ->
if (details.requested.group in ['com.android.support'] && !(details.requested.name in ['multidex', 'multidex-instrumentation'])) { details.useVersion "26.1.0"}
}
}

我认为您可以通过添加另一个内部条件来对 Google Plays 服务库执行相同的操作:

if (details.requested.group in ['com.google.android.gms'] && !(details.requested.name in ['multidex', 'multidex-instrumentation'])) {
details.useVersion "11.8.0" //Or whichever GMS level you're targeting.
}

关于Android/Cordova 与 google-play-services 构建依赖关系错误(多个库的包名称为 'com.google.android.gms' ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34561538/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com