我的项目使用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项目中,我可能会使用它,但Android实现听起来很麻烦,基于一些SO帖子。
我的问题不是this one的重复。
答案 0 :(得分:0)
目前您的问题here
存在问题但是对于解决方法,您可以在build.gradle中使用flavor + build类型配置,就像这样
configurations {
libOneReleaseCompile
libTwoReleaseCompile
}
dependencies {
compile 'com.android.support:support-v4:23.1.1'
compile 'com.android.support:support-annotations:23.1.1'
compile 'com.android.support:appcompat-v7:23.1.1'
libOneReleaseCompile 'lib.one.speech'
libTwoReleaseCompile 'lib.two.speech'
}