gpt4 book ai didi

java - 如何避免在 Android(或任何 Java)项目中包含未使用的库?

转载 作者:行者123 更新时间:2023-12-03 03:31:53 24 4
gpt4 key购买 nike

我的项目使用 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 产品 flavor 在这种情况下可能会有所帮助,但我对此知之甚少。有人可以确认产品 flavor 是否有助于条件编译吗?
  • 可以ServiceLoader有什么帮助吗?在非 Android 项目上,我可能会使用它,但基于一些 SO 帖子,Android 实现听起来有问题。

  • 我的问题不是 this one 的重复.

    最佳答案

    目前您的问题有问题 here

    但是对于解决方法,您可以像这样在 build.gradle 中使用 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'
    }

    关于java - 如何避免在 Android(或任何 Java)项目中包含未使用的库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34446207/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com