ArrayIndexOutOfBoundsException - Модификация 2.4.0 Вызов - PullRequest
0 голосов
/ 11 сентября 2018

Я пытаюсь нажать POST, используя retrofit.На некоторых устройствах работает нормально, но вылетает на Nexus 5 с версией ОС 6.0.1.

Но теперь я сталкиваюсь с исключением

art / runtime / thread.cc: 1344] Создание нового исключения 'length = 1903;index = 3147 'с неожиданным ожидающим исключением: java.lang.ArrayIndexOutOfBoundsException: length = 1903;index = 3147

Я знаю, что на SO столько вопросов, но для меня ничего не помогает.Я попробовал все согласно данным постам, как это , это и это и т. Д. Некоторые парни решили эту проблему, отключив Instant Run .Но это не работает для меня.

Я использую эти зависимости для модернизации:

implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'

Это мой файл уровня проекта:

classpath 'com.android.tools.build:gradle:3.1.4'
classpath 'com.google.gms:google-services:4.0.1'

Это мойВызов API, где я получаю ArrayIndexOutOfBoundsException

APIClient.getAPIService().getEffects(Constants.apiKey).enqueue(//callback);

Это мой интерфейс API, в котором объявлен вызов:

@FormUrlEncoded
@POST("/getEffects")
Call<GetEffectResp> getEffects(@Field("apikey") String apikey);

Если кто-то разрешит это, пожалуйста, помогите мне разобраться.

TIA

Ответы [ 2 ]

0 голосов
/ 17 января 2019

Попробуйте отключить мгновенный запуск или используйте последнюю версию Gradle Plugin

0 голосов
/ 11 сентября 2018

Я также столкнулся с той же проблемой.В моем случае я решаю это, используя JsonElement вместо Pojo class .

Ниже приведен обратный вызов.Вы можете попробовать это ...

APIClient.getAPIService().getEffectsInternal(Constants.apiKey).enqueue(new Callback<JsonElement>() {
                @Override
                public void onResponse(Call<JsonElement> call, Response<JsonElement> response) {

                   Log.e("",""+response.body());


                }

                @Override
                public void onFailure(Call<JsonElement> call, Throwable t) {

                }
            });

Я надеюсь, что это работает для вас.

...