Получение этой ошибки "Модули 'base' и 'moduleA' содержат запись 'res/drawable/xyz.xml' с другим содержимым".
Module A - это динамический функциональный модуль с зависимостью, которая является aar lib.
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
implementation project(':app')
implementation(name:'lib', ext:'aar')
}
Он успешно строится и устанавливается на эмуляторе, но всякий раз, когда я хочу создать пакет приложений, я получаю следующую ошибку:
Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.
Если мне нужно переименовать xyz.xml в модуле приложения, я получаю сообщение об ошибке:
../moduleA/build/intermediates/metadata_feature_manifest/fullDebug/processFullDebugManifest/metadata-feature/AndroidManifest.xml:61:13-63:50: AAPT: error: resource drawable/xyz (aka my.app.main.drawable/xyz) not found.
Это одна из проблем, освещенных в статье Plaid о модуляризации.
Чтобы решить эту проблему, мне пришлось создать пустой xyz.xml в модуле приложения, но при создании пакета приложения я получаю сообщение об ошибке:
Modules 'base' and 'moduleA' contain entry 'res/drawable/xyz.xml' with different content.
В чем проблема и как ее решить?
2 ответа
Как вы удалили base/.../xyz.xml
вы не сможете получить к нему доступ из своего базового модуля (приложения).
Если вы переименуетеbase/.../xyz.xml
к base/.../zzz.xml
вам также придется изменить ссылки на него.
Если у вас нет доступа base/.../xyz.xml
в вашем базовом модуле вообще можно удалить файл. Затем вам нужно убедиться, что весь ваш импорт не указывает наbase.R.drawable.xyz
но feature.R.drawable.xyz
.
Если оба файла действительно могут быть одинаковыми, удалите feature/.../xyz.xml
и убедитесь, что вы только импортируете base.R.drawable.xyz
.
Если оба файла должны быть разными, переименуйте любой из них и убедитесь, что ваш импорт правильный.
Оба модуля base
а также moduleA
похоже зависят от того же AAR.
Вместо этого поместите AAR как зависимость модуля base
только. moduleA
должен иметь возможность найти ресурс через транзитивную зависимость модуля base
.