Debe evitarse el uso de flatDirs porque no admite ningún formato de metadatos.

3 minutos de lectura

Veo la siguiente advertencia cuando construyo en Android Studio:

Debe evitarse el uso de flatDirs porque no admite ningún formato de metadatos.

ingrese la descripción de la imagen aquí

Me estoy integrando con un aar que está empaquetado localmente en mi libs directorio. ¿Hay otra forma de integrar sin agregar el siguiente bloque problemático a mi build.gradle?

repositories {
    flatDir {
        dirs 'libs'
    }
}

  • Podría publicar ese AAR en Maven Local (publishToMavenLocal) y consumirlo desde allí. O publíquelo en algún otro repositorio de Maven (por ejemplo, uno privado para su equipo).

    – CommonsWare

    1 de julio de 2021 a las 19:01

  • También puede definir un repositorio local de Maven o Ivy directamente dentro de la estructura de directorios de su proyecto. De esta forma, podría conservar los archivos con el proyecto y seguir beneficiándose del uso de metadatos de dependencia. Supongo que Maven requiere que agregues (y tal vez crees) .pom archivos, pero creo que Ivy podría extraer los metadatos directamente del nombre del archivo.

    – Lukas Körfer

    2 de julio de 2021 a las 0:58

  • @LukasKörfer, ¿puede explicar un poco más lo que quiere decir con “También puede definir un repositorio local de Maven o Ivy directamente dentro de la estructura del directorio de su proyecto”? ¿Hay alguna guía a la que pueda vincular para esto? No entiendo qué pondrías para la “url” del repositorio Maven/Ivy en tu build.gradle en este caso. Presumiblemente, necesitaría colocar una URL de tipo “archivo: //” y esto dependería exactamente de dónde se encuentra el proyecto en el sistema de archivos, lo que puede diferir entre los desarrolladores, sin mencionar el sistema operativo.

    – Adam Burley

    7 de julio de 2021 a las 14:23

Avatar de usuario de Usman Rana
usman rana

dentro de tu build.gradle archivo,
agregue la siguiente pieza de código en el bloque de Android:

android { ..
  sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

y agregue la dependencia como:

implementation (files("libs/test_name.aar"))

eliminar el siguiente bloque:

repositories {
    flatDir {
        dirs 'libs'
    }
}

  • ¿En qué archivo? Por favor da más detalles

    – Tortuga ninja

    10 de mayo de 2022 a las 9:14

  • en build.gradle del módulo de la aplicación

    -Usman Rana

    10 de mayo de 2022 a las 9:36

Utilizar el LIBRES directorio. Elimine ese código y reemplácelo por el siguiente en el módulo.gradle.

android {
    sourceSets {
        main {
            jniLibs.srcDirs = ['libs']
        }
    }
}

Puedes agregar el aar así, sin necesidad de usar flatDir :

dependencies {
    implementation files('/path/to/dir/something_local.aar')
}

  • Esto no funciona para mí. Tal vez espera la aar estar en los proyectos lib dir, o no funciona en Windows.

    – Daniel F.

    11 oct 2021 a las 12:11

  • Estoy en Windows y está funcionando. La ruta es relativa al submódulo gradle, no a la carpeta raíz del proyecto. No se espera nada relacionado con lib. Es solo un camino.

    – Petrakeas

    14 oct 2021 a las 9:18


  • sencillo y funcional

    – manejador de la suerte

    21 de septiembre de 2022 a las 7:48

  • Paso 1. En el archivo app/build.gradle
    apply plugin: ....
    
    android {
     sourceSets {
            main {
                jniLibs.srcDirs = ['libs']
            }
        }
    }
  • Paso 2. A nivel de proyecto/archivo build.gradle, elimine el siguiente bloque:
allprojects {
    repositories {
        flatDir {
            dirs 'libs'
        }
      }
    }
    

¿Ha sido útil esta solución?