1

我正在使用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世界的任何詳細的幫助將非常感激。

+0

我看到您的應用程序啓用了multi dex:是否正確設置了multidex支持庫? Ddi在清單中設置了正確的Application類,或者您有自己的Application子類? – fasteque

+0

@fasteque不,我沒有做任何與dex相關的清單。請建議在這裏執行什麼操作。 – SVJ

+0

好的,你從別的地方得到這段代碼嗎?無論如何,你有兩種方法來檢查問題是由於多重dex:禁用它還是正確設置。對於後者,你可以看看這裏:http://developer.android.com/tools/building/multidex.html#mdex-gradle。 – fasteque

回答

0

我仍然不清楚問題的根源。但問題通過使用以下步驟解決:

  1. 刪除所有dex相關的東西。
  2. 從gradle中刪除了'com.google.android.gms:play-services:8.3.0'
  3. 新增個人依賴性像 'com.google.android.gms:發揮服務加:8.3.0' 'com.google.android.gms:發揮服務,地圖:8.3.0' 「 com.google.android.gms:play-services-location:8.3.0'

  4. 還添加了@Elenasys建議的依賴項。但這並不能解決這個問題。

  5. 重建整個應用程序。

+0

SVJ,你是否嘗試過使用「與gradle文件同步項目」?,我認爲這就足夠了。 – Jorgesys

+0

@Elenasys我曾多次嘗試過。但是這沒有幫助。 – SVJ

1

你缺少一個包含一個參考:

com.google.api.client.http.apache.ApacheHttpTransport 

請加:

compile 'com.google.api-client:google-api-client' 

檢查的信息:https://github.com/google/google-api-java-client

和非常重要的:同步項目,gradle這個文件!

+0

嘗試了您的建議,但結果相同。 – SVJ

相關問題