[英]Gradle: exclude a dependency's package
是否可以从 Android Gradle 依赖项中排除包,使其不会最终出现在 APK 中?
如:
dependencies {
compile('com.facebook.android:facebook-android-sdk:4.17.0') {
exclude package 'com.facebook.share'
}
}
但随后不同,因为“包”不是有效的命令。
这样,你可以从库中排除几个包,这只是概念的一个例子
compile ('com.github.ganfra:material-spinner:1.1.1'){
exclude group: 'com.nineoldandroids', module: 'library'
exclude group: 'com.android.support', module: 'appcompat-v7'
}
您不能排除工件的某些特定部分,因为 Gradle 对其中的内容一无所知。 对于 Gradle 来说,它是整体式的:您要么将工件包含在其中,要么不包含。
使用 ProGuard 可以实现您想要的。 这是构建应用程序的发布版本时的常见步骤,您可以指定进行收缩的规则,这将删除不必要的代码。 Android 文档中有一篇代码缩减文章,其中包含更多详细信息。
唯一可能出现的问题是,如果依赖项本身包含 ProGuard 配置文件,则可能无法强制收缩指定要保存在其中的内容。 但是,我刚刚查看了您询问的 AAR,情况似乎并非如此。
您可以在 build.gradle 中使用 sourceSets 来过滤您不想捆绑在 apk 或 aab 中的包或类。 例如——
android {
sourceSets {
main {
java {
exclude 'com/a/b/helper/**'
exclude 'com/a/ext/util/TestUtils.java'
}
}
}
}
希望它会有所帮助:)
从依赖项组中排除参考库的更新答案
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'
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.