亚马逊认知与谷歌按钮崩溃程序



我正在努力让认知工作。它适用于用户登录和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:2.6.0@aar') { transitive = true; }
    compile('com.amazonaws:aws-android-sdk-auth-core:2.6.0@aar') { transitive = true; }
    // SDK Sign-in prompt UI library
    compile('com.amazonaws:aws-android-sdk-auth-ui:2.6.0@aar') { transitive = true; }
    compile 'com.amazonaws:aws-android-sdk-core:2.6.0'
    compile('com.amazonaws:aws-android-sdk-auth-core:2.6.0@aar') { transitive = true; }
    compile('com.amazonaws:aws-android-sdk-auth-facebook:2.6.+@aar') { transitive = true; }
    compile('com.amazonaws:aws-android-sdk-auth-ui:2.6.+@aar') { transitive = true; }
    compile 'com.android.support:support-v4:26.0'
    compile('com.amazonaws:aws-android-sdk-auth-google:2.6.+@aar') { transitive = true; }
    // Dependencies for the SDK Sign-in prompt UI library
    compile('com.amazonaws:aws-android-sdk-auth-ui:2.6.+@aar') { 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:2.6.+@aar') { 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:2.6.+@aar') { 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

此错误看起来您的 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:2.6.0@aar')
compile('com.amazonaws:aws-android-sdk-auth-ui:2.6.0@aar')
compile('com.amazonaws:aws-android-sdk-auth-facebook:2.6.0@aar') { transitive = true; }
compile('com.amazonaws:aws-android-sdk-auth-google:2.6.0@aar') { 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();

最新更新