【发布时间】:2019-02-22 23:28:37
【问题描述】:
以前不错的 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 support v4 版本匹配:
<plugin name="cordova-android-support-gradle-release" spec="^2.0.1"> <variable name="ANDROID_SUPPORT_VERSION" value="24.1.1" />
- 我检查了应用程序和 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
【问题讨论】:
-
您的
libs目录中是否有rogue 库(不需要/错误地存在)(看看)?试试./gradlew :app:dependencies看看可能有什么冲突(重复)。 -
cool @brianfit 我会在我 24 小时没醒的时候去看看;O) 你在安全的手中......
-
非常感谢 Jon,我不知道我是怎么错过这个命令的。我将输出作为更新编辑放入问题中。老实说,我不知道如何解析它来判断什么是有效的,什么是无效的——我看到对 play-services-basement 的多次引用,例如但作为非重复条目的子分支。
-
ADA 摇滚! (大多数 {by a long way} 第一批程序员都是女性)
标签: android cordova gradle cordova-plugins