升级Android Studio与Gradle至3.1后,主项目无法导入子模块Jar类如何解决
解决主项目无法导入子模块Jar包类的问题
这个问题我之前帮不少开发者解决过,核心是Gradle 3.x版本引入的implementation和api的依赖范围差异在搞鬼~
当你在子模块里用implementation依赖Jar包时,Gradle会做编译时隔离——子模块自己能正常用这个Jar的类,但上层的主项目在编译时完全看不到这个依赖。这也是implementation相比旧版compile的优化点,能减少编译时间,但刚好戳中了你的需求痛点。
要解决这个问题,不用在主项目重复加Jar依赖,只需要修改子模块的依赖声明:
- 打开子模块的
build.gradle文件 - 找到你导入Jar包的那行代码,比如原来的:
把implementation files('libs/your-target-jar.jar')implementation替换成api:api files('libs/your-target-jar.jar') - 点击Android Studio工具栏的「Sync Project with Gradle Files」按钮,重新同步项目
这样修改后,子模块的Jar依赖会被传递给主项目,你就能直接在主项目里导入Jar里的类了。
补充个小提醒:api会把依赖完全暴露给上层模块,虽然能解决你的问题,但如果子模块里的其他依赖不需要主项目访问,还是保持implementation比较好,避免不必要的依赖传递,维持编译效率。
内容的提问来源于stack exchange,提问作者Bubunyo Nyavor




