首页 > 解决方案 > 将依赖项添加到 android 库 'api' vs 'implementation'

问题描述

假设我正在创建 Android 库并希望使用 ConstraintLayout。我看到其他 lib 创建者有两种不同的方法:

1. 用implementation关键字添加它。不利的一面是,如果有人将我的 lib 添加到项目中并且在依赖项中没有约束布局,则构建将失败并出现以下错误:error: attribute 'com.example.test:layout_constraintBottom_toBottomOf' not found.

2. 使用“api”添加它。这样它就可以很好地编译,但是如果任何其他库将约束布局与其他版本一起使用,它可能会产生错误Android dependency 'com.android.support.constraint:constraint-layout:1.1.2' has different version for the compile (1.0.0) and runtime (1.1.2)

哪种方式对客户端代码的维护成本最低?

标签: androidgradlebuild.gradle

解决方案


这与客户端代码的最低维护成本无关。这是关于客户端是否需要传递依赖 - <code>ConstraintLayout - 以便针对您的库进行编译。无论您使用implementationapi,传递依赖始终是客户端的运行时依赖。

这是您需要问自己的问题:您是否ConstraintLayout在库的公共 API 的方法签名或属性中使用传递库的或任何其他元素,即客户端使用的东西?如果是,那么您应该将约束布局库声明为api. 否则,使用implementation.


推荐阅读