gpt4 book ai didi

gradle - 如何使用 guava 依赖项和 Espresso 配置应用程序

转载 作者:行者123 更新时间:2023-12-03 05:17:21 25 4
gpt4 key购买 nike

我将 Guava 作为应用程序依赖项并在仪器测试中使用 Espresso。
由于 Espresso 随附 com.google.guava:guava:16.0 ,我有 guava在应用程序依赖项中,我必须处理重复的依赖项问题。

Jake Wharton 在 Double Espresso 中指出我可以通过执行以下操作来解决重复的依赖问题:

compile 'com.google.guava:guava:17.0'
androidTestCompile('com.jakewharton.espresso:espresso:1.1-r3') {
exclude group: 'com.squareup.dagger'
exclude group: 'com.google.guava'
}

但是,使用该行时,我遇到了许多以下错误:
java.lang.NoSuchMethodError: com.google.common.base.Optional.get
at com.google.android.apps.common.testing.ui.espresso.base.ThreadPoolExecutorExtractor.getAsyncTaskThreadPool(ThreadPoolExecutorExtractor.java:50)

似乎 Espresso 没有找到 Guava 依赖项。
当我尝试
compile 'com.google.guava:guava:17.0'
androidTestCompile ('com.jakewharton.espresso:espresso:1.1-r2') {
exclude group: 'com.squareup.dagger'
exclude group: 'com.google.guava'
}
androidTestCompile('com.google.guava:guava:17.0')

现在 java.lang.NoSuchMethodError: com.google.common.base.Optional.get从 espresso 代码中消失了,但是当 Instrumentation 测试命中使用 guava 方法之一的应用程序代码时,我仍然收到以下错误: java.lang.NoClassDefFoundError
当我摆脱 androidTestCompile('com.google.guava:guava:17.0') 时会发生此错误也是。

我试过 AndroidTestProvided用 Guava ,没有运气。

当仪器测试使用 Guava 方法命中应用程序代码时,为什么它找不到 Guava 的路径,我已经没有想法了。

这是一个堆栈跟踪
Caused by: java.lang.NoClassDefFoundError: com/themis/clioAndroid/activity/calendar/calendarEntry/CalendarEntryListAdapter$1
at com.themis.clioAndroid.activity.calendar.calendarEntry.CalendarEntryListAdapter.<clinit>(CalendarEntryListAdapter.java:112)
... 34 more
Caused by: java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation
at dalvik.system.DexFile.defineClass(Native Method)
at dalvik.system.DexFile.loadClassBinaryName(DexFile.java:211)
at dalvik.system.DexPathList.findClass(DexPathList.java:315)
at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:58)
at java.lang.ClassLoader.loadClass(ClassLoader.java:501)
at java.lang.ClassLoader.loadClass(ClassLoader.java:461)
... 35 more

它击中的地方 new Ordering<SomeClass>()使用 com.google.common.collect.Ordering .

任何反馈表示赞赏。

最佳答案

看起来Proguard很痛苦。

Proguard 或 Android gradle 插件的设置方式不会导致处理 espresso 库非常智能。添加

-keep class com.google.common.** { *; }

给您的 proguard-rules.txt
或者,如果您使用 proguard 来绕过 65K 方法限制,请考虑切换到 MultiDex support package .

关于gradle - 如何使用 guava 依赖项和 Espresso 配置应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24963825/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com