- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个带有 Google 云端硬盘的 Android 应用程序,但即使它编译得很好,当我尝试做任何事情时它也会崩溃。
这是一个预先存在的项目,尚未在其中进行处理,最初是一个 Eclipse 项目。有人报告说将其导入 Android Studio 并修复了该错误,但是当我尝试使用 Google Drive 执行任何操作时,出现以下应用程序崩溃。
Process: com.BoardiesITSolutions.PasswordManager, PID: 23121
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/common/base/Preconditions;
at com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager.<init>(GoogleAccountManager.java:41)
at com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager.<init>(GoogleAccountManager.java:48)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.<init>(GoogleAccountCredential.java:78)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.usingOAuth2(GoogleAccountCredential.java:97)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings.enableGoogleDrive(Settings.java:575)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings.access$000(Settings.java:420)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings$1.onPreferenceChange(Settings.java:510)
at android.preference.Preference.callChangeListener(Preference.java:928)
at android.preference.ListPreference.onDialogClosed(ListPreference.java:281)
at android.preference.DialogPreference.onDismiss(DialogPreference.java:391)
at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1257)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.common.base.Preconditions" on path: DexPathList[[zip file "/data/app/com.BoardiesITSolutions.PasswordManager-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager.<init>(GoogleAccountManager.java:41)
at com.google.api.client.googleapis.extensions.android.accounts.GoogleAccountManager.<init>(GoogleAccountManager.java:48)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.<init>(GoogleAccountCredential.java:78)
at com.google.api.client.googleapis.extensions.android.gms.auth.GoogleAccountCredential.usingOAuth2(GoogleAccountCredential.java:97)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings.enableGoogleDrive(Settings.java:575)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings.access$000(Settings.java:420)
at com.BoardiesITSolutions.PasswordManager.Settings$SynchronisationSettings$1.onPreferenceChange(Settings.java:510)
at android.preference.Preference.callChangeListener(Preference.java:928)
at android.preference.ListPreference.onDialogClosed(ListPreference.java:281)
at android.preference.DialogPreference.onDismiss(DialogPreference.java:391)
at android.app.Dialog$ListenersHandler.handleMessage(Dialog.java:1257)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:135)
at android.app.ActivityThread.main(ActivityThread.java:5312)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:901)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:696)
Suppressed: java.lang.ClassNotFoundException: com.google.common.base.Preconditions
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 19 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
下面是崩溃的代码部分:
private void enableGoogleDrive()
{
credential = GoogleAccountCredential.usingOAuth2(context, DriveScopes.DRIVE);
startActivityForResult(credential.newChooseAccountIntent(), REQUEST_ACCOUNT_PICKER);
}
是 credential = ...
导致了崩溃。
下面是我的build.gradle文件
apply plugin: 'com.android.application'
android {
compileOptions.encoding = 'ISO-8859-1'
compileSdkVersion 21
buildToolsVersion "21.1.2"
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
}
defaultConfig {
applicationId "com.BoardiesITSolutions.PasswordManager"
minSdkVersion 14
targetSdkVersion 21
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_5
targetCompatibility JavaVersion.VERSION_1_5
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
repositories {
mavenLocal()
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile ('com.google.android.gms:play-services:7.0.0') {
exclude module: 'support-v4'
}
compile files('libs/commons-codec-1.4.jar');
compile files('libs/google-api-services-drive-v2-rev30-1.12.0-beta.jar')
compile ('com.android.support:appcompat-v7:21.0.0') {
exclude module: 'support-v4'
}
//compile 'com.android.support:support-v4:21.0.0'
compile ('com.BoardiesITSolutions:CritiMon:1.0') {
exclude module: 'support-v4'
}
compile ('com.BoardiesITSolutions:Library:1.1') {
exclude module: 'support-v4'
}
}
我发现我缺少一个 jar 库。我添加了这个名为 google-collect-1.0.jar 的 jar 并重建了。当我运行上面的代码时,它现在可以工作了,并且我得到了我选择的 Google 帐户列表。但是,当它随后尝试对 Drive 执行某些操作时,我现在得到了一个不同的错误。
FileList file = service.files().list().execute();
上面一行是导致崩溃的原因。服务是通过调用创建的
credential.setSelectedAccountName(settings.getString("google_drive_account_name", ""));
Drive service = getDriveService(credential);
getDriveService如下:
private Drive getDriveService(GoogleAccountCredential credential)
{
return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();
}
我现在得到的错误是:
java.lang.NoClassDefFoundError: Failed resolution of: Lcom/google/common/primitives/UnsignedInteger;
at com.google.api.client.util.Data.<clinit>(Data.java:81)
at com.google.api.client.util.FieldInfo.<init>(FieldInfo.java:131)
at com.google.api.client.util.FieldInfo.of(FieldInfo.java:104)
at com.google.api.client.util.ClassInfo.<init>(ClassInfo.java:174)
at com.google.api.client.util.ClassInfo.of(ClassInfo.java:92)
at com.google.api.client.util.GenericData.<init>(GenericData.java:79)
at com.google.api.client.util.GenericData.<init>(GenericData.java:61)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.<init>(AbstractGoogleClientRequest.java:101)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.<init>(AbstractGoogleJsonClientRequest.java:57)
at com.google.api.services.drive.DriveRequest.<init>(DriveRequest.java:51)
at com.google.api.services.drive.Drive$Files$List.<init>(Drive.java:2914)
at com.google.api.services.drive.Drive$Files.list(Drive.java:2904)
at com.BoardiesITSolutions.PasswordManager.Classes.DriveSync$1.run(DriveSync.java:137)
at java.lang.Thread.run(Thread.java:818)
Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.common.primitives.UnsignedInteger" on path: DexPathList[[zip file "/data/app/com.BoardiesITSolutions.PasswordManager-1/base.apk"],nativeLibraryDirectories=[/vendor/lib, /system/lib]]
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
at java.lang.ClassLoader.loadClass(ClassLoader.java:511)
at java.lang.ClassLoader.loadClass(ClassLoader.java:469)
at com.google.api.client.util.Data.<clinit>(Data.java:81)
at com.google.api.client.util.FieldInfo.<init>(FieldInfo.java:131)
at com.google.api.client.util.FieldInfo.of(FieldInfo.java:104)
at com.google.api.client.util.ClassInfo.<init>(ClassInfo.java:174)
at com.google.api.client.util.ClassInfo.of(ClassInfo.java:92)
at com.google.api.client.util.GenericData.<init>(GenericData.java:79)
at com.google.api.client.util.GenericData.<init>(GenericData.java:61)
at com.google.api.client.googleapis.services.AbstractGoogleClientRequest.<init>(AbstractGoogleClientRequest.java:101)
at com.google.api.client.googleapis.services.json.AbstractGoogleJsonClientRequest.<init>(AbstractGoogleJsonClientRequest.java:57)
at com.google.api.services.drive.DriveRequest.<init>(DriveRequest.java:51)
at com.google.api.services.drive.Drive$Files$List.<init>(Drive.java:2914)
at com.google.api.services.drive.Drive$Files.list(Drive.java:2904)
at com.BoardiesITSolutions.PasswordManager.Classes.DriveSync$1.run(DriveSync.java:137)
at java.lang.Thread.run(Thread.java:818)
Suppressed: java.lang.ClassNotFoundException: com.google.common.primitives.UnsignedInteger
at java.lang.Class.classForName(Native Method)
at java.lang.BootClassLoader.findClass(ClassLoader.java:781)
at java.lang.BootClassLoader.loadClass(ClassLoader.java:841)
at java.lang.ClassLoader.loadClass(ClassLoader.java:504)
... 15 more
Caused by: java.lang.NoClassDefFoundError: Class not found using the boot class loader; no stack available
我认为我已经取得了一些进步,但我仍然遇到崩溃,尽管现在不同了。
下面是我的 gradle 文件现在的样子
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
apply plugin: 'com.android.application'
android {
compileOptions.encoding = 'ISO-8859-1'
compileSdkVersion 21
buildToolsVersion "21.1.2"
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'README'
exclude 'com.google.api.client.json.JsonFactory.class'
//exclude 'GwtCompatible.class'
/*exclude 'META-INF/DEPENDENCIES.txt'
exclude 'META-INF/DEPENDENCIES'
exclude 'META-INF/dependencies.txt'
exclude 'META-INF/license.txt'
exclude 'META-INF/LGPL2.1'
exclude 'META-INF/notice.txt'
exclude 'com.google.api.client.auth.oauth2.AuthorizationCodeFlow.class'
}
defaultConfig {
applicationId "com.BoardiesITSolutions.PasswordManager"
minSdkVersion 14
targetSdkVersion 21
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
repositories {
mavenLocal()
mavenCentral()
}
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.google.android.gms:play-services:7.0.0') {
exclude module: 'support-v4'
}
compile('com.google.http-client:google-http-client:1.18.0-rc') {
exclude group: 'xpp3'
exclude group: 'org.apache.httpcomponents'
exclude group: 'junit'
exclude group: 'com.google.android'
}
compile('com.google.http-client:google-http-client-jackson2:1.18.0-rc')
compile('com.android.support:appcompat-v7:21.0.0') {
exclude module: 'support-v4'
}
compile('com.BoardiesITSolutions:CritiMon:1.0') {
exclude module: 'support-v4'
}
compile('com.BoardiesITSolutions:Library:1.1') {
}
compile ('com.google.api-client:google-api-client-android:1.18.0-rc') {
}
compile ('com.google.http-client:google-http-client-gson:1.18.0-rc') {
}
}
下面是我的 libs 目录包含的内容的屏幕截图
我现在得到的错误是:
Process: com.BoardiesITSolutions.PasswordManager, PID: 25495
java.lang.NoSuchMethodError: No direct method <init>(Lcom/google/api/client/http/HttpTransport;Lcom/google/api/client/http/HttpRequestInitializer;Ljava/lang/String;Ljava/lang/String;Lcom/google/api/client/json/JsonObjectParser;Lcom/google/api/client/googleapis/services/GoogleClientRequestInitializer;Ljava/lang/String;Z)V in class Lcom/google/api/client/googleapis/services/json/AbstractGoogleJsonClient; or its super classes (declaration of 'com.google.api.client.googleapis.services.json.AbstractGoogleJsonClient' appears in /data/app/com.BoardiesITSolutions.PasswordManager-2/base.apk)
at com.google.api.services.drive.Drive.<init>(Drive.java:135)
at com.google.api.services.drive.Drive$Builder.build(Drive.java:6542)
at com.BoardiesITSolutions.PasswordManager.Classes.DriveSync.getDriveService(DriveSync.java:365)
at com.BoardiesITSolutions.PasswordManager.Classes.DriveSync.access$000(DriveSync.java:65)
at com.BoardiesITSolutions.PasswordManager.Classes.DriveSync$1.run(DriveSync.java:134)
at java.lang.Thread.run(Thread.java:818)
我根本看不出这有什么问题,我尝试的一切似乎都会导致同样的问题。就在代码执行崩溃时,一切都编译得很好。
它现在崩溃的行如下:
return new Drive.Builder(AndroidHttp.newCompatibleTransport(), new GsonFactory(), credential).build();
最佳答案
我终于找到了解决办法。下面是我的 libs 文件夹中的库的屏幕截图
下面是我的gradle文件
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.1.0'
}
}
apply plugin: 'com.android.application'
android {
compileOptions.encoding = 'ISO-8859-1'
compileSdkVersion 21
buildToolsVersion "21.1.2"
packagingOptions {
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/NOTICE'
exclude 'com.google.gson.JsonSerializer'
exclude 'constant-values.html'
exclude 'overview-summary.html'
exclude 'package-list'
exclude 'overview-tree.html'
exclude 'allclasses-frame.html'
exclude 'allclasses-noframe.html'
exclude 'stylesheet.css'
exclude 'index-all.html'
exclude 'deprecated-list.html'
exclude 'index.html'
exclude 'overview-frame.html'
exclude 'help-doc.html'
}
defaultConfig {
applicationId "com.BoardiesITSolutions.PasswordManager"
minSdkVersion 14
targetSdkVersion 21
multiDexEnabled = true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
repositories {
mavenLocal()
mavenCentral()
}
lintOptions {
checkReleaseBuilds false
abortOnError false
}
}
dependencies {
compile ('com.google.android.gms:play-services-ads:7.0.0') {
exclude module: 'support-v4'
}
compile ('com.google.android.gms:play-services-drive:7.0.0') {
exclude module: 'support-v4'
}
compile fileTree(dir: 'libs', include: ['*.jar'])
compile('com.google.android.gms:play-services:7.0.0') {
exclude module: 'support-v4'
}
compile 'com.google.guava:guava:17.0'
compile('com.android.support:appcompat-v7:21.0.0') {
exclude module: 'support-v4'
}
compile('com.BoardiesITSolutions:CritiMon:1.0') {
exclude module: 'support-v4'
}
compile('com.BoardiesITSolutions:Library:1.1') {
}
}
关于android - Google 云端硬盘调用导致 Android 应用程序崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29263688/
是否可以进行 Puppet 设置,在其中使用 JClouds 在云上实例化新虚拟机,然后通过 Puppet 定义和实现其配置(软件堆栈)? 或者 Puppet 的本质是否存在某些固有的因素阻碍其在 A
作者:京东零售 郑炳懿 前言: 当今世界,云计算技术在快速发展,不断为我们带来新的应用场景和解决方案。作为一名前端开发者,了解云技术并掌握如何在前端中应用它们是必不可少的。
我在我们的 iOS 通用应用程序中使用核心数据,并希望用户能够将其数据备份到我们的服务器。因此他们可以使用另一台设备登录并将该数据拉取到该设备。有人对此有什么建议吗?我想在服务器上分析数据,以便与我们
我在 Xcode 的验证过程中收到此错误,这让我抓狂。我花了几个小时试图修复它,但找不到解决方案。 我们拥有正确的分发证书、供应配置文件以及我能想到的与此相关的一切。我已经撤销并重建了我所有的项目,但
今天我对一个项目有了一个非常好的想法,不幸的是存在信息/经验障碍。 我基本上想要的是在云中运行游戏并将图像流式传输给用户。 我知道 ec2 可以选择使用 GPU,但它可能有错误的定价模型来满足我的需求
我是 Cloud Firestore 的新手(我们不都是这样吗?)并且我已经使用 Node.js 中的管理 SDK 向我的数据库添加了一些数据。它显示在控制台上,但在文档下显示“此文档不存在,它不会出
我有一个托管在 s3 存储桶上的静态 html 网站。我已经使用 let's encrypt 生成了一个免费的 ssl 证书,并将其导入到 ACM 中。 certbot --manual --serv
我一直在阅读 Cloudfront 文档,我想确保我的计划是合理的。我有一个后端 API,结构为 EC2 HTTP 服务器,内容经常更新(每秒几次更改)。这是我的理解: 我不应该将此 HTTP 服务器
我是一名优秀的程序员,十分优秀!