Использование цветов, определенных в базовом модуле из функционального модуля, не выполняется после восстановления Android Instant App

У меня есть base модуль и модуль функций, называемый модулем query в моем проекте Instant App.

В моем QueryActivity query QueryActivity используются цвета, которые находятся в base модуле.

QueryActivity.kt :

 @ColorInt val textColor: Int = when (resultCode) { FetchAddressIntentService.RESULT_SUCCESS -> android.R.color.white FetchAddressIntentService.RESULT_FAILURE -> R.color.accent // this color is inside the base module else -> R.color.accent // this color is inside the base module } 

Если я попытаюсь run проект, он отлично работает без каких-либо проблем. Но если я rebuild проект, это даст мне ошибку:

 ../net/epictimes/uvindex/query/QueryActivity.kt Error:(133, 63) Unresolved reference: color Error:(134, 27) Unresolved reference: color 

Указывая на эти значения цвета.

Я решил это, добавляя еще colors.xml файл colors.xml внутри модуля query и ссылаясь на base цвета. Он работал нормально. Вы можете увидеть diff в этой фиксации .

 <color name="query_location_success_text">@android:color/white</color> <color name="query_location_fail_text">@color/accent</color> 

Сейчас это работает, но я не знаю, почему. Правильно ли это? Мой вопрос заключается не в том, что ресурсы внутри base модуля доступны из модулей функций?

Версии:

Android target / compile SDK: 26

Котлин: 1.1.50

Мгновенные приложения: 1.1.0

Это мой проект с открытым исходным кодом, здесь вы можете увидеть весь проект.

спасибо

    Да, ресурс внутри базового модуля доступен из модулей функций, когда вы ссылаетесь на него с полным именем (имя_пакета.R.resource_name).

    У базового и дочернего модулей есть разные имена пакетов (ваше базовое имя пакета функций – net.epictimes.uvindex , а имя пакета вашего модуля – net.epictimes.uvindex.query ).

    Каждый пакет содержит свой собственный набор ресурсов, а их идентификаторы ресурсов собираются в отдельных пакетах R во время компиляции:

    • net.epictimes.uvindex.R – для вашего базового функционального модуля
    • net.epictimes.uvindex.query.R – для вашего функционального модуля

    Чтобы получить доступ к цветному ресурсу «акцент» базовой функции из вашего функционального модуля «запрос», используйте идентификатор net.epictimes.uvindex.R.color.accent :

    FetchAddressIntentService.RESULT_FAILURE -> net.epictimes.uvindex.R.color.accent