编译时验证失败(Account Kit Android)

时间:2017-08-10 10:05:40

标签: android facebook account-kit

我有和Android应用程序完美地工作了一段时间。我正在使用Facebook提供的帐户套件进行用户身份验证,而且我已经碰壁了。在进行一些更改并再次测试应用程序后,登录不起作用。当启动使用phone或sms登录时,应用程序崩溃并且编译时验证失败。 老实说,我的网络比Android更多,所以请原谅我的无知,如果这是小事。

                                                                      --------- beginning of crash
08-10 12:59:47.328 20322-20322/com.chris.tatusafety E/AndroidRuntime: FATAL EXCEPTION: main
                                                                      Process: com.chris.tatusafety, PID: 20322
                                                                      java.lang.VerifyError: Rejecting class com.google.android.gms.internal.zzasm because it failed compile-time verification (declaration of 'com.google.android.gms.internal.zzasm' appears in /data/app/com.chris.tatusafety-1/base.apk)
                                                                          at com.google.android.gms.auth.api.Auth.<clinit>(Unknown Source)
                                                                          at com.facebook.accountkit.ui.AccountKitActivity.onCreate(AccountKitActivity.java:348)
                                                                          at android.app.Activity.performCreate(Activity.java:6251)
                                                                          at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1110)
                                                                          at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2370)
                                                                          at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2477)
                                                                          at android.app.ActivityThread.-wrap11(ActivityThread.java)
                                                                          at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1345)
                                                                          at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                          at android.os.Looper.loop(Looper.java:148)
                                                                          at android.app.ActivityThread.main(ActivityThread.java:5452)
                                                                          at java.lang.reflect.Method.invoke(Native Method)
                                                                          at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:762)
                                                                          at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:652)
08-10 12:59:47.329 20322-20365/com.chris.tatusafety V/FA: Inactivity, disconnecting from the service

这是活动。

package com.chris...;

//    Here I import all my libraries... 


public class LoginActivity extends AppCompatActivity {
    public static int APP_REQUEST_CODE = 1;
    @Bind(R.id.phone_login_button) Button mPhone;
    @Bind(R.id.title) TextView mTitle;
    @Bind(R.id.email_login_button) Button mLogin;
    @Bind(R.id.anonymous_login_button) Button mAnony;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_login);
        //check for an access token
        AccessToken accessToken = AccountKit.getCurrentAccessToken();


        if (accessToken != null)
        {
            //if user was logged in it will not be null hence log in into application
            loginSuccess();
        }
    }

    @Override
    protected void onActivityResult (final int requestCode, final int resultCode, final Intent data){
        super.onActivityResult(requestCode, resultCode ,data);

        //confirm that this response matches your request
        if (requestCode == APP_REQUEST_CODE){
            AccountKitLoginResult loginResult = data.getParcelableExtra(AccountKitLoginResult.RESULT_KEY);
            if (loginResult.getError() != null ){
                //display a login error
                String toastMessage = loginResult.getError().getErrorType().getMessage();
                Toast.makeText(this, toastMessage, Toast.LENGTH_SHORT).show();
            }else if (loginResult.getAccessToken() != null){
                //on succesfull login, proceed
                loginSuccess();
            }
        }
    }



    private void onLogin(final LoginType loginType){
        //acount kit activity
        final Intent accountKit = new Intent(this,AccountKitActivity.class);

        //configure login type and response type
        AccountKitConfiguration.AccountKitConfigurationBuilder configurationBuilder=
                new AccountKitConfiguration.AccountKitConfigurationBuilder(
                        loginType,AccountKitActivity.ResponseType.TOKEN
                );
        final AccountKitConfiguration configuration = configurationBuilder.build();

        //launch account kit activity
        accountKit.putExtra(AccountKitActivity.ACCOUNT_KIT_ACTIVITY_CONFIGURATION,configuration);
        startActivityForResult(accountKit,APP_REQUEST_CODE);

    }

    public void onPhoneLogin(View view){
        onLogin(LoginType.PHONE);
    }

    public void onEmailLogin(View view){
        onLogin(LoginType.EMAIL);
    }



    private void loginSuccess() {

        Intent mainActivity = new Intent(this,MainActivity.class);
        startActivity(mainActivity);
        finish();
    }

    public void onAnonymousLogin(View view) {
        AccessToken accessToken = null;
        loginSuccess();
    }
}

1 个答案:

答案 0 :(得分:0)

我通过在facebook sdk和帐户套件中添加排除组来修复它。

compile ('com.facebook.android:facebook-android-sdk:4.+'){
    exclude group: 'com.google.android.gms'
}
compile ('com.facebook.android:account-kit-sdk:4.+'){
    exclude group: 'com.google.android.gms'
}

在我的项目中,错误实际上是由版本差异引起的。因此,您还必须强制添加一些您希望在项目中使用的版本的依赖项。例如

compile("com.google.android.gms:play-services-gcm:*whateverVersionThatYouWish*") {
    force = true
}
compile("com.google.android.gms:play-services-location:*whateverVersionThatYouWish*") {
    force = true
}