android - 无法在 'Android L' 模拟器上使用 OkHttp 运行应用程序

标签 android android-5.0-lollipop picasso okhttp okio

我们的应用程序使用最新版本的 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.with(Context) 创建 Picasso 对象。请注意,相同的代码无需任何更改,在之前的模拟器 4.4.2 (Intel) 上运行良好。

我不明白这个(“okio.Okio”声明出现在/system/framework/okhttp.jar 中) 来自何处。

更新

我正在使用 Eclipse Luna 和最新的 Android SDK 工具。我还尝试在订单/导出中选择 OkHttp jar,但错误仍然存​​在。

我使用DDMS文件资源管理器,在模拟器的路径/system/framework/okhttp.jar中找到了一个okhttp.jar(309字节)。也许这是导致问题的原因,但为什么它不查找 APK 中提供的我自己的 okhttp.jar 呢?

我暂时将提到的“okhttp.jar”文件上传到此链接:http://www.filedropper.com/okhttp

最佳答案

L 预览版未正确打包 Okio。这已在 AOSP master 的下一版本预览版中修复。

参见https://github.com/square/okhttp/issues/967解决方法包括使用 Proguard 将 Okio 重新打包到您自己的应用程序中。

关于android - 无法在 'Android L' 模拟器上使用 OkHttp 运行应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24453957/

相关文章:

java - 如何解决 java.net.MalformedURLException : Protocol not found: 9 in android

java.lang.IndexOutOfBoundsException : Invalid index 13, 大小为 13

android - Android 上的移动网站宽度问题

Android Studio 不渲染布局预览

android - 找不到方法 onClick_Foo(View) - 第一次在 Android Lollipop 上运行

android - flutter : Picasso or Universal Image loader equivalent

android - picasso 可以帮我排队吗?

java - Bad Base - 尝试发送图像时出现 64 错误

android - Lollipop : draw behind statusBar with its color set to transparent

java - Android:如何将图像插入到编辑文本中