在处理器生成的类中使用库

我正在开发一个库,使用注释和处理器来生成类。 生成的类应该使用谷歌的Gson库。

我的问题是: 我应该在哪里添加Gson依赖项? 我目前将它添加到处理器build.gradle中,但是当生成这些类时,找不到Gson,并且Android Studio建议将其添加到应用程序模块中。

处理器的 build.gradle

implementation project(':lib-annotation')
implementation 'com.squareup:javapoet:1.9.0'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'com.google.auto.service:auto-service:1.0-rc3'

build.gradle应用程序

implementation project(':lib-annotation')
annotationProcessor project(':lib-processor')

任何帮助将不胜感激,谢谢!

PS该项目旨在成为一个图书馆。 我期望用户只将我的库包含在他们的gradle文件中,而不是“子依赖项”。


简单地使用实现可以防止使用传递依赖

主项目不能使用或调用添加到库中的依赖项。

正如文档中提到的,应该使用实现配置来声明组件内部的依赖关系。

所以你必须使用apicompile而不是implementation或添加一个条件到你的传递库,例如: -

implementation ('com.google.code.gson:gson:2.8.1'){
    transitive = true;
}

除了事实实现隐藏了依赖关系并因此将其保留在应用程序的路径之外(因此如果您需要公开Gson,避免使用实现),问题是由于正在编译/实现库模块而不是使用常规的aar / jar / apklib包。 尝试这个:

- 将Android Maven Gradle插件添加到库项目并进行配置。

- 使用插件,编译并安装库到你的本地Maven仓库。 - 除了使用compile / api / implementation将库添加到应用程序外,还需要将mavenLocal()包含到build.gradle中,然后将库作为常规依赖项添加。 所有必要的依赖应该在那里。

这里有一个插件的例子,以防你需要它:https://github.com/fcopardo/EnhancedMapView


按照这个链接,我已经导入没有任何问题。 http://blog.madadipouya.com/2015/09/21/how-to-add-gson-library-to-android-studio-project/

链接地址: http://www.djcxy.com/p/97081.html

上一篇: Use a Library in the processor's generated classes

下一篇: SetInterval creates delay after many rounds of execution