使用google play服务与microsoft azure时的NoClassDefFoundError:com.google.gson.GsonBuilder

时间:2016-04-22 09:23:51

标签: android azure gradle

我正在构建一个Android应用程序,它使用google地图播放服务用于谷歌地图和Microsoft azure用于移动服务(云存储)。 当我只使用Microsoft azure库时,我不会遇到任何问题,但是当添加谷歌播放库时,它会给我以下错误。

错误

    FATAL EXCEPTION: main
                  java.lang.NoClassDefFoundError: com.google.gson.GsonBuilder
                  at com.microsoft.windowsazure.mobileservices.MobileServiceClient.createMobileServiceGsonBuilder(MobileServiceClient.java:192)
                  at com.microsoft.windowsazure.mobileservices.MobileServiceClient.<init>(MobileServiceClient.java:179)
                  at com.microsoft.windowsazure.mobileservices.MobileServiceClient.<init>(MobileServiceClient.java:158)
                  at com.example.jino.navigationplacepicker.ReviewPage.onCreate(ReviewPage.java:27)

这是我的gradle

中的库依赖结构
    dependencies {
                   compile fileTree(include: ['*.jar'], dir: 'libs')
                   testCompile 'junit:junit:4.12'
                   compile 'com.android.support:appcompat-v7:23.2.1'
                   compile 'com.android.support:design:23.2.1'
                   compile 'com.google.code.gson:gson:2.4'
                   compile files('libs/azuresdk-android-2.0.3/mobileservices/guava-17.0.jar')
                   compile files('libs/azuresdk-android-2.0.3/mobileservices/mobileservices-2.0.3.jar')
                   compile files('libs/azuresdk-android-2.0.3/mobileservices/mobileservices-2.0.3-javadoc.jar')
                   compile files('libs/azuresdk-android-2.0.3/mobileservices/mobileservices-2.0.3-sources.jar')
                   compile 'com.google.android.gms:play-services:8.4.0'
                   } 

希望你能帮助我。提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您加入compile 'com.google.android.gms:play-services:8.4.0'时,会包含所有播放服务包。如果您只需要播放服务中的地图,请改用compile 'com.google.android.gms:play-services-maps:8.4.0'

有关播放服务模块的列表,请参阅here。我目前正在测试所有模块,看看哪个可能是罪魁祸首。如果你很好奇,请继续关注更新。

我目前不确定导致此问题的原因。使用整个播放服务集合适用于我的大多数设备,但不适用于我的任何Android 4.4.4设备。

更新:问题更可能是由于使用的软件包数量而非特定软件包与Azure不兼容。可能与总方法计数超过64K(DEX64K错误)有关。

继续使用特定模块,你应该没问题。