我正在使用 Eclipse Juno ADT bundle + Google Plugin for Eclipse 为 Android 4+ 开发。我需要以编程方式登录谷歌帐户才能使用谷歌日历 API。为此,我正在使用客户经理。我收到以下错误:
05-05 13:28:55.605: E/AndroidRuntime(11186): FATAL EXCEPTION: main
05-05 13:28:55.605: E/AndroidRuntime(11186): java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
05-05 13:28:55.605: E/AndroidRuntime(11186): at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.newChooseAccountIntent(GoogleAccountCredential.java:171)
05-05 13:28:55.605: E/AndroidRuntime(11186): ...
这是导致它的代码:
GoogleAccountCredential credential;
credential = GoogleAccountCredential.usingOAuth2(this, CalendarScopes.CALENDAR);
chooseAccount();
private void chooseAccount() {
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}
我已经在 stackoverflow 上搜索了解决方案。libs 目录包含我通过 google 插件为 eclipse 导入的 eclipse 日历库文件(其中还放置了身份验证等......库):
android-support-v4.jar
google-api-client-1.14.1-beta.jar
google-api-client-android-1.14.1-beta.jar
google-api-services-calendar-v3-rev41-1.14.2-beta.jar
google-http-client-1.14.1-beta.jar
google-http-client-android-1.14.1-beta.jar
google-http-client-gson-1.14.1-beta.jar
google-http-client-jackson-1.14.1-beta.jar
google-http-client-jackson2-1.14.1-beta.jar
google-oauth-client-1.14.1-beta.jar
gson-2.1.jar
jackson-core-2.1.3.jar
jackson-core-asl-1.9.11.jar
jsr305-1.3.9.jar
然而,这些似乎不包括
com.google.android.gms.common.AccountPicker
如果我在我的代码中导入它,则导入代码行被标记为错误。那么这是什么一回事。我从运行良好的 Google 日历示例中复制了这段代码:
http://samples.google-api-java-client.googlecode.com/hg/calendar-android-sample/
该代码具有完全相同的库,除了:
- 日历库是 rev33 而不是 rev41
- jackson 和 jackson-asl 库丢失
- 示例代码中存在但我的代码中没有的每个库文件的 .properties 文件
所以这应该不是问题。但是,查看代码的导入部分,谷歌日历示例代码具有:
import com.google.android.gms.common.GooglePlayServicesUtil;
但是如果我尝试在我的代码中插入这行代码,它会被标记为错误,说明无法解析 import com.google.android.gms.common.GooglePlayServicesUtil。
这个帖子
java.lang.NoClassDefFoundError: com.google.android.gms.common.AccountPicker
说他们能够
import com.google.android.gms.common.AccountPicker;
但我想知道来自哪个图书馆。
我什至尝试通过一次检查一个文件但找不到它来查找可以包含 com.google.android.gms.common.* 的库的原始 android 日历示例。这怎么可能?
我究竟做错了什么?
非常感谢您的所有帮助。