Android:获取 AndroidUtils 的 NoClassDefFoundError
Android : Getting NoClassDefFoundError for AndroidUtils
我正在使用 Android Studio 开发启用了 GCM 的应用程序,需要 google 登录并使用 google 地图。我还为 google 应用引擎合并了端点。现在我在尝试调用端点时遇到 noclassfound 错误。
下面给出的是我的 gradle 应用文件
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
dexOptions {
javaMaxHeapSize "4g"
}
}
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "my.application.com"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
incremental true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile project(path: ':backend', configuration: 'android-endpoints')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:percent:23.1.1'
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.google.android.gms:play-services:8.3.0'
}
现在,当我尝试访问 ASyntask 中的端点时,出现了 noclassdefound 错误:
Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(), null)
// options for running against local devappserver
// - 10.0.2.2 is localhost's IP address in Android emulator
// - turn off compression when running against local devappserver
.setRootUrl("http://192.168.1.4:8080/_ah/api")
.setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
@Override
public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
abstractGoogleClientRequest.setDisableGZipContent(true);
}
});
EXACT错误堆栈如下:
java.lang.RuntimeException: An error occured while executingdoInBackground()
at android.os.AsyncTask.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: **java.lang.NoClassDefFoundError: com.google.api.client.extensions.android.AndroidUtils**
at com.google.api.client.extensions.android.http.AndroidHttp.newCompatibleTransport(AndroidHttp.java:54)
我已经尝试了网上给出的大部分建议。
- 重建
- 删除了所有 gradle 缓存
- 重新启动工作室
由于我是 android 和 Java 世界的新手,任何详细的帮助将不胜感激。
您缺少包含以下内容的参考:
com.google.api.client.http.apache.ApacheHttpTransport
请添加:
compile 'com.google.api-client:google-api-client'
查看信息:https://github.com/google/google-api-java-client
非常重要:将项目与 gradle 个文件同步!
我还不清楚问题的根本原因。但问题已通过以下步骤解决:
- 删除了所有与 dex 相关的内容。
- 已从 gradle.
中删除 'com.google.android.gms:play-services:8.3.0'
添加了单独的依赖项,例如
'com.google.android.gms:play-services-plus:8.3.0'
'com.google.android.gms:play-services-maps:8.3.0'
'com.google.android.gms:play-services-location:8.3.0'
还按照@Elenasys 的建议添加了依赖项。但这并没有解决问题。
重建整个应用程序。
我正在使用 Android Studio 开发启用了 GCM 的应用程序,需要 google 登录并使用 google 地图。我还为 google 应用引擎合并了端点。现在我在尝试调用端点时遇到 noclassfound 错误。
下面给出的是我的 gradle 应用文件
apply plugin: 'com.android.application'
apply plugin: 'com.google.gms.google-services'
android {
dexOptions {
javaMaxHeapSize "4g"
}
}
compileSdkVersion 23
buildToolsVersion "23.0.2"
defaultConfig {
applicationId "my.application.com"
minSdkVersion 15
targetSdkVersion 23
versionCode 1
versionName "1.0"
multiDexEnabled true
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
incremental true
}
}
dependencies {
compile 'com.android.support:multidex:1.0.0'
compile fileTree(include: ['*.jar'], dir: 'libs')
compile 'com.facebook.android:facebook-android-sdk:4.6.0'
compile project(path: ':backend', configuration: 'android-endpoints')
compile 'com.android.support:appcompat-v7:23.1.1'
compile 'com.android.support:design:23.1.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.android.support:percent:23.1.1'
compile 'com.google.android.gms:play-services-identity:8.3.0'
compile 'com.google.android.gms:play-services-gcm:8.3.0'
compile 'com.google.android.gms:play-services:8.3.0'
}
现在,当我尝试访问 ASyntask 中的端点时,出现了 noclassdefound 错误:
Registration.Builder builder = new Registration.Builder(AndroidHttp.newCompatibleTransport(),
new AndroidJsonFactory(), null)
// options for running against local devappserver
// - 10.0.2.2 is localhost's IP address in Android emulator
// - turn off compression when running against local devappserver
.setRootUrl("http://192.168.1.4:8080/_ah/api")
.setGoogleClientRequestInitializer(new GoogleClientRequestInitializer() {
@Override
public void initialize(AbstractGoogleClientRequest<?> abstractGoogleClientRequest) throws IOException {
abstractGoogleClientRequest.setDisableGZipContent(true);
}
});
EXACT错误堆栈如下:
java.lang.RuntimeException: An error occured while executingdoInBackground()
at android.os.AsyncTask.done(AsyncTask.java:299)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
at java.util.concurrent.FutureTask.run(FutureTask.java:239)
at android.os.AsyncTask$SerialExecutor.run(AsyncTask.java:230)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
at java.lang.Thread.run(Thread.java:856)
Caused by: **java.lang.NoClassDefFoundError: com.google.api.client.extensions.android.AndroidUtils**
at com.google.api.client.extensions.android.http.AndroidHttp.newCompatibleTransport(AndroidHttp.java:54)
我已经尝试了网上给出的大部分建议。 - 重建 - 删除了所有 gradle 缓存 - 重新启动工作室
由于我是 android 和 Java 世界的新手,任何详细的帮助将不胜感激。
您缺少包含以下内容的参考:
com.google.api.client.http.apache.ApacheHttpTransport
请添加:
compile 'com.google.api-client:google-api-client'
查看信息:https://github.com/google/google-api-java-client
非常重要:将项目与 gradle 个文件同步!
我还不清楚问题的根本原因。但问题已通过以下步骤解决:
- 删除了所有与 dex 相关的内容。
- 已从 gradle. 中删除 'com.google.android.gms:play-services:8.3.0'
添加了单独的依赖项,例如 'com.google.android.gms:play-services-plus:8.3.0' 'com.google.android.gms:play-services-maps:8.3.0' 'com.google.android.gms:play-services-location:8.3.0'
还按照@Elenasys 的建议添加了依赖项。但这并没有解决问题。
重建整个应用程序。