thunderbird-android icon indicating copy to clipboard operation
thunderbird-android copied to clipboard

Remove dependency substitutions

Open wmontwe opened this issue 1 year ago • 0 comments

We use dependency substitution in our root build.gradle.kts file to fix some transient dependency versions. This imposes challenges maintaining the build and dependency updates:

  • Substitutions make it more challenging to track which dependencies are beeing used, especially when substituting transient dependencies.
  • Can lead to hidden version conflicts, especially when substituted dependencies depend on different versions of dependencies. Imposes risk of runtime errors that are hard to diagnose and fix.
  • Gradle's dependency resolution can become more complex and slow down the build process.
  • Substituted dependencies might not be fully compatible with the Android version that we target.

However, in some scenarios, dependency substitution might be necessary to resolve conflicting version of a library or there is a need to apply a patch that is not available through the official repositories. In such cases, thorough testing is required to not introduce side effects that surface at runtime.

We should remove the dependency substitutions and improve the dependency declarations to pin transient dependencies where needed.

We could try the dependency analysis gradle plugin, to help resolve issues with our dependency declaration.

wmontwe avatar Jan 31 '24 13:01 wmontwe