0

我正在努力让cognito工作。它与用户登录和Facebook的伟大工程,但由于某些原因,当我加入谷歌按钮,它有着悠久的错误消息崩溃,并在这里发现了一堆java.lang.NoClassDefFoundError亚马逊认知与谷歌按钮崩溃程序

我下面的教程:http://docs.aws.amazon.com/mobile-hub/latest/developerguide/add-aws-mobile-user-sign-in-google.html#google-config-overview

这是导致所有的错误行:

 // Add Google as Identity Provider. 
    IdentityManager.getDefaultIdentityManager().addSignInProvider(
      GoogleSignInProvider.class); 
    GoogleSignInProvider.setPermissions(Scopes.EMAIL, Scopes.PROFILE); 

我的等级文件如下

apply plugin: 'com.android.application' 
 

 
android { 
 
    compileSdkVersion 26 
 
    buildToolsVersion "25.0.2" 
 
    defaultConfig { 
 
     applicationId "com.sniffergps.sniffer" 
 
     minSdkVersion 19 
 
     targetSdkVersion 26 
 
     versionCode 1 
 
     versionName "1.0" 
 
     testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
 
     multiDexEnabled true 
 
    } 
 
    buildTypes { 
 
     release { 
 
      minifyEnabled false 
 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
 
     } 
 
    } 
 
} 
 

 
dependencies { 
 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
 
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { 
 
     exclude group: 'com.android.support', module: 'support-annotations' 
 
    }) 
 
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1' 
 
    compile 'com.android.support:design:26.0.0-alpha1' 
 
    testCompile 'junit:junit:4.12' 
 

 
    compile('com.amazonaws:aws-android-sdk-auth-userpools:[email protected]') { transitive = true; } 
 
    compile('com.amazonaws:aws-android-sdk-auth-core:[email protected]') { transitive = true; } 
 

 
    // SDK Sign-in prompt UI library 
 
    compile('com.amazonaws:aws-android-sdk-auth-ui:[email protected]') { transitive = true; } 
 

 
    compile 'com.amazonaws:aws-android-sdk-core:2.6.0' 
 
    compile('com.amazonaws:aws-android-sdk-auth-core:[email protected]') { transitive = true; } 
 

 
    compile('com.amazonaws:aws-android-sdk-auth-facebook:[email protected]') { transitive = true; } 
 

 
    compile('com.amazonaws:aws-android-sdk-auth-ui:[email protected]') { transitive = true; } 
 

 
    compile 'com.android.support:support-v4:26.0' 
 
    compile('com.amazonaws:aws-android-sdk-auth-google:[email protected]') { transitive = true; } 
 

 
    // Dependencies for the SDK Sign-in prompt UI library 
 
    compile('com.amazonaws:aws-android-sdk-auth-ui:[email protected]') { transitive = true; } 
 
    compile 'com.android.support:appcompat-v7:26.0.0-alpha1' 
 
    compile 'com.amazonaws:aws-android-sdk-cognitoidentityprovider:2.6.0' 
 
    compile 'com.amazonaws:aws-android-sdk-core:2.6.0' 
 
    compile 'com.android.support:multidex:1.0.1' 
 
    compile 'com.android.support:support-v4:26.0' 
 
    //compile 'com.android.support.constraint:constraint-layout:+' 
 
    testCompile 'junit:junit:4.12' 
 
    compile 'com.google.android.gms:play-services-maps:10.0.1' 
 

 
    compile 'com.android.support:support-v4:26.+' 
 
    compile ('com.amazonaws:aws-android-sdk-auth-google:[email protected]') { transitive = true; } 
 

 
    // Dependencies for the SDK Sign-in prompt UI library 
 
    compile 'com.android.support:appcompat-v7:26.+' 
 
    compile ('com.amazonaws:aws-android-sdk-auth-ui:[email protected]') { transitive = true; } 
 

 
    compile 'com.amazonaws:aws-android-sdk-ddb-mapper:2.6.0' 
 
}

错误日志如下:

10-10 13:12:55.155 26609-26661/com.sniffergps.sniffer I/OpenGLRenderer: Initialized EGL, version 1.4 
 
