1

Я использую Android Studio для разработки приложения с включенным GCM, требуется Google Войти и использует карты Google. Я также включил конечные точки для движка Google. Теперь я получаю ошибку noclassfound, когда пытаюсь вызвать конечные точки.Android: Получение NoClassDefFoundError для AndroidUtils

Ниже приведены мой 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 я получаю 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); 
        } 
       }); 

EXACT стек ошибок является, как следует:

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) 

Я пробовал большинство предложений, приведенных в Интернете. - Rebuild - Удаляется все Gradle кэша - перезапущена Студия

Поскольку я новичок в андроид и Java мир любая подробная помощь будет оценен.

+0

Я вижу, что у вас есть много делений для вашего приложения: правильно ли установлена ​​библиотека поддержки многопользователей? Ddi вы установили правильный класс приложения в манифест или у вас есть собственный подкласс приложения? – fasteque

+0

@fasteque Нет, я ничего не сделал для манифеста, связанного с dex. Пожалуйста, представьте, какое действие нужно выполнить здесь. – SVJ

+0

Хорошо, вы получили этот код откуда-то еще? Во всяком случае, у вас есть два способа проверить, вызвана ли проблема из-за множественных dex: отключите его или правильно настройте. Для последнего вы можете посмотреть здесь: http://developer.android.com/tools/building/multidex.html#mdex-gradle. – fasteque

ответ

0

Я до сих пор не понимаю основную причину проблемы. Но проблема была решена с помощью следующих шагов:

  1. Удалено все связанные с dex вещи.
  2. Убрано 'com.google.android.gms: play-services: 8.3.0' от gradle.
  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, вы пытались использовать «Sync project with gradle files»?, Я думаю, этого будет достаточно. – 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

Смежные вопросы