Android studio 是否可以隐藏位于';libs&x27;aar中的文件夹?

Android studio 是否可以隐藏位于';libs&x27;aar中的文件夹?,android-studio,gradle,dagger-2,dagger,gradle-shadow-plugin,Android Studio,Gradle,Dagger 2,Dagger,Gradle Shadow Plugin,为了让您了解我想要完成的内容,我将首先描述我的项目结构: Application | | - Library Module | | | | - Core Library Module | | Module 1 | |- Jar dependency 1 | | | | Module 2 | |- Jar dependency 2 模块1和模块2,其中包含shadow gradle插件创建的2个jar文件,用于重新定位dagge

为了让您了解我想要完成的内容,我将首先描述我的项目结构:

Application
|
| - Library Module
|   |
|   | - Core Library Module
|       | Module 1
|       |- Jar dependency 1
|       |
|       | Module 2
|       |- Jar dependency 2
模块1和模块2,其中包含shadow gradle插件创建的2个jar文件,用于重新定位dagger 2依赖项。之所以这样做,是因为应用程序使用匕首1,并且不能在常规基础上同时使用它们

核心库模块包含不同库的核心功能,这就是为什么它是一个单独的库,它还使用dagger 2进行依赖注入

库模块包含我们从客户机向应用程序提供的功能,它还使用dagger 2进行依赖项注入

现在真正的问题是应用程序,因为它使用Dagger 1进行依赖项注入。因此,使用阴影JAR可以在同一个项目中使用dagger 1和dagger 2,因为阴影重命名并重新定位dagger 2使用的所有类,例如@Inject到@Inject2

在库中,一切都按预期工作,因为我使用了重新定位和重命名的类,如@Module2、@Inject2等

但在我使用dagger 1的应用程序中,标签是@Inject、@Module,这与dagger 1中通常使用的一样。因为在我的build.gradle中导入的依赖项是Dagger1。但是,当我构建应用程序时,我得到一个错误指示,我还必须添加修改过的Dagger2标记,如@Module2、@Inject2。这正是我不想要的

有没有办法使用gradle隐藏或忽略这些依赖项,这样应用程序就看不到dagger 2修改过的JAR,但它们仍然可以在库中使用

到目前为止,我唯一的解决方案是从库中删除Dagger 2并自己实现依赖项注入,但这很耗时,也不是我想要的

编辑:

完全错误:

Error:(25, 8) error: com.sample.model.ApplicationModule is listed as a module, but is not annotated with @Module2
编辑2:

  relocate 'javax.inject.Inject', 'javax.inject.Inject2'
  relocate 'javax.inject.Named', 'javax.inject.Named2'
  relocate 'javax.inject.Provider', 'javax.inject.Provider2'
  relocate 'javax.inject.Qualifier', 'javax.inject.Qualifier2'
  relocate 'javax.inject.Scope', 'javax.inject.Scope2'
  relocate 'javax.inject.Singleton', 'javax.inject.Singleton2'
  relocate 'dagger.Lazy', 'dagger.Lazy2'
  relocate 'dagger.MembersInjector', 'dagger.MembersInjector2'
  relocate 'dagger.Module', 'dagger.Module2'
  relocate 'dagger.Provides', 'dagger.Provides2'
  relocate 'dagger.Provides$Type', 'dagger.Provides$Type2'
  relocate 'dagger.internal', 'dagger.internal2'
  relocate 'dagger.producers', 'dagger.producers2'
  relocate 'dagger.Component', 'dagger.Component2'

ApplicationModule
似乎是一个匕首1模块。错误似乎来自匕首2。因此,dagger 2注释处理器显然在未重命名的
@组件上运行。您需要确保处理器仅在dagger 2组件上运行。

ApplicationModule
似乎是dagger 1模块。错误似乎来自匕首2。因此,dagger 2注释处理器显然在未重命名的
@组件上运行。您需要确保处理器仅在dagger 2组件上运行。

我更新了问题,但出现了完全错误,但这不是很有用。您是否重命名或使用了正确的
@Component
注释引用
ApplicationModule.class
?是,实际上,应用程序不需要知道我已经重命名了dagger 2库,因此应用程序使用了dagger 1通常使用的所有注释,让我重新表述这个问题<代码>应用程序模块
似乎是一个匕首1模块。错误似乎来自匕首2。注释处理器和
@组件
是否已全部处理完毕?Dagger 2试图编译Dagger 1组件,但显然失败了。你是对的,我检查了shadow生成的jar文件,它没有发回@component注释。我将检查重命名类别的脚本。谢谢!我用完整的错误更新了问题,但它不是很有用。您是否重命名或使用了正确的
@Component
注释引用
ApplicationModule.class
?是的,实际上应用程序不需要知道我已重命名dagger 2库,因此,应用程序正在使用所有注释,正如dagger 1通常使用的那样,让我重新表述这个问题<代码>应用程序模块
似乎是一个匕首1模块。错误似乎来自匕首2。注释处理器和
@组件
是否已全部处理完毕?Dagger 2试图编译Dagger 1组件,但显然失败了。你是对的,我检查了shadow生成的jar文件,它没有发回@component注释。我将检查重命名类别的脚本。谢谢!你是对的,我没有重命名@component注释,我重命名了,但仍然得到了错误。我添加了用于重命名类的脚本,您能告诉我缺少什么吗?您需要处理这些脚本。也许这有点帮助你是对的,我没有重命名@component注释,我重命名了,但我仍然得到了错误。我添加了用于重命名类的脚本,您能告诉我缺少什么吗?您需要处理这些脚本。也许这有点帮助