一个以前很好的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上看到了许多类似错误的许多其他案例,并应用了适用于其他人的解决方案:
<plugin name="cordova-android-support-gradle-release" spec="^2.0.1"> <variable name="ANDROID_SUPPORT_VERSION" value="24.1.1" />
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 }
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
答案结果证明Dan Wilson的cordova和Android的Google Analytics插件之间存在已知的不兼容性
重要说明如果此插件的最新版本(0.8.0+)不适用于Cordova 5.0+上的Android,请尝试Issues 123中的建议。谷歌播放服务的整合非常混乱,但最近几个月它已被简化。这个插件使用新的更简单的方式(包括它作为一个框架,而不是捆绑它可能与捆绑它的其他插件冲突),但如果你以前安装这个插件一些旧文件可能仍然挥之不去。
as outlined here修复程序是安装Android支持存储库,就像我已经完成的那样,并更新了我已经完成的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中消失,该应用程序似乎可以使用和不使用它进行编译和运行。