Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Android Gradle agrega biblioteca externa y bibliotecas externas anidadas a un proyecto

¿Cómo puedo añadir una biblioteca externa y bibliotecas externas anidadas a un proyecto android?


Mi estructura de proyecto (No se permite cambiar)

  • Cómo configurar la versión de la aplicación de Android por número de construir en Jenkins?
  • ¿Por qué mi aplicación comienza increíblemente lento (10s +) en la primera ejecución, mostrando sólo pantalla blanca en Android 5.0?
  • Gradle: Error: más de una biblioteca con el nombre del paquete 'com.google.android.gms'
  • No se pudo encontrar la propiedad 'xxxx' en com.android.build.gradle.AppExtension_Decorated
  • Android Studio: Cambiar una URL dependiendo de buildtype? (Utilizado para probar en depuración / liberación)
  • Excluir variantes de construcción específicas
    • Aplicaciones /
      • App1 /
        • Construir un gradiente
        • Settings.gradle
      • Bibliotecas
        • Biblioteca1 /
          • Buildgrade
          • Settings.gradle
        • Biblioteca2 /
          • Buildgrade
          • Settings.gradle
        • Biblioteca3 /
          • Buildgrade
          • Settings.gradle
        • Library4 /
          • Buildgrade
          • Settings.gradle

    App1

    App1 / build.gradle

    buildscript { ... } apply plugin: 'android' dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile project(':..:libraries:library1') compile project(':..:libraries:library2') compile project(':..:libraries:library3') compile project(':..:libraries:library4') } android { ... } 

    App1 no depende directamente de library3 o library4 , sin embargo, se quejará si no los build.gradle en las dependencias en el archivo build.gradle y el archivo settings.gradle . Así que, los he incluido sólo para evitar que se quejen.

    App1 / settings.gradle

     include ':' include '..:libraries:library1' include '..:libraries:library2' include '..:libraries:library3' include '..:libraries:library4' 

    Biblioteca1

    Library1 / build.gradle

     buildscript { ... } apply plugin: 'android-library' dependencies { compile fileTree(dir: 'libs', include: '*.jar') compile project(':..:library3') compile project(':..:library4') } android { ... } 

    Library1 / settings.gradle

     include ':' include '..:library3' include '..:library4' 

    Biblioteca2..4

    Library2..4 / build.gradle

     buildscript { ... } apply plugin: 'android-library' dependencies { compile fileTree(dir: 'libs', include: '*.jar') } android { ... } 

    Library2..4 / settings.gradle

     include ':' 

    Al intentar gradlew clean build en App1 consigo el error siguiente:

     FAILURE: Build failed with an exception. * Where: Build file '/home/user/projects/branches/branch1/Apps/libraries/library1/build.gradle' line: 15 * What went wrong: A problem occurred evaluating project ':..:library:library1'. > Project with path ':..:library3' could not be found in project ':..:library:library1'. 

    La línea 15 es el compile project(':..:library3') en el archivo library1/build.gradle .

    ¿Cómo puedo añadir una biblioteca externa y bibliotecas externas anidadas a un proyecto android?

  • La jerarquía no funciona para mi dispositivo
  • Uso de Proguard para Android en Eclipse obtuvo error
  • Android Studio + Robolectric + Gradle Class Not Found Excepción
  • Pérdida severa de paquetes UDP en algunos dispositivos Android
  • Android difuminado superficie utilizada en la cámara
  • No puede encontrar clase de símbolo Constructor
  • 3 Solutions collect form web for “Android Gradle agrega biblioteca externa y bibliotecas externas anidadas a un proyecto”

    En tu nivel superior, el archivo settings.gradle (App1 / settings.gradle) hace algo como esto para cada biblioteca

     include ':library1' include ':library2' include ':library3' include ':library4' project(':library1').projectDir = new File(rootProject.projectDir, '../libraries/library1') project(':library2').projectDir = new File(rootProject.projectDir, '../libraries/library2') project(':library3').projectDir = new File(rootProject.projectDir, '../libraries/library3') project(':library4').projectDir = new File(rootProject.projectDir, '../libraries/library4') 

    Quite los otros archivos settings.gradle, no los necesita

    Entonces en cada script de compilación solo necesitas usar

     compile project (':library1') compile project (':library2') etc.... 

    Como se indicó anteriormente, sólo utilice un único archivo settings.gradle en el proyecto raíz (App1).

    A continuación, desde su carpeta App1 ejecute gradlew clean :library1:build para validar que library1 está construyendo correctamente.

    En cuanto a la cuestión de App1 que se queja de las bibliotecas 3 y 4 que faltan, ¿está seguro de que no tiene ningún código en la aplicación que hace referencia directa a estas bibliotecas, ya sea que o las bibliotecas no se encuentran al compilar biblioteca1. Construir cada biblioteca individualmente para validar que todos construyen ok.

    Una pregunta. ¿Necesita este árbol de dependencias?

     --- App |--- Library 2 |--- Library 1 |--- Library 3 |--- Library 4 

    En caso afirmativo, su aplicación no necesita importar las bibliotecas 3 y 4. Estas dependencias están disponibles en la Biblioteca 1.

    Acerca de los archivos settings.gradle. ¿Por qué uno en cada módulo? Este archivo sólo se utiliza en el proyecto raíz (como el espacio de trabajo de Eclipse) para hacer referencia a los módulos (App, Library 1, Library 2, etc …)

    Esto te ayuda?

    Estoy haciendo esto por caminos relativos:

     include '..:ambilWarna' include '..:excel' include '..:pdfjet' include '..:commons' include '..:volley' include ':odb2' include ':azure' include ':carBase' include ':fuelTrackerLib' include ':comsourcecastlelogbook' 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.