我有和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();
}
}
答案 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
}