【发布时间】:2018-04-17 23:07:11
【问题描述】:
我正在使用带有最新 Gradle 版本 (https://services.gradle.org/distributions-snapshots/gradle-4.8-20180417000132+0000-all.zip) 的 com.android.tools.build:gradle:3.1.1。
当我使用 compileOnly 依赖项时,其中一些不会编译,有些会。 例如
compileOnly "com.android.support:support-v4:27.1.1"
完美运行
compileOnly "com.facebook.stetho:stetho:1.5.0"
给出编译错误:
Android dependency 'com.facebook.stetho:stetho:1.5.0' is set to compileOnly/provided which is not supported
我的印象比任何依赖都可以编译。没有其他说明(https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations)。这两个库都有传递依赖。
任何帮助将不胜感激。
【问题讨论】:
-
为什么要使用
compileOnly?这就是说“针对库进行编译,但不要将内容包含在 APK 中”。 -
这只是一个例子。实际上,我会将 releaseCompileOnly 用于 Stetho 库。我希望示例尽可能简单。
-
另一个示例(真实示例)是:productionCompileOnly 'com.bugsee:bugsee-android:1.11.9' 生产环境是我用于生产构建的风格
-
使用 Gradle 4.4,我从您的问题中得到与
compileOnly "com.android.support:support-v4:27.1.1"相同的错误。鉴于错误消息,可能限制在 AAR 上。我已经成功地将compileOnly与 AutoValue 一起使用,但那是一个 JAR,因为那是一个纯 Java 库。 -
好吧,我的 AAR 想法只是一个理论。 This answer 反映了我的想法。至于为什么没有记录这种限制... 很多 Android 中的东西没有记录。