1

У меня есть приложение, которое отлично работает. Однако, когда я начал использовать CompileSDKVersion 23 (я переместился с 22, потому что панель инструментов не отображалась в Lollipop). Теперь он работает на устройствах Lollipop, но падает, когда я запускаю Kitkat.Retrofit + SimpleXMLConverter работает на Lollipop, а не на Kitkat

Ошибка:

java.lang.NoClassDefFoundError: retrofit.converter.SimpleXMLConverter 
     at com.app.appname.api.AppAPI.<init>(AppAPI.java:80) 
     at com.app.appname.api.AppAPI.getInstance(AppAPI.java:95) 
     at com.app.appname.broker.DataBroker.<init>(DataBroker.java:31) 
     at com.app.appname.broker.DataBroker.init(DataBroker.java:35) 
     at com.app.appname.AppApplication.onCreate(AppApplication.java:18) 
     at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1007) 
     at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4417) 
     at android.app.ActivityThread.access$1500(ActivityThread.java:139) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1260) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:136) 
     at android.app.ActivityThread.main(ActivityThread.java:5105) 
     at java.lang.reflect.Method.invokeNative(Native Method) 
     at java.lang.reflect.Method.invoke(Method.java:515) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:792) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:608) 
     at dalvik.system.NativeStart.main(Native Method) 

Я пытаюсь инициализировать Дооснащаемый API:

mAdapter = new RestAdapter.Builder() 
      .setEndpoint(...) 
      .setConverter(new SimpleXMLConverter()) 
      .setLogLevel(RestAdapter.LogLevel.FULL) 
      .build(); 

Мои Gradle выглядит следующим образом:

apply plugin: 'com.android.application' 

repositories { 
    mavenCentral() 

    maven { 
     url "https://raw.github.com/embarkmobile/zxing-android-minimal/mvn-repo/maven-repository/" 
    } 
} 

android { 
    compileSdkVersion 23 
    buildToolsVersion "23.0.1" 

    defaultConfig { 
     applicationId "com.app.appname" 
     minSdkVersion 15 
     targetSdkVersion 23 
     versionCode 1 
     versionName "0.0.0.1" 
     multiDexEnabled true 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 

    lintOptions { 
     checkReleaseBuilds false 
     // Or, if you prefer, you can continue to check for errors in release builds, 
     // but continue the build even when errors are found: 
     abortOnError false 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile 'com.android.support:support-v4:23.0.1' 
    compile 'com.android.support:support-annotations:23.0.1' 
    compile 'com.android.support:appcompat-v7:23.0.1' 
    compile 'com.android.support:design:23.0.1' 

    compile 'com.squareup.okhttp:okhttp-urlconnection:2.5.0' 
    compile 'com.squareup.retrofit:retrofit:1.9.0' 
    compile('com.squareup.retrofit:converter-simplexml:1.9.0'){ 
     exclude module: 'stax' 
     exclude module: 'stax-api' 
     exclude module: 'xpp3' 
    } 

    compile 'com.google.android.gms:play-services:8.1.0' 

    compile 'com.google.code.gson:gson:2.3.1' 

    compile 'com.squareup.picasso:picasso:2.5.2' 

    compile 'com.facebook.android:facebook-android-sdk:4.1.0' 

    compile 'com.google.zxing:core:2.2' 
    compile 'com.embarkmobile:zxing-android-minimal:[email protected]' 
} 

Я пробовал:

  1. Добавления JCenter() в репо
  2. Включая GSon библиотек
  3. Moving всех мероприятий в единый пакет и задающее имя пакета в проявленном
  4. Нахождение о аннотациях (я не могу найти его в настройках - > Build -> Compiler)
  5. Развертывание на другом устройстве с тем же уровнем API (4.2.2)

ответ

2

Я использую почти идентичную установку на ваш, в том числе:

дооснащения 1.9.0
SimpleXMLConverter 1.9.0
compileSdkVersion 23
targetSdkVersion 23
buildToolsVersion 23.0.1

И мое приложение работает нормально, все, вплоть до уровня API 16 (мой минимум).

Основные отличия я могу видеть, что может вызвать проблемы являются:

1) За исключением STAX, StAX-API и xpp3 от SimpleXMLConverter. Я помню, как возился, исключая их, когда я начал использовать его, так как у меня были некоторые проблемы, но мне больше не нужно их исключать, возможно, попробуйте удалить исключения и посмотреть?

2) Включение Okhttp-urlconnection. Я знаю, что Retrofit автоматически будет использовать это, если он включен, может вызвать проблемы (просто догадка).

3) Мультимедиа включена. Я сам не обманывал это, но у меня есть проблемы с чтением здесь, на StackOverflow, если это возможно, попробуйте отключить его и посмотреть? Возможно, лучше включить minify вместо запуска multidex, чтобы удалить некоторые ненужные функции.

+0

Отличный материал спасибо! Я думал, что я единственный на планете, все еще использующий REST + XML! Мне просто нужно было выполнить шаги 2 + 3 (мой проект не будет строиться без шага 1). Я очень ценю ваш ответ! –