Не удалось запустить приложение с помощью OkHttp на эмуляторе «Android L»

Наше приложение использует последнюю версию OkHttp (2.0.0) + Okio (1.0.0) + Picasso (2.3.2), и я хотел попробовать его на новом эмуляторе «Android L» (Intel), и оно устанавливается, но когда загружая приложение, я получаю это:

06-27 09:47:16.214: E/AndroidRuntime(2815): FATAL EXCEPTION: main
06-27 09:47:16.214: E/AndroidRuntime(2815): java.lang.NoSuchMethodError: No static method source(Ljava/io/File;)Lokio/Source; in class Lokio/Okio; or its super classes (declaration of 'okio.Okio' appears in /system/framework/okhttp.jar)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at   com.squareup.okhttp.internal.DiskLruCache.readJournal(DiskLruCache.java:243)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.okhttp.internal.DiskLruCache.open(DiskLruCache.java:224)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.okhttp.Cache.<init>(Cache.java:146)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:74)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:51)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.OkHttpDownloader.<init>(OkHttpDownloader.java:41)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.Utils$OkHttpLoaderCreator.create(Utils.java:407)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.Utils.createDefaultDownloader(Utils.java:255)
06-27 09:47:16.214: E/AndroidRuntime(2815):     at com.squareup.picasso.Picasso$Builder.build(Picasso.java:596)

Это результат создания объекта Picasso с помощью Picasso.with(Context). Обратите внимание, что тот же код без каких-либо изменений прекрасно работает на предыдущем эмуляторе 4.4.2 (Intel).

Я не понимаю, откуда это (объявление okio.Okio появляется в /system/framework/okhttp.jar).

ОБНОВЛЕНИЕ

Я использую Eclipse Luna с последними инструментами Android SDK. Я также пытался выбрать банки OkHttp в заказе/экспорте, и ошибка сохраняется.

Я использовал проводник файлов DDMS и нашел файл okhttp.jar (309 байт) по пути /system/framework/okhttp.jar эмулятора. Возможно, это вызывает проблему, но почему бы ему не найти мой собственный файл okhttp.jar, предоставленный в APK?

Я временно загрузил упомянутый файл okhttp.jar по этой ссылке: http://www.filedropper.com/okhttp< /а>


person Alécio Carvalho    schedule 27.06.2014    source источник


Ответы (1)


Предварительный выпуск L неправильно упаковал Okio. Это уже было исправлено в мастере AOSP для следующего выпуска предварительной версии.

См. https://github.com/square/okhttp/issues/967 обходные пути, которые включают использование Proguard для переупаковки. Okio в вашем собственном приложении.

person Jake Wharton    schedule 27.06.2014
comment
Возможно, есть более простой способ сделать это, но вот мой обходной путь в файле build.gradle. gist.github.com/bbergler/5f1b2219e4edcd1a836b - person Bernd; 30.06.2014