Файл R не создается для тестов на Android при использовании AGP 4.2.0 или 7.0

#android-gradle-plugin #gradle-plugin #android-viewbinding

Вопрос:

Я попытался перейти на новый плагин Gradle, но, поскольку у нас есть несколько пользовательских макетов для тестов Android, он завершается ошибкой с сообщением «класс R не найден» для тестов Android. Я не смог найти ни одного источника, говорящего о каких-либо изменениях в поведении в этой области.

Ошибка выглядит так и, по-видимому, связана с изменением представления или просто с тем фактом, что класс R не сгенерирован.

 /pathToTheApp/build/generated/data_binding_base_class_source_out/debugAndroidTest/out/com/package1/test/databinding/CustomViewActivityBinding.java:12: error: cannot find symbol
import package.name.test.R;
                             ^
  symbol:   class R
  location: package package.name.test
 

Ответ №1:

У меня возникла эта проблема в наших тестах Android после обновления до AGP 7.0. Наш тестовый класс R не удалось найти. Мне удалось исправить это, продублировав testApplicationId в, казалось бы, новое testNamespace поле.

 android {

    testNamespace = "com.example.tests"

    defaultConfig {
        testApplicationId "com.example.tests"
    }

}
 

Я думаю, что это должно работать без него, так что, возможно, это ошибка плагина, но в документах говорится:

Пространство имен, используемое компонентами Android test и модульного тестирования для созданных классов R и BuildConfig