Android依赖项设置为compileOnly/provided,不受支持

Android依赖项设置为compileOnly/provided,不受支持,android,gradle,Android,Gradle,我正在使用com.android.tools.build:gradle:3.1.1和最新的gradle版本() 当我使用compileOnly依赖项时,有些依赖项不会编译,有些则会。 例如 当 compileOnly "com.facebook.stetho:stetho:1.5.0" 给出一个编译错误: Android dependency 'com.facebook.stetho:stetho:1.5.0' is set to compileOnly/provided which is n

我正在使用com.android.tools.build:gradle:3.1.1和最新的gradle版本()

当我使用compileOnly依赖项时,有些依赖项不会编译,有些则会。 例如

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
我的印象是任何依赖项都无法编译。没有其他说明()。这两个库都具有可传递的依赖关系


任何帮助都将不胜感激。

作为实验,我创建了一个新的Android Studio 3.1.1项目。然后,我添加了一个
lib
模块作为普通的Java库模块。我可以将
compileOnly项目(“:lib”)
添加到应用程序模块中,并对其进行编译。我将
lib
模块更改为具有最小清单的Android库模块(
apply plugin:'com.Android.library'
),现在
compileOnly项目(“:lib”)
得到您所做的错误:“Android依赖项”project:lib“设置为compileOnly/provided,但不受支持”

由于
lib
模块中没有其他实质性更改,因此
compileOnly
限制在Android库模块上

我的猜测是,对于清单条目、资源、资产等,“仅编译”是什么意思还不清楚

我归档了。我对文档的要求通常置若罔闻。

在“动态功能模块”问世之初,
编译的Android库模块可能有意义,以便在安装功能模块时从基础应用程序轻松访问功能模块

这就是我创建此功能请求的原因:


您可以随意启动它,并用您的用例进行评论。

我在一个有许多库的项目中遇到过类似的问题

我有一个
libX
,我用
debugImplementation项目(':libX')
在debug中实现它来处理源代码,但在发布版本中,我的目标是发布版本
releaseplementation“com.company:libX:1.0.0”

在一次重构之后,我在一次关于libX的发布同步中遇到了类似的错误

Android依赖项“com.company:libX:1.0.0”设置为compileOnly/provided,不受支持

然而,我没有使用任何编译的


问题是由于一个库始终使用
libX
作为源代码(
实现项目(':libX')
)。所以在发行版中,gradle感到困惑,因为它在某些库中实现了
libX
,而在另一些库中实现了已发布的库。

为什么要编译使用这两种库呢?也就是说“根据库进行编译,但不要在APK中包含内容”。这只是一个例子。实际上,我会使用releaseCompileOnly作为听诊器库。我希望这个例子尽可能简单。另一个例子(一个真实的例子)是:productionCompileOnly'com.bugsee:bugsee android:1.11.9',生产是我用于生产构建的风格使用Gradle 4.4,我在
compileOnly“com.android.support:support-v4:27.1”
中遇到了与您的问题相同的错误。考虑到错误消息,可能限制在AAR上。我在AutoValue中成功地使用了
compileOnly
,但这是一个JAR,因为这是一个纯Java库。我的AAR思想只是一个理论。反映了我的想法。关于为什么不记录这种限制。。。Android中的很多东西都没有文档记录。
Android dependency 'com.facebook.stetho:stetho:1.5.0' is set to compileOnly/provided which is not supported