【问题标题】:Gradle: exclude a dependency's packageGradle:排除依赖包
【发布时间】:2016-11-30 08:56:53
【问题描述】:

是否可以从 Android Gradle 依赖项中排除 ,使其最终不会出现在 APK 中?

作为:

dependencies {

    compile('com.facebook.android:facebook-android-sdk:4.17.0') {
        exclude package 'com.facebook.share'
    }
}

但又有所不同,因为“package”不是一个有效的命令。

【问题讨论】:

  • 您想从依赖项中删除您自己的 APK 或模块的某些包吗?
  • 依赖项中的包。 facebook lib 示例有很多 com.facebook.XXX 包,我不想包括其中之一。我更新了我的问题示例。
  • 是的,你可以。检查下面的答案!
  • 该答案显示了如何删除依赖项的依赖项,而不是依赖项本身的包。
  • 哦,是的!我想我们不能删除包。还是等一段时间吧。如果有人知道,那将会很有帮助。

标签: android gradle dependencies


【解决方案1】:

您不能排除工件的某些特定部分,因为 Gradle 对其中的内容一无所知。对于 Gradle,它是单片的:您可以将工件包含在其中的任何内容中,也可以不包含。

使用 ProGuard 或许可以实现您想要的。这是构建应用程序发布版本时的常见步骤,您可以指定规则进行收缩,这将删除不必要的代码。 Android 文档有一个code shrinking article 提供更多详细信息。

可能出现的唯一问题是,如果依赖项本身包含 ProGuard 配置文件,则可能无法强制缩小指定保留在其中的内容。但是,我刚刚查看了您询问的 AAR,但情况似乎并非如此。

【讨论】:

  • 好的,这很清楚。在调试版本上使用 proguard 过于耗时。我认为这是不可能的,我会接受这个答案。
【解决方案2】:

这样,你可以从库中排除几个包, 这只是概念的一个例子

compile ('com.github.ganfra:material-spinner:1.1.1'){
        exclude group: 'com.nineoldandroids', module: 'library'
        exclude group: 'com.android.support', module: 'appcompat-v7'
}

【讨论】:

  • 这些包或引用的库是否来自您的依赖项?我认为是最后一个。如果没有,请举例说明如何在 com.github.ganfra 中使用它,例如“com.github.ganfra.somepackage”。
  • 我不知道 abt 应用程序,但可以说您正在构建一个库,并且您希望避免导入您正在使用的其他库和包的冲突,但用户可能已经导入了这些,流行诸如改造之类的库……在这种情况下,我们可以使用 exclude 命令从您的库中删除这些依赖项……以便您的库可以使用项目本身中的那个
【解决方案3】:

您可以在 build.gradle 中使用 sourceSets 来过滤您不想捆绑在 apk 或 aab 中的包或类。比如——

android {
  sourceSets {
        main {
            java {
                exclude 'com/a/b/helper/**'
                exclude 'com/a/ext/util/TestUtils.java'
            }
        }
    }
}

希望它会有所帮助:)

【讨论】:

    【解决方案4】:

    更新了从依赖组中排除参考库的答案

    implementation (group: 'net.sf.jasperreports', name: 'jasperreports', version: '6.1.0'){
        //example : org.olap4j:olap4j:0.9.7.309-JS-3
        exclude group: 'org.olap4j', module: 'olap4j'
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      • 1970-01-01
      • 1970-01-01
      • 2021-12-05
      • 2020-07-27
      • 1970-01-01
      相关资源
      最近更新 更多