0

该应用程序可以在 Android 6.0 的设备中正确编译,但不能在 Android 4.4.2 的手机中编译。当我尝试使用带有 Android 4.4.2 的设备从 Android Studio 2.2.3 编译项目时,我收到此错误:

Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug'. > com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: com/google/android/gms/gcm/PendingCallback.class

在我的build.gradle文件中,我正在使用这个:

dependencies {
    ......
    compile 'com.google.android.gms:play-services:9.8.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    ......
}

我已经Build/Clean Project按照 SergioLucas 在Error:Execution failed for task ':app:transformClassesWithJarMergingForDebug' 的建议进行了尝试,并且我还尝试在所有 Google Play 服务库中使用相同的版本,正如 Benjamin 在Android studio APK 构建错误 transformClassesWithJarMergingForDebug中所建议的那样。就我而言,两者都使用 9.8.0com.google.android.gms:play-servicescom.google.firebase:firebase-messaging没有修复错误。有任何想法吗?谢谢你。

编辑:

该应用程序可以在 Android 5.1.1、5.0.1 和 6.0 的设备上正确编译并且零问题。我仅在装有 Android 4.4.2 的测试设备上遇到此错误。查看图片错误:

在此处输入图像描述

令我感兴趣的是,该错误仅发生在 Android 4.x 中,并且所有内容都可以在 Android 5.x 和 6.x 的设备上正常编译和运行。也许我需要一个特定的库来使东西与旧版本的 Android 兼容,在这种情况下是 Android 4.x?如果您能提供任何提示来解决此错误,我将不胜感激。谢谢你。

4

1 回答 1

0

解决方案是 sampyng 在https://github.com/firebase/firebase-jobdispatcher-android/issues/3共享的代码。这是我的app/build.gradle文件中的内容(生成错误的版本):

dependencies {
    .........
    compile 'com.google.android.gms:play-services:9.8.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    .........
    compile 'com.firebase:firebase-jobdispatcher:0.6.0'
}

解决方案被替换compile 'com.firebase:firebase-jobdispatcher:0.6.0'

compile ("com.firebase:firebase-jobdispatcher-with-gcm-dep:0.6.0") {
    exclude module: "play-services-gcm"
}

修复错误的代码的最终版本是:

dependencies {
    .........
    compile 'com.google.android.gms:play-services:9.8.0'
    compile 'com.google.firebase:firebase-messaging:9.0.0'
    .........
    compile ("com.firebase:firebase-jobdispatcher-with-gcm-dep:0.6.0") {
        exclude module: "play-services-gcm"
    }
}

我还在https://medium.com/wiselteach/firebase-jobdispatcher-androidmonk-3e6d729ed9ce找到了一篇相关文章,可能有助于解释 Firebase JobDispatcher 的使用,但官方文档位于https://github.com /firebase/firebase-jobdispatcher-android

我在 Android 4.4.2、5.0.1、5.1.1 和 6.0 的设备上进行了测试。该应用程序现在可以为我正确编译。

于 2017-11-28T22:08:19.163 回答