2

我们的应用程序使用最新版本的 OkHttp (2.0.0) + Okio (1.0.0) + Picasso (2.3.2),我想在新的“Android L”模拟器(英特尔)上试用它,它被安装了,但是当加载应用程序我得到这个:

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 工具一起使用。我还尝试在 Order/Export 中选择 OkHttp jar,但错误仍然存​​在。

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

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

4

1 回答 1

6

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

有关解决方法,请参阅https://github.com/square/okhttp/issues/967,其中包括使用 Proguard 在您自己的应用程序中重新打包 Okio。

于 2014-06-27T16:27:30.207 回答