如何在应用程序中有条件地选择模块依赖性或源代码?

问题描述

在android应用中,它具有一个lib模块(lib-module),该模块可以由其他应用或lib使用。在此应用中,它使用此lib模块,但直接使用代码

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

在某些情况下,其他lib / sdk正在使用此lib-module(在此处称为third-rd-lib),因此third-rd-lib依赖于已发布的{{1} }。

,并且此lib-module也依赖于该app。现在在third-rd-lib中,如果app使用的是lib-module的发行版,而third-rd-lib代码可能与{ {1}}的{​​{1}}。

问题,应用程序中是否可以配置构建,以便可以使用lib-module的源代码或依赖于已发布的app的版本来构建?

更新问题

实际上我很困惑。当同时存在

lib-module

lib-module

然后在运行应用程序时,将加载依赖项lib-module中的代码还是加载include ':app','libmodule') 中的implementation "com.android.lib:third-rd-lib:x.y.z" // which has dependency on the lib-module:1.2.0 的源代码

解决方法

docthis one有所帮助,并且使用了这项功能

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

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...