我有一个包含多个模块的项目,在更新到Gradle Plugin 3.4.0
and之后Gradle 5.1.1
,其他一切似乎都可以正常工作,但是Espresso
在尝试运行测试时,测试模块会立即崩溃:
android.content.res.Resources$NotFoundException: Drawable com.example.foo:dimen/activity_default_margin with resource ID #0x7f070059
Caused by: android.content.res.Resources$NotFoundException: Resource "com.example.foo:dimen/activity_default_margin" (7f070059) is not a Drawable (color or path): TypedValue{t=0x5/d=0x3201 a=2 r=0x7f070059}
at android.content.res.ResourcesImpl.loadDrawableForCookie(ResourcesImpl.java:786)
at android.content.res.ResourcesImpl.loadDrawable(ResourcesImpl.java:631)
at android.content.res.Resources.getDrawableForDensity(Resources.java:888)
at android.content.res.Resources.getDrawable(Resources.java:827)
at android.content.Context.getDrawable(Context.java:626)
at android.support.v4.content.ContextCompat.getDrawable(ContextCompat.java:463)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:203)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:191)
at android.support.v7.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:753)
at android.support.v7.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:196)
at android.support.v7.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at android.support.v7.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:260)
at android.support.v7.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
at android.support.v7.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
at android.support.v7.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at com.example.foo.BaseActivity.onCreate(BaseActivity.java:160)
什么可能导致这种情况?我首先怀疑它是从 3.4.0 开始默认启用 R8,但禁用它根本没有帮助。我已经多次清理项目并使缓存无效,但没有任何帮助。
正如它在堆栈跟踪中所说的resource ID
那样,它实际上是一个维度资源,并且它仅用于甚至在相关测试中未使用的布局中。崩溃立即发生在测试活动的onCreate()
.