应避免使用 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,因为它不支持任何元数据格式的主要内容,如果未能解决你的问题,请参考以下文章

OSG 四元数Quat

四元数旋转与旋转矩阵略有不同

使用四元数的Unity3D相对偏移对象旋转

如何在不使用 transform.Rotate 的情况下在其本地或世界轴上旋转带有第二个四元数的四元数?

几何系列四元数的基础

数据库优化查询方法