尝试构建谷歌api客户端时NoClassDefFoundError

时间:2014-09-13 14:34:58

标签: android google-api google-play-services noclassdeffounderror

今天我将谷歌播放服务库添加到我的项目中。我已按照http://developer.android.com/google/play-services/setup.html#ensure

上的说明进行操作

我的设置屏幕截图:https://drive.google.com/file/d/0Bwe9sI6XZ6rcZGZzdmlaQjVheDA/edit?usp=sharing

问题是当我尝试执行以下代码时,会出现noclassdeffounderror异常。

public class MainActivity extends Activity  {

private GoogleApiClient mGoogleClient;

@Override
protected void onCreate(Bundle savedInstanceState) {

    mGoogleClient = new GoogleApiClient.Builder(this)
    .addApi(Games.API)
    .addScope(Games.SCOPE_GAMES)
    .setGravityForPopups(Gravity.TOP | Gravity.CENTER_HORIZONTAL)
    .build();

在logcat中,异常看起来像

threadid=1: thread exiting with uncaught exception (group=0x40d02930)
FATAL EXCEPTION: main
java.lang.NoClassDefFoundError: com.google.android.gms.common.api.GoogleApiClient$Builder
    at com.gmail.mhofer4991.at.taptorotate.MainActivity.onCreate(MainActivity.java:104)
    at android.app.Activity.performCreate(Activity.java:5104)
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1080)
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2147)
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2233)
    at android.app.ActivityThread.access$600(ActivityThread.java:144)
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:5074)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:793)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:560)
    at dalvik.system.NativeStart.main(Native Method)
   Force finishing activity com.example.taptorotate/com.gmail.mhofer4991.at.taptorotate.MainActivity

我也清理并重建了这个项目。

让我疯狂,我无法解决问题。我知道已经有其他线程有相同的主题,我也尝试了一些建议的解决方案,但没有一个适合我。请帮帮我!

3 个答案:

答案 0 :(得分:0)

我也有同样的问题,

java.lang.NoClassDefFoundError: 
      com.google.android.gms.common.api.GoogleApiClient$Builder

我在应用程序build.gradle文件中使用了以下依赖项。

compile 'com.google.android.gms:play-services:7.8.0'

我把它改成了

compile 'com.google.android.gms:play-services-plus:7.8.0'

我更新了Google Play服务(第26版)和Google信息库(第20版)。

之后不会发生异常。

尝试使用单个API和相应的build.gradle描述,如下页所示: https://developers.google.com/android/guides/setup#ensure

答案 1 :(得分:0)

如果您将minifyEnabled或ProGuard设置为true,请尝试为Google API添加模糊规则: ProGuard Configuration

答案 2 :(得分:0)

尝试在Android中使用Google云端硬盘的实现我发现此错误消息指向了一些类:

java.lang.ClassNotFoundException: com.google.android.gms.common.api.Scope
Caused by: java.lang.ClassNotFoundException: Didn't find class 

我发现当我们添加与GoogleApiClient相关的依赖项时,真正的问题是limit of 64K references,因此添加multidex支持解决了我的问题:

android {
    compileSdkVersion 25
    buildToolsVersion "25.0.2"
    defaultConfig {
        ...
        ...
        multiDexEnabled true
    }
...
...