Closed chenfei0928 closed 2 years ago
@trycatchx btw,问下大佬gradle中指定flatDir的作用到底是啥...和不加依赖项目自身aar有啥区别么
@asker517
1、 flatDir
的作用:是指定 aar
或者 jar
包的存放位置(绝对路径 parent dir path) ,示例代码,目的是module 为了找到指定依赖的aar/jar
。毕竟依赖 aar/jar 只需要写入名字譬如:
implementation (name: 'libXXX', ext: 'aar')
implementation files("libXXX.aar")
2、“不加依赖项目自身aar” 这个没有明白是什么意思。
3、至于上面的编译错误信息:
What went wrong:
Failed to apply plugin class 'plugin.RocketXPlugin'.
> Build was configured to prefer settings repositories over project repositories but repository 'flatDir' was added by plugin class 'plugin.RocketXPlugin'
原因是因为 你那边强制不使用存储库,需要把这个设置 repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
去掉即可。
rockectx
插件中默认使用了 flatDir
实现 localMaven
的功能,速度更快。所以不能禁用存储库,不然就不能复用 module
已经编译好的 aar 。
@trycatchx 明白了 感谢大佬 对于这个项目本身去指定local aar位置当然是没问题的
不加依赖项目自身aar”
我的意思是通常网上大多数文章都在依赖本地项目aar的时候都会加上诸如flatDir 'libs'
这种东西,如果不加flatDir
,譬如项目中把Local aar放到libs
目录下直接用
dependencies.apply {
add(implementation, fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar"))))
}
这种方式去引用有没有啥差异
@asker517
dependencies.apply {
add(implementation, fileTree(mapOf("dir" to "libs", "include" to listOf("*.jar", "*.aar")))) // 这里不支持"*.aar",gradle 4.0+就不支持aar 打包进 aar
}
上面代码生效于当前的module
,如果 module 中的libs
的 aar/ jar
需要被其他module 引用,那就要用 flatDir
等方式,把jar/aar
提供出去。
@trycatchx 非常感谢! 这样子啊~ 明白了明白了! 这个库很nice,效果很明显
Android Studio/AGP 版本:7.1.1 Gradle版本:7.2