【发布时间】:2023-03-10 23:50:01
【问题描述】:
我的项目使用 2 个第三方库(大小均超过 10 MB)来实现某些语音处理功能。我一次只需要其中一个(几乎就像plugin),这是我在构建期间做出的决定。到目前为止,我已经在同一个模块中使用了两个库的方法。我的 build.gradle 有这样的标志:
buildConfigField "boolean", "USE_LIB_ONE", "true"
buildConfigField "boolean", "USE_LIB_TWO", "false"
在我的 Java 代码中,我有这样的检查:
if (BuildConfig.USE_LIB_ONE) {
A.method();
} else if(BuildConfig.USE_LIB_TWO) {
B.method();
}
我的问题是:
有没有办法根据 buildConfigField 有条件地编译 LIBRARY_ONE 或 LIBRARY_TWO?即使我不使用其他库,我的 APK 也会变得庞大。
有没有更简洁的方法来设计此类项目?我的代码库因对相同条件的 if/else 检查而变得臃肿。
我猜 gradle 产品风味在这种情况下可能会有所帮助,但我对此知之甚少。有人可以确认产品风味是否有助于条件编译吗?
ServiceLoader 可以在这里提供帮助吗?在一个非 Android 项目上,我可能会使用它,但基于一些 SO 帖子,Android 实现听起来有问题。
我的问题不是 this one 的重复。
【问题讨论】:
标签: java android gradle android-gradle-plugin