10-10 13:12:55.155 26609-26661/com.sniffergps.sniffer D/OpenGLRenderer: Swap behavior 2 
 
10-10 13:12:55.186 26609-26659/com.sniffergps.sniffer D/CognitoUserPoolsSignInProvider: CognitoLoginKey: <my login key> 
 
10-10 13:12:55.187 26609-26659/com.sniffergps.sniffer D/GoogleSignInProvider: Initializing Google SDK... 
 
10-10 13:12:55.192 26609-26659/com.sniffergps.sniffer D/GoogleSignInProvider: Created Google SignInOptions. 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.proxy.ProxyRequest>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable; 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.google.android.gms.auth.api.Auth.<clinit>() ((null):-1) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.google.GoogleSignInProvider.initialize(android.content.Context, com.amazonaws.mobile.config.AWSConfiguration) (GoogleSignInProvider.java:133) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.signin.SignInManager.<init>(android.content.Context) (SignInManager.java:74) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at com.amazonaws.mobile.auth.core.signin.SignInManager com.amazonaws.mobile.auth.core.signin.SignInManager.getInstance(android.content.Context) (SignInManager.java:103) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.IdentityManager$7.run() (IdentityManager.java:653) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:457) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.FutureTask.run() (FutureTask.java:266) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1162) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:636) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.lang.Thread.run() (Thread.java:764) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable" on path: DexPathList[[zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/base.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_dependencies_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_0_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_1_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_2_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_3_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_4_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_5_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_6_apk.apk", zip file "/ 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.google.android.gms.auth.api.Auth.<clinit>() ((null):-1) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.google.GoogleSignInProvider.initialize(android.content.Context, com.amazonaws.mobile.config.AWSConfiguration) (GoogleSignInProvider.java:133) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.signin.SignInManager.<init>(android.content.Context) (SignInManager.java:74) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at com.amazonaws.mobile.auth.core.signin.SignInManager com.amazonaws.mobile.auth.core.signin.SignInManager.getInstance(android.content.Context) (SignInManager.java:103) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.IdentityManager$7.run() (IdentityManager.java:653) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:457) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.FutureTask.run() (FutureTask.java:266) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1162) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:636) 
 
10-10 13:12:55.205 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.lang.Thread.run() (Thread.java:764) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64: Rejecting re-init on previously-failed class java.lang.Class<com.google.android.gms.auth.api.proxy.ProxyRequest>: java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/android/gms/common/internal/safeparcel/AbstractSafeParcelable; 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.google.android.gms.auth.api.Auth.<clinit>() ((null):-1) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.google.GoogleSignInProvider.initialize(android.content.Context, com.amazonaws.mobile.config.AWSConfiguration) (GoogleSignInProvider.java:133) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.signin.SignInManager.<init>(android.content.Context) (SignInManager.java:74) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at com.amazonaws.mobile.auth.core.signin.SignInManager com.amazonaws.mobile.auth.core.signin.SignInManager.getInstance(android.content.Context) (SignInManager.java:103) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.IdentityManager$7.run() (IdentityManager.java:653) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:457) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.FutureTask.run() (FutureTask.java:266) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1162) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:636) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.lang.Thread.run() (Thread.java:764) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64: Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.android.gms.common.internal.safeparcel.AbstractSafeParcelable" on path: DexPathList[[zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/base.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_dependencies_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_0_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_1_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_2_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_3_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_4_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_5_apk.apk", zip file "/data/app/com.sniffergps.sniffer-XWFh5D8pOM7REOl4SkxjmQ==/split_lib_slice_6_apk.apk", zip file "/ 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class dalvik.system.BaseDexClassLoader.findClass(java.lang.String) (BaseDexClassLoader.java:93) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String, boolean) (ClassLoader.java:379) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Class java.lang.ClassLoader.loadClass(java.lang.String) (ClassLoader.java:312) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.google.android.gms.auth.api.Auth.<clinit>() ((null):-1) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.google.GoogleSignInProvider.initialize(android.content.Context, com.amazonaws.mobile.config.AWSConfiguration) (GoogleSignInProvider.java:133) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.signin.SignInManager.<init>(android.content.Context) (SignInManager.java:74) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at com.amazonaws.mobile.auth.core.signin.SignInManager com.amazonaws.mobile.auth.core.signin.SignInManager.getInstance(android.content.Context) (SignInManager.java:103) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void com.amazonaws.mobile.auth.core.IdentityManager$7.run() (IdentityManager.java:653) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at java.lang.Object java.util.concurrent.Executors$RunnableAdapter.call() (Executors.java:457) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.FutureTask.run() (FutureTask.java:266) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor.runWorker(java.util.concurrent.ThreadPoolExecutor$Worker) (ThreadPoolExecutor.java:1162) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.util.concurrent.ThreadPoolExecutor$Worker.run() (ThreadPoolExecutor.java:636) 
 
10-10 13:12:55.206 26609-26659/com.sniffergps.sniffer I/zygote64:  at void java.lang.Thread.run() (Thread.java:764) 
 
...<and many more>... 
 
10-10 13:12:56.421 26609-26615/com.sniffergps.sniffer I/zygote64: Do partial code cache collection, code=30KB, data=23KB 
 
10-10 13:12:56.423 26609-26615/com.sniffergps.sniffer I/zygote64: After code cache collection, code=30KB, data=23KB 
 
10-10 13:12:56.423 26609-26615/com.sniffergps.sniffer I/zygote64: Increasing code cache capacity to 128KB

回答

0

这个错误看起来像你的gradle这个可能不具备所有必要的谷歌库。

compile 'com.facebook.android:facebook-android-sdk:4.20.0' 
compile 'com.google.android.gms:play-services-auth:9.8.0' 
compile('com.amazonaws:aws-android-sdk-auth-core:[email protected]') 
compile('com.amazonaws:aws-android-sdk-auth-ui:[email protected]') 
compile('com.amazonaws:aws-android-sdk-auth-facebook:[email protected]') { transitive = true; } 
compile('com.amazonaws:aws-android-sdk-auth-google:[email protected]') { transitive = true; } 

要测试你的实现,见下面

private void initializeApplication() { 
     awsConfiguration = new AWSConfiguration(this); 

     if (IdentityManager.getDefaultIdentityManager() == null) { 
      final IdentityManager identityManager = new IdentityManager(getApplicationContext(), awsConfiguration); 
      IdentityManager.setDefaultIdentityManager(identityManager); 
     } 


     FacebookSignInProvider.setPermissions("public_profile"); 

     // Add Facebook as an SignIn Provider. 
     IdentityManager.getDefaultIdentityManager().addSignInProvider(FacebookSignInProvider.class); 

     GoogleSignInProvider.setPermissions(Scopes.EMAIL, Scopes.PROFILE); 

     // Add Google as an SignIn Provider. 
     IdentityManager.getDefaultIdentityManager().addSignInProvider(GoogleSignInProvider.class); 


     try { 
      final PinpointConfiguration config = 
        new PinpointConfiguration(this, 
          IdentityManager.getDefaultIdentityManager().getCredentialsProvider(), 
          awsConfiguration); 
      Application.pinpointManager = new PinpointManager(config); 
     } catch (final AmazonClientException ex) { 
      Log.e(LOG_TAG, "Unable to initialize PinpointManager. " + ex.getMessage(), ex); 
     } 

     // The Helper registers itself to receive application lifecycle events when it is constructed. 
     // A reference is kept here in order to pass through the onTrimMemory() call from 
     // the Application class to properly track when the application enters the background. 
     applicationLifeCycleHelper = new AbstractApplicationLifeCycleHelper(this) { 
      @Override 
      protected void applicationEnteredForeground() { 
       Application.pinpointManager.getSessionClient().startSession(); 
       // handle any events that should occur when your app has come to the foreground... 
      } 

      @Override 
      protected void applicationEnteredBackground() { 
       Log.d(LOG_TAG, "Detected application has entered the background."); 
       Application.pinpointManager.getSessionClient().stopSession(); 
       Application.pinpointManager.getAnalyticsClient().submitEvents(); 
       // handle any events that should occur when your app has gone into the background... 
      } 
     }; 
    } 

调用方法的onCreate

initializeApplication();