应避免使用 flatDirs,因为它不支持任何元数据格式
Posted
技术标签:
【中文标题】应避免使用 flatDirs,因为它不支持任何元数据格式【英文标题】:Using flatDirs should be avoided because it doesn't support any meta-data formats 【发布时间】:2021-09-13 19:47:28 【问题描述】:我在 android Studio 中构建时看到以下警告:
我正在与本地打包在我的 libs
目录中的 aar 集成。是否有另一种方法可以在不将以下有问题的块添加到我的build.gradle
的情况下进行集成?
repositories
flatDir
dirs 'libs'
【问题讨论】:
您可以将该 AAR 发布到 Maven Local (publishToMavenLocal
) 并从那里使用它。或者,发布到其他一些 Maven 存储库(例如,您团队的私有存储库)。
您也可以直接在项目目录结构中定义本地 Maven 或 Ivy 存储库。这样,您可以将文件保留在项目中,但仍然可以从依赖元数据的使用中受益。我猜 Maven 需要你添加(并且可能创建).pom
文件,但我认为 Ivy 可以直接从文件名中提取元数据。
@LukasKörfer 你能解释一下“你也可以直接在你的项目目录结构中定义一个本地 Maven 或 Ivy 存储库”的意思吗?您可以为此链接到任何指南吗?在这种情况下,我不明白您会在 build.gradle 中为 Maven/Ivy 存储库的“url”添加什么内容。大概您需要放置一个“file://”类型的 URL,这将取决于项目所在文件系统的确切位置,这可能因开发人员而异,更不用说操作系统了
【参考方案1】:
在 android 块中添加以下代码:
android ..
sourceSets
main
jniLibs.srcDirs = ['libs']
并将依赖添加为:
implementation (files("libs/test_name.aar"))
删除以下块:
repositories
flatDir
dirs 'libs'
【讨论】:
【参考方案2】:使用 LIBS 目录。删除该代码并将其替换为 module.gradle 中的以下代码。
android
sourceSets
main
jniLibs.srcDirs = ['libs']
【讨论】:
【参考方案3】:你可以像这样添加aar,不需要使用flatDir
:
dependencies
implementation files('/path/to/dir/something_local.aar')
【讨论】:
这对我不起作用。也许它希望aar
在项目 lib
目录中,或者它在 Windows 上不起作用。
我在 Windows 上,它正在工作。该路径是相对于 gradle 子模块的,而不是根项目文件夹。它不期待与lib
相关的任何内容。这只是一条路径。以上是关于应避免使用 flatDirs,因为它不支持任何元数据格式的主要内容,如果未能解决你的问题,请参考以下文章