我已通过转到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 preference
,invalidate cache and restart
,但这里似乎没有任何作用。
答案 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插件版本的其他信息:
只需在此处引用关键说明,以获取有关provided
和compileOnly
的信息:
Gradle仅将依赖项添加到编译类路径中(也就是说,它不会添加到构建输出中)。当您创建Android模块并且在编译过程中需要依赖项时,这很有用,但是在运行时显示依赖项是可选的。
对于您的库模块,如果您不将其依赖项打包到库 .jar 或 .aar中,则其本身仅要求其依赖项在编译 classpath 中。在这种情况下,使用此库的应用程序需要添加库模块所依赖的那些外部jar,因为库模块未打包它们(通过使用compileOnly
)。并且您的应用程序需要使用compile
使这些外部jar在运行时可用。