好的,所以我在我的项目中使用了Retrofit,OkHttp和Picasso。 以下是我在项目中的相关依赖项:
compile ('com.squareup.retrofit:retrofit:2.0.0-beta2')
compile ('com.squareup.retrofit:converter-gson:2.0.0-beta2')
compile ('com.squareup.okhttp:okhttp-urlconnection:2.5.0')
compile ('com.squareup.picasso:picasso:2.5.2')
compile 'com.squareup:otto:1.3.6'
compile ('com.squareup.okhttp:okhttp:2.5.0')
项目构建但是当它启动时,它会在Android版本< 5.0上崩溃 这是我在日志中得到的:
01-28 18:03:54.103 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'android.app.AppOpsManager', referenced from method com.google.android.gms.common.GooglePlayServicesUtil.zzb
01-28 18:03:54.543 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'retrofit.Retrofit$Builder', referenced from method by.set.pibox.helpers.ApiHelper.getInstance
01-28 18:03:54.568 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'okio.Buffer', referenced from method com.squareup.okhttp.internal.Util.toHumanReadableAscii
01-28 18:03:54.648 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'okio.Buffer', referenced from method by.set.pibox.helpers.ApiHelper$1.intercept
01-28 18:03:54.658 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'com.squareup.okhttp.internal.DiskLruCache$4', referenced from method com.squareup.okhttp.internal.DiskLruCache.<clinit>
01-28 18:03:54.678 20816-20816/by.set.pibox E/dalvikvm: Could not find class 'com.squareup.okhttp.internal.DiskLruCache$2', referenced from method com.squareup.okhttp.internal.DiskLruCache.newJournalWriter
01-28 18:03:58.888 20816-20816/by.set.pibox E/CrashlyticsCore: Failed to execute task.
java.util.concurrent.TimeoutException
at java.util.concurrent.FutureTask.get(FutureTask.java:173)
at com.crashlytics.android.core.CrashlyticsExecutorServiceWrapper.executeSyncLoggingException(CrashlyticsExecutorServiceWrapper.java:44)
at com.crashlytics.android.core.CrashlyticsUncaughtExceptionHandler.uncaughtException(CrashlyticsUncaughtExceptionHandler.java:235)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:693)
at java.lang.ThreadGroup.uncaughtException(ThreadGroup.java:690)
at dalvik.system.NativeStart.main(Native Method)
01-28 18:03:59.293 20816-20816/by.set.pibox E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
at by.set.pibox.helpers.HelperFactory.setHelper(HelperFactory.java:112)
at by.set.pibox.PiboxApplication.onCreate(PiboxApplication.java:30)
at by.set.pibox.PiboxApplication_.onCreate(PiboxApplication_.java:32)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5056)
at android.app.ActivityThread.access$1300(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.ExceptionInInitializerError
at com.squareup.okhttp.Cache.<init>(Cache.java:172)
at com.squareup.okhttp.Cache.<init>(Cache.java:168)
at by.set.pibox.helpers.ApiHelper.<clinit>(ApiHelper.java:111)
at by.set.pibox.helpers.HelperFactory.setHelper(HelperFactory.java:112)
at by.set.pibox.PiboxApplication.onCreate(PiboxApplication.java:30)
at by.set.pibox.PiboxApplication_.onCreate(PiboxApplication_.java:32)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5056)
at android.app.ActivityThread.access$1300(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NoClassDefFoundError: com.squareup.okhttp.internal.DiskLruCache$4
at com.squareup.okhttp.internal.DiskLruCache.<clinit>(DiskLruCache.java:809)
at com.squareup.okhttp.Cache.<init>(Cache.java:172)
at com.squareup.okhttp.Cache.<init>(Cache.java:168)
at by.set.pibox.helpers.ApiHelper.<clinit>(ApiHelper.java:111)
at by.set.pibox.helpers.HelperFactory.setHelper(HelperFactory.java:112)
at by.set.pibox.PiboxApplication.onCreate(PiboxApplication.java:30)
at by.set.pibox.PiboxApplication_.onCreate(PiboxApplication_.java:32)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1012)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5056)
at android.app.ActivityThread.access$1300(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1432)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:158)
at android.app.ActivityThread.main(ActivityThread.java:5751)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1083)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:850)
at dalvik.system.NativeStart.main(Native Method)
我已经搜索了这个错误,并且发现okhttp使用的是okio: Importing Picasso and OkHttp in Eclipse
但是当我添加okio jar时,我在构建app时得到了这个:
Error:Execution failed for task ':pibox:transformClassesWithJarMergingForDebug'.
> com.android.build.api.transform.TransformException: java.util.zip.ZipException: duplicate entry: okio/AsyncTimeout$1.class
有人请求帮助,这真的让我疯狂
答案 0 :(得分:3)
你有重复的条目:
错误:java.util.zip.ZipException:重复条目
这里有类似的问题:Error: java.util.zip.ZipException: duplicate entry
解决了在依赖项上添加exclude
的问题。我无法确切地告诉您哪个依赖项需要添加exclude
语句,但您可以逐个尝试。
compile ('com.squareup.retrofit:retrofit:2.0.0-beta2') {
exclude module: 'com.squareup.okio'
}
compile ('com.squareup.retrofit:converter-gson:2.0.0-beta2') {
exclude module: 'com.squareup.okio'
}
compile ('com.squareup.okhttp:okhttp-urlconnection:2.5.0') {
exclude module: 'com.squareup.okio'
}
...
我希望它有所帮助!!
答案 1 :(得分:0)
最终证明是一个multidex问题,通过添加multidex的支持库来解决 https://developer.android.com/tools/support-library/features.html#multidex
感谢各位帮忙。