在最后一阵子,我试图更改一个多模块Android应用程序以使用新的com.android.dynamic-feature插件。这项更改的一部分是将我的仪器测试移出了基本模块,并让他们测试了多个功能。该com.android.test 插件似乎使我能够做到这一点。
我必须注意到,虽然从androidTest源集(使用app:assembleDebugAndroidTest)构建时运行正常的同一测试会在从com.android.test插件(使用app-tests:assemble)构建时导致奇怪的错误。特别是,当测试启动Activity时,AndroidX AppCompat存在问题:
Caused by: java.lang.IllegalStateException: This app has been built with an incorrect configuration. Please configure your build for VectorDrawableCompat.
at androidx.appcompat.widget.AppCompatDrawableManager.checkVectorDrawableSetup(AppCompatDrawableManager.java:756)
at androidx.appcompat.widget.AppCompatDrawableManager.getDrawable(AppCompatDrawableManager.java:196)
at androidx.appcompat.widget.TintTypedArray.getDrawableIfKnown(TintTypedArray.java:86)
at androidx.appcompat.app.AppCompatDelegateImpl.<init>(AppCompatDelegateImpl.java:260)
at androidx.appcompat.app.AppCompatDelegate.create(AppCompatDelegate.java:182)
at androidx.appcompat.app.AppCompatActivity.getDelegate(AppCompatActivity.java:520)
at androidx.appcompat.app.AppCompatActivity.onCreate(AppCompatActivity.java:71)
at biz.laenger.android.foo.app.presentation.main.MainActivity.onCreate(MainActivity.kt:28)
at android.app.Activity.performCreate(Activity.java:7009)
at android.app.Activity.performCreate(Activity.java:7000)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214)
at androidx.test.runner.MonitoringInstrumentation.callActivityOnCreate(MonitoringInstrumentation.java:674)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731)
... 9 more
Run Code Online (Sandbox Code Playgroud)
我创建了这个最小的示例项目,可以在其中复制问题(自述文件中的步骤)。
从主题出现实际问题时,我发现了上述错误。但是,正确设置了主题,并且在“常规”测试测试和手动启动应用程序时可以很好地进行“活动创建”。该应用程序和测试在API 28设备上运行。
在配置:app-tests模块时,我按照说明进行操作并最终得到以下配置:
Caused by: java.lang.IllegalStateException: This app has been …Run Code Online (Sandbox Code Playgroud)