我的项目使用两个第三方库(大小都超过10MB)来实现一些语音处理功能。我一次只需要其中一个(就像插件一样),这是我在构建时做出的决定。到目前为止,我已经在同一个模块中使用了两个库的方法。我的身材。格拉德尔有这样的旗帜:
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();
}
我的问题是:
>
有没有一种方法可以基于构建配置字段有条件地编译LIBRARY_ONE或LIBRARY_TWO?即使我不使用其他库,我的APK也越来越大。
有没有更干净的方法来设计这样的项目?我的代码库中充满了相同条件的if/ther检查。
我想gradle产品的口味可能会对这种情况有所帮助,但我对它了解不多。有人能确认一下产品风格是否有助于条件编译吗?
ServiceLoader在这里有什么帮助吗?在一个非Android项目上,我可能会使用它,但基于一些SO帖子,Android实现听起来有问题。
我的问题不是这个问题的重复。
目前这里有一个问题需要回答
但是为了解决这个问题,可以在构建中使用flavor构建类型配置。像这样的渐变
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'
}
问题内容: 我不知道如何在不使用或的情况下有效解决以下问题: 当一个元素发生故障时,如何恢复堆不变式? 换句话说,更新中至,并保持工作。您可以假设堆中只有一个。功能定义如下: 这是我的真实情况,如果您有兴趣请阅读。 您可以想象它是一个小的自动完成系统。我需要计算单词的频率,并保持前k个最大数量的单词,这些单词随时准备输出。所以我用在这里。当一个单词计数++时,如果它在堆中,我需要对其进行更新。 所
我们正在尝试使用java webstart开发一个打印应用程序。我们使用eclipse将jar创建为普通jar文件。我们的应用程序需要外部库来连接数据库、将数据转换为字节等。 我们以前可以通过将必要的JAR放入jre文件夹的/ext/目录来实现这一点。然而,这导致了与tomcat服务器的库冲突,所以我们希望避免这种方法。 我们还尝试将项目导出为可运行的jar,因为所需的库也已打包在jar中。但是当
从我的main开始,我将启动两个线程,称为producer和consumer。两者都包含循环。生产者循环是UDP服务器,因此不需要Hibernate。我的问题出在消费者方面。使用者循环将对象从链接队列中移除,并将其传递给一个函数进行进一步处理。根据研究,在循环中使用线程Hibernate不是一个好的实践,因为有时O/S在设定时间结束时不会释放。如果我删除线程Hibernate,当应用程序是理想的,
虽然我在构建中集成了库。但当我在设备上运行它时,会发生以下错误。 我的代码是这样的,buidl。格拉德尔 我正在使用Lucence的类 模范班 这一切从哪里开始 }
问题内容: 大家好。我正在为一个学校项目工作,在该项目中,我们获得了.class文件,但没有提供包含在我们代码中的源代码。我正在使用Eclipse,并且希望将文件包含在我的项目中,以便可以从中实例化对象并使用它。 该文件是TokenizerImpl.class,我想这样使用它: 我将文件放在项目文件夹中,Eclipse表示“ TokenizeImpl无法解析为类型”,我认为这意味着它找不到类或源。
问题内容: 在Android Studio中包含iTextG时出现以下错误, 我不知道为什么,但似乎这个库中也有awt。这就是我包括的方式: 从http://sourceforge.net/projects/itextg/下载itextg 提取jar文件 将itextg-5.5.4.jar复制到app目录中的libs文件夹 摇篮清洁 为什么awt仍在库中? 问题答案: 请仔细阅读该异常。它谈论。那