我的项目未提取库模块jar文件夹中定义的类文件

时间:2018-10-28 08:05:18

标签: android gradle android-gradle dependency-management

我已通过转到File-> New ->Import Module添加了一个库,该库已成功添加,在此导入的模块中添加了大约8 jar个文件,但是在我的应用程序模块中我无法访问这些文件。

尽管我可以轻松访问库src文件夹中的文件。

这些行被添加到库gradle文件中。

compile fileTree(dir: 'libs', include: '*.jar')
compile fileTree(dir: "$buildDir/native", include: 'native.jar')

build.gradle(app)

compile fileTree(dir: 'libs', include: '*.jar')
compile project(':myLibrary')

settings.gradle

include ':myLibrary'

如果我在新项目中执行这些步骤,则可以从app module访问jar文件中的类,但是在我当前的项目中,它们是不可访问的。

我也尝试删除android studio preferenceinvalidate cache and restart,但这里似乎没有任何作用。

1 个答案:

答案 0 :(得分:1)

  

在我当前的项目中,它们不可访问。

不应访问它们,因为这些依赖项jar不在您的应用程序项目中。

如果要访问库模块myLibrary所依赖的jar,则需要使用

app项目内指定它们
compile fileTree(dir: '../myLibrary/libs', include: '*.jar')
compile fileTree(dir: "../myLibrary/native", include: 'native.jar')

并将您的myLibrary设置更改为

provided fileTree(dir: 'libs', include: '*.jar')
provided fileTree(dir: "$buildDir/native", include: 'native.jar')

通过上述操作,您应该可以从应用模块访问jar,并且不会有任何重复的类引起冲突。

也许最好将Android Gradle插件升级到3.0+。

有关android gradle插件版本的其他信息:

  1. https://stackoverflow.com/a/51392464/8034839
  2. https://developer.android.com/studio/build/dependencies

只需在此处引用关键说明,以获取有关providedcompileOnly的信息:

  

Gradle仅将依赖项添加到编译类路径中(也就是说,它不会添加到构建输出中)。当您创建Android模块并且在编译过程中需要依赖项时,这很有用,但是在运行时显示依赖项是可选的。

对于您的库模块,如果您不将其依赖项打包到库 .jar .aar中,则其本身仅要求其依赖项在编译 classpath 。在这种情况下,使用此库的应用程序需要添加库模块所依赖的那些外部jar,因为库模块未打包它们(通过使用compileOnly)。并且您的应用程序需要使用compile使这些外部jar在运行时可用。

相关问题