BuildConfigField R.style.AKТема недоступна в классе androidTest BuildConfig.java - PullRequest
0 голосов
/ 16 мая 2018

Мой проект имеет разные типы сборки, то есть отладку, бета-версию и производство, а также разные варианты продукта, то есть QA и интеграцию. Я определил

buildConfigField 'int', 'APP_THEME', 'R.style.AKTheme'

в productFlavors есть отдельная тема для каждого аромата. Сгенерированный BuildConfig.java для исходного набора приложений имеет APP_THEME field, и он работает как положено.

Недавно я начал писать инструментальные тесты для своего приложения. Когда я пытаюсь запустить эти тесты, Android-студия выдает ошибку, что не может разрешить AKTheme , т.е.

final int APP_THEME = R.style.AKTheme в сгенерированном BuildConfig.java для набора тестовых источников.

Похоже, что R.style.AKTheme недоступен для сгенерированного файла BuildConfig.java (набор тестовых источников). Я искал по интернету, но не нашел никакой помощи.

1 Ответ

0 голосов
/ 16 мая 2018

R.style.AKTheme является ссылкой, а не значением, в то время как в BuildConfig вы можете использовать только значения.
Есть несколько способов достичь желаемого:

  1. Использовать имя строкистиля в BuildConfig:
    buildConfigField 'String', 'APP_THEME', '"AKTheme"'
    и затем в коде для получения идентификатора стиля:
    int style = context.getResources().getIdentifier(BuildConfig.APP_THEME, "style", context.getPackageName());
    Теперь вы можете использовать style.
  2. Вы можете использовать разные наборы исходных кодов.
    Если вы используете разные типы сборок, вы можете создать каталог для этого типа сборки и поместить любые другие ресурсы специально для этого типа сборки в этот каталог.Каталог должен быть создан в том же каталоге, что и каталог main sources, и должен называться точно так же, как buildType.Детали: https://developer.android.com/studio/build/build-variants
...