代码之家  ›  专栏  ›  技术社区  ›  user1506104

为什么编译和运行时依赖关系很重要?

  •  0
  • user1506104  · 技术社区  · 6 年前

    我知道刚才讨论的那两个之间的区别 here .

    作为Android开发者,

    1. 我为什么要关心这个?
    2. 在格雷德,我为什么要用 compileOnly implementation/api ?
    1 回复  |  直到 6 年前
        1
  •  1
  •   laalto    6 年前

    我为什么要关心这个?

    使你的应用程序生成但不附带不必要的东西。

    在gradle中,为什么要使用compileOnly vs implementation/api?

    文件 compileOnly 以一个用例为例:

    Gradle只将依赖项添加到编译类路径(它不会添加到生成输出)。这在创建Android库模块时非常有用,并且在编译期间需要依赖项,但是在运行时提供是可选的。也就是说,如果使用此配置,则库模块必须包含一个运行时条件,以检查依赖项是否可用,然后优雅地更改其行为,以便在未提供依赖项时仍能正常工作。这有助于减少最终APK的大小,因为不添加不重要的临时依赖项。此配置的行为与提供的一样(现在已弃用)。

    source

    例如,考虑一个推送消息库,它支持Firebase FCM和Amazon ADM,但两者都不需要。如果这两个应用都作为可传递的依赖项发布,那么它将不必要地使应用程序膨胀。与 编译的 图书馆还可以建。使用库的开发人员可以选择实际使用哪些依赖项。

    另一个例子是不需要随应用程序一起提供的编译时注释。

    推荐文章