В последнее время я пытаюсь изменить мультимодульное приложение для Android, чтобы использовать новый плагин com.android.dynamic-feature
.Частично это изменение выводит мои инструментальные тесты из базового модуля и позволяет им тестировать несколько функций.Плагин com.android.test
, казалось, позволил мне сделать именно это.
Я должен был заметить, что тот же тест, который отлично работает при сборке из набора androidTest
источника (используя app:assembleDebugAndroidTest
) вызывает странную ошибку при сборке из плагина com.android.test
(используя app-tests:assemble
).В частности, существует проблема с AndroidX AppCompat, когда тест запускает Activity:
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
Я создал этот минимальный образец проект, где проблема может быть воспроизведена (шаги в readme).
Я распознал ошибку, указанную выше, когда возникла реальная проблема с темой.Тем не менее, тема установлена правильно, и создание Activity отлично работает во время «обычных» инструментальных тестов и при ручном запуске приложения.Приложение и тесты выполняются на устройстве API 28.
При настройке модуля :app-tests
я следовал инструкциям и получил config :
apply plugin: 'com.android.test'
android {
compileSdkVersion rootProject.compileSdkVersion
buildToolsVersion rootProject.buildToolsVersion
defaultConfig {
minSdkVersion rootProject.minSdkVersion
targetSdkVersion rootProject.targetSdkVersion
testApplicationId 'biz.laenger.android.foo.app.test'
testInstrumentationRunner 'biz.laenger.android.foo.app.FooTestApplicationRunner'
}
targetProjectPath ':app'
}
Я также сравнил оба тестовых APK из «обычных» инструментальных тестов и из com.android.test
и заметил следующее:
- Манифесты выглядят почти одинаково
com.android.test
APK содержит гораздо больше классов, включая большинство / все :app
зависимостей.Это кажется ненужным.
Кто-нибудь сталкивался с этой проблемой или имеет решение этой проблемы?