как условно выбрать зависимость модуля или исходный код в приложении?

#android #android-gradle-plugin #android-library

#Android #android-gradle-плагин #android-библиотека

Вопрос:

В приложении для Android у него есть модуль библиотеки ( lib-module ), который может использоваться другим приложением или библиотекой. И в этом приложении он использует этот модуль lib, но напрямую с кодом:

 include ':app', ':lib-module'
project(':lib-module').projectDir = new File(settingsDir, 'libModule')
  

бывает, что это использует другая библиотека / sdk lib-module (назовите это third-rd-lib здесь), поэтому third-rd-lib она зависит от версии published lib-module .

и это app также зависит от этого third-rd-lib . теперь app код lib-module может быть не синхронизирован, если third-rd-lib используется выпущенная версия lib-module , которая отличается от кода, который в настоящее время находится в app «s lib-module «.

вопрос, есть ли в приложении способ настроить сборку так, чтобы ее можно было создавать либо с использованием исходного кода lib-module , либо с использованием зависимости от выпущенной версии lib-module ?

обновите вопрос

на самом деле я в замешательстве. когда есть оба

 include ':app', ':lib-module'
project(':lib-module').projectDir = new File(settingsDir, 'libModule')
  

и

 implementation "com.android.lib:third-rd-lib:x.y.z" 
// which has dependency on the lib-module:1.2.0
  

затем при запуске приложения будет загружаться код из зависимости lib-module:1.2.0 или загружается исходный код lib-module in the app ?

Ответ №1:

документ и этот помогли, и использование этого работает

 configurations.all {
    resolutionStrategy.dependencySubstitution {
        substitute module('com.android.app:lib-module') with project(':lib-module')
    }