我正在使用Android Studio開發啓用GCM的應用程序,需要谷歌登錄並使用谷歌地圖。我也爲Google應用引擎引入了端點。現在我正在嘗試調用端點時收到noclass發生的錯誤。Android:爲AndroidUtils獲取NoClassDefFoundError
下面給出的是我的應用程序
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'
}
NOW gradle這個文件我,當我試圖訪問端點在ASyntask我得到noclassdeffound錯誤:
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);
}
});
確切的錯誤堆棧是如下:
java.lang.RuntimeException: An error occured while executingdoInBackground()
at android.os.AsyncTask$3.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$1.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世界的任何詳細的幫助將非常感激。
我看到您的應用程序啓用了multi dex:是否正確設置了multidex支持庫? Ddi在清單中設置了正確的Application類,或者您有自己的Application子類? – fasteque
@fasteque不,我沒有做任何與dex相關的清單。請建議在這裏執行什麼操作。 – SVJ
好的,你從別的地方得到這段代碼嗎?無論如何,你有兩種方法來檢查問題是由於多重dex:禁用它還是正確設置。對於後者,你可以看看這裏:http://developer.android.com/tools/building/multidex.html#mdex-gradle。 – fasteque