Cordova Android项目无法使用重复的google / gms进行编译

问题描述 投票:1回答:1

一个以前很好的cordova应用程序现在无法编译,出现以下错误和变化(总是重复com / google / android / gms / ......的条目...)

    :app:transformClassesWithJarMergingForRelease FAILED

     FAILURE: Build failed with an exception.

     * What went wrong: Execution failed for task 
 ':app:transformClassesWithJarMergingForRelease'.
    com.android.build.api.transform.TransformException: java.util.zip.
  ZipException: duplicate entry:
     com/google/android/gms/tagmanager/Container$FunctionCallMacroCallback.class

我在Stackoverflow上看到了许多类似错误的许多其他案例,并应用了适用于其他人的解决方案:

  • 我已经安装了插件“cordova-android-support-gradle-release 2.0.1”并将其设置为与android支持v4版本匹配:
<plugin name="cordova-android-support-gradle-release" spec="^2.0.1">
    <variable name="ANDROID_SUPPORT_VERSION" value="24.1.1" />
  • 我已经检查了app和android build.gradle文件,用于重复编译google服务。只有一个:
dependencies {
    implementation fileTree(dir: 'libs', include: '*.jar')
    // SUB-PROJECT DEPENDENCIES START
    implementation(project(path: ":CordovaLib"))
    compile "com.google.android.gms:play-services-analytics:11.0.1"
    compile "com.android.support:support-v4:24.1.1+"
    // SUB-PROJECT DEPENDENCIES END
}
  • 我跑了Cordova Clean
  • 我删除了android平台并重新安装
  • 我已经使用cordova命令行构建编译
  • 我已经使用最新的Android Studio版本进行了同步和编译
  • 我已经使用它编译的最后一个Android Studio版本进行了同步和编译,预览3.2
  • 我已将以下内容添加到应用程序的build.gradle defaultConfig块中:
    minSdkVersion 19
    targetSdkVersion 28
    multiDexEnabled true
  • 我已经更新了所有插件:
cordova-launch-review 2.0.2 "Launch Review"
cordova-plugin-compat 1.2.0 "Compat"
cordova-plugin-device 2.0.2 "Device"
cordova-plugin-dialogs 1.3.4 "Notification"
cordova-plugin-file 6.0.1 "File"
cordova-plugin-globalization 1.11.0 "Globalization"
cordova-plugin-google-analytics 1.8.6 "Google Universal Analytics Plugin"
cordova-plugin-googleplayservices 19.0.3 "Google Play Services for Android"
cordova-plugin-inappbrowser 3.0.0 "InAppBrowser"
cordova-plugin-splashscreen 5.0.3-dev "Splashscreen"
cordova-plugin-statusbar 2.4.2 "StatusBar"
cordova-plugin-whitelist 1.3.3 "Whitelist"
cordova-plugin-x-socialsharing 5.4.4 "SocialSharing"
es6-promise-plugin 4.2.2 "Promise"
  • 我已下载并安装了支持存储库

什么在Ada Lovelace的名字我错过了??????

更新编辑:

我从/ platforms / android目录运行了./gradlew:app:dependencies并获得了:

+--- com.google.android.gms:play-services-analytics:11.0.1
|    +--- com.google.android.gms:play-services-analytics-impl:[11.0.1] -> 11.0.1
|    |    +--- com.google.android.gms:play-services-base:[11.0.1] -> 11.0.1
|    |    |    +--- com.google.android.gms:play-services-basement:[11.0.1] -> 11.0.1
|    |    |    |    \--- com.android.support:support-v4:25.2.0 -> 24.1.1
|    |    |    |         \--- com.android.support:support-annotations:24.1.1
|    |    |    \--- com.google.android.gms:play-services-tasks:[11.0.1] -> 11.0.1
|    |    |         \--- com.google.android.gms:play-services-basement:[11.0.1] -> 11.0.1 (*)
|    |    \--- com.google.android.gms:play-services-basement:[11.0.1] -> 11.0.1 (*)
|    +--- com.google.android.gms:play-services-base:[11.0.1] -> 11.0.1 (*)
|    +--- com.google.android.gms:play-services-basement:[11.0.1] -> 11.0.1 (*)
|    \--- com.google.android.gms:play-services-tagmanager-v4-impl:[11.0.1] -> 11.0.1
|         +--- com.google.android.gms:play-services-analytics-impl:[11.0.1] -> 11.0.1 (*)
|         +--- com.google.android.gms:play-services-base:[11.0.1] -> 11.0.1 (*)
|         \--- com.google.android.gms:play-services-basement:[11.0.1] -> 11.0.1 (*)
+--- com.android.support:support-v4:24.1.1+ -> 24.1.1 (*)
\--- project :CordovaLib

我的/ platforms / android / app / libs目录中唯一的库是:google-play-services.jar

android cordova gradle cordova-plugins
1个回答
1
投票

答案结果证明Dan Wilson的cordova和Android的Google Analytics插件之间存在已知的不兼容性

重要说明如果此插件的最新版本(0.8.0+)不适用于Cordova 5.0+上的Android,请尝试Issues 123中的建议。谷歌播放服务的整合非常混乱,但最近几个月它已被简化。这个插件使用新的更简单的方式(包括它作为一个框架,而不是捆绑它可能与捆绑它的其他插件冲突),但如果你以前安装这个插件一些旧文件可能仍然挥之不去。

as outlined here修复程序是安装A​​ndroid支持存储库,就像我已经完成的那样,并更新了我已经完成的Google Play服务和Google存储库,并且:

从/ platforms / android / app / libs中删除google服务jar

这解决了它。 @ Jon-Goodwin我恢复了这条线

cordova.system.library.2=com.android.support:support-v4:24.1.1+

到/platforms/android/app/project.properties文件并成功编译,因此删除jar文件似乎已消除了冲突。如果google-play-services.jar文件从/ platforms / android / app / libs中消失,该应用程序似乎可以使用和不使用它进行编译和运行。

© www.soinside.com 2019 - 2024. All rights reserved.