android - 将依赖项添加到 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)
哪种方式对客户端代码的维护成本最低?
解决方案
这与客户端代码的最低维护成本无关。这是关于客户端是否需要传递依赖 - <code>ConstraintLayout - 以便针对您的库进行编译。无论您使用implementation
或api
,传递依赖始终是客户端的运行时依赖。
这是您需要问自己的问题:您是否ConstraintLayout
在库的公共 API 的方法签名或属性中使用传递库的或任何其他元素,即客户端使用的东西?如果是,那么您应该将约束布局库声明为api
. 否则,使用implementation
.
推荐阅读
- azure - Azure Logic App,使用 DevOps 部署,第一步“收到 HTTP 请求时”,如何获取 URL 作为输出变量
- python - Django:我可以使数据库查询异步吗?
- javascript - 在 iFrame 中加载 webpack 块
- c - 如何根据输入打印不同的字符串?
- java - 使用 JAVA 从 Firebase 数据库获取一个活动的值到 android studio 中的另一个活动
- python - 如何创建和访问一个numpy对象数组?
- javascript - AngularJS Html 不会随着工厂的数据更改而更新
- css - CSS 样式表不适用于 Spring Security + Spring Boot + Thymeleaf
- visual-studio-code - Visual Studio Code 未在问题选项卡中显示警告
- python - 如何通过 python kubernetes 客户端修改 cert-manager 资源?