Android Studio:如何从库中的jar文件读取类?

Android Studio:如何从库中的jar文件读取类?,android,android-studio,jar,Android,Android Studio,Jar,我有两个项目使用同一个库。此库使用jar文件作为依赖项,但是只有库能够从jar文件中读取类。这两个项目没有从jar文件访问类的权限 我尝试将jar文件分别添加到两个项目中,但我得到了一个构建错误,可能是因为现在它包含在项目级和库级中,导致了冲突 jar文件是YouTubeAndroidPlayerApi.jar /------------------- Project1 (can't read classes from jar) Library(w/ jar)

我有两个项目使用同一个库。此库使用
jar
文件作为依赖项,但是只有库能够从
jar
文件中读取类。这两个项目没有从
jar
文件访问类的权限

我尝试将jar文件分别添加到两个项目中,但我得到了一个构建错误,可能是因为现在它包含在项目级和库级中,导致了冲突

jar
文件是
YouTubeAndroidPlayerApi.jar

                /------------------- Project1 (can't read classes from jar)
Library(w/ jar)
                \------------------- Project2 (can't read classes from jar)

有没有关于如何接近的想法?谢谢

如果您使用的是gradle 4.1,请确保在将.jar导入库时使用
api
关键字。然后将其从其他项目中删除

例如:
api文件树(dir:'libs',include:['*.jar'])

当一个模块包含一个api依赖项时,它会让Gradle知道该模块想要将该依赖项以传递方式导出到其他模块,以便它们在运行时和编译时都可以使用该依赖项。此配置的行为类似于compile(现在已弃用),您通常只应在库模块中使用它。这是因为,如果api依赖项更改了其外部api,Gradle将在编译时重新编译所有能够访问该依赖项的模块。因此,拥有大量api依赖关系可以显著增加构建时间。除非您想将依赖项的API公开给单独的测试模块,否则应用程序模块应该使用实现依赖项


如果您使用的是gradle 4.1,请确保在将.jar导入库时使用
api
关键字。然后将其从其他项目中删除

例如:
api文件树(dir:'libs',include:['*.jar'])

当一个模块包含一个api依赖项时,它会让Gradle知道该模块想要将该依赖项以传递方式导出到其他模块,以便它们在运行时和编译时都可以使用该依赖项。此配置的行为类似于compile(现在已弃用),您通常只应在库模块中使用它。这是因为,如果api依赖项更改了其外部api,Gradle将在编译时重新编译所有能够访问该依赖项的模块。因此,拥有大量api依赖关系可以显著增加构建时间。除非您想将依赖项的API公开给单独的测试模块,否则应用程序模块应该使用实现依赖项


“这两个项目没有从jar文件访问类的权限。”-为什么没有?如果它作为依赖项包含,则必须包含。你的gradle文件是什么样子的?您是否使用最新版本的Android studio 3.0?“这两个项目无法访问jar文件中的类。”-为什么不能?如果它作为依赖项包含,则必须包含。你的gradle文件是什么样子的?你在安卓studio 3.0上使用最新的gradle吗?很高兴为你提供帮助!迁移到gradle 4.1并不总是那么简单。很乐意为您提供帮助!迁移到Gradle4.1并不总是那么简单。