Android GoogleAppClient builder未能生成
我正在一个应用程序中实现谷歌智能锁,之前我在构建Api客户端时没有遇到任何问题。事实上,我正在完成一些语法更改并清理代码(甚至没有触及初始化Api客户端的代码),而当Api客户端生成器上调用Android GoogleAppClient builder未能生成,android,google-api,google-api-client,google-smartlockpasswords,Android,Google Api,Google Api Client,Google Smartlockpasswords,我正在一个应用程序中实现谷歌智能锁,之前我在构建Api客户端时没有遇到任何问题。事实上,我正在完成一些语法更改并清理代码(甚至没有触及初始化Api客户端的代码),而当Api客户端生成器上调用build()时,由于抽象方法zza,我的应用程序现在就死了。以下是显示的错误: java.lang.AbstractMethodError: abstract method "com.google.android.gms.common.api.Api$zze com.google.android.gms.c
build()
时,由于抽象方法zza
,我的应用程序现在就死了。以下是显示的错误:
java.lang.AbstractMethodError: abstract method "com.google.android.gms.common.api.Api$zze com.google.android.gms.common.api.Api$zza.zza(android.content.Context, android.os.Looper, com.google.android.gms.common.internal.zzq, java.lang.Object, com.google.android.gms.common.api.GoogleApiClient$ConnectionCallbacks, com.google.android.gms.common.api.GoogleApiClient$OnConnectionFailedListener)"
at com.google.android.gms.common.api.GoogleApiClient$Builder.build(Unknown Source)
我不知道为什么它突然开始失败,我也找不到我所做的任何可能导致这个错误的更改。为什么那个抽象方法没有被重写?它嵌套在库的深处,所以我不明白我是如何影响它的
我将GoogleAPI客户端调用包装在一个名为CredentialManager的管理器中。以下是我用来初始化客户端的代码:
public CredentialManager(ContextProvider contextProvider) {
mContextProvider = contextProvider;
mCredentialsApiClient = new GoogleApiClient.Builder(mContextProvider.getContext())
.addConnectionCallbacks(new GoogleApiClient.ConnectionCallbacks() {
@Override
public void onConnected(@Nullable Bundle bundle) {
Log.i(CredentialManager.TAG, "Api connected");
}
@Override
public void onConnectionSuspended(int i) {
Log.i(CredentialManager.TAG, "Connection suspended with status " + i);
}
})
.enableAutoManage(mContextProvider.getContext(), connectionFailedResult -> {
if (connectionFailedResult.hasResolution()) {
try {
connectionFailedResult.startResolutionForResult(
mContextProvider.getContext(),
CredentialManager.Codes.RESOLVE_CONNECTION_REQUEST_CODE);
} catch (IntentSender.SendIntentException e) {
// Unable to resolve, log error
Log.e(CredentialManager.TAG, "Resolution failed: " + e.getMessage());
}
} else {
//instead of displaying a dialog, just let the user continue and login manually.
Log.e(CredentialManager.TAG, "Connection failed: " + connectionFailedResult.getErrorMessage());
}
})
.addApi(Auth.CREDENTIALS_API)
.build();
}
如果您对导致此错误的原因有任何见解,请告诉我。我在互联网上搜索过任何以前见过类似情况的人,但什么也找不到。问题是一些google play services依赖项的版本已经更新,而不是google smart lock使用的play services auth依赖项。apk可以很好地编译,但在GoogleAPI客户端尝试初始化时崩溃。修复方法是使所有版本都相同,并使缓存无效,然后重新启动android studio,重新编译并运行