Gradle:排除依赖项的包

时间:2016-11-30 08:56:53

标签: android gradle dependencies

是否可以从Android Gradle依赖项中排除,以便它不会在APK中结束?

如:

{{1}}

但后来不同,因为“package”不是有效的命令。

4 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

您不能排除工件的某些特定部分,因为Gradle并不了解其中的内容。 Gradle it's monolithic:你要么把神器包含在其内部,也不要包含它。

使用ProGuard可能实现您的目标。这是构建应用程序发布版本时的常见步骤,您可以指定要进行收缩的规则,这将删除不必要的代码。 Android文档包含code shrinking article,其中包含更多详细信息。

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

答案 2 :(得分:0)

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

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

希望它会有所帮助:)

答案 3 :(得分:0)

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

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'
}