首页 > 解决方案 > 我的项目没有拾取库模块 jar 文件夹中定义的类文件

问题描述

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

虽然我可以轻松访问库文件夹中可用的src文件。

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

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

构建.gradle(应用程序)

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

设置.gradle

include ':myLibrary'

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

我也尝试删除android studio preference, invalidate cache and restart,但在这里似乎没有任何效果。

标签: androidgradleandroid-gradle-plugindependency-management

解决方案


在我当前的项目中,它们无法访问。

它们不应该是可访问的,因为这些依赖 jar 不是您的应用程序项目的一部分。

如果你想访问你的库模块所依赖的那些jar myLibrary,你需要在你的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

只需在此处引用关键解释,以获取有关providedand的信息compileOnly

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

对于您的库模块,如果您不将它们打包到您的库.jar.aar中,它本身实际上只需要在编译类路径中。在这种情况下,使用这个库的应用程序需要添加那些依赖于你的库模块的外部 jar,因为你的库模块没有打包它们(通过使用)。并且您的应用程序需要这些外部 jars 在运行时通过使用.compileOnlycompile


推荐阅读