Какие знаешь способы устранения конфликта ресурсов APT

«Какие знаешь способы устранения конфликта ресурсов APT» — вопрос из категории Gradle и сборка, который задают на 23% собеседований Android Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

В Android конфликты ресурсов могут возникать из-за дублирования имен в зависимостях. Основные способы решения:

  1. Использование resourcePrefix в build.gradle:
android {
    resourcePrefix "my_prefix_"
}

Это заставит все ресурсы модуля начинаться с указанного префикса.

  1. Исключение ресурсов через Gradle:
android {
    packagingOptions {
        exclude 'res/values/conflict.xml'
    }
}
  1. Переименование ресурсов в зависимостях с помощью ProGuard/R8:
android {
    buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
        }
    }
}
  1. Объединение ресурсов через resConfigs:
android {
    defaultConfig {
        resConfigs "en", "ru"
    }
}
  1. Ручное разрешение через tools:replace в манифесте:
<manifest 
    xmlns:tools="http://schemas.android.com/tools"
    tools:replace="android:icon, android:theme">