Gradle:排除依赖项的包

Fra*_*ank 7 dependencies android gradle

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

作为:

dependencies {

    compile('com.facebook.android:facebook-android-sdk:4.17.0') {
        exclude package 'com.facebook.share'
    }
}
Run Code Online (Sandbox Code Playgroud)

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

Mal*_*olm 1

您无法排除工件的某些特定部分,因为 Gradle 对其中的内容一无所知。对于 Gradle 来说,它是整体的:您要么包含工件及其内部的任何内容,要么不包含该工件。

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

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