Pregunta ¿Cómo agrego un proyecto de biblioteca a Android Studio?


¿Cómo agrego un proyecto de biblioteca (como Sherlock ABS) a Estudio Android?

(No al antiguo paquete basado en ADT Eclipse, sino al nuevo Estudio Android.)


740
2018-05-16 12:55


origen


Respuestas:


Actualización para Android Studio 1.0

Desde que se lanzó Android Studio 1.0 (y una gran cantidad de versiones entre v1.0 y una de las primeras desde el momento de mi respuesta anterior) algunas cosas han cambiado.

Mi descripción se centra en agregar un proyecto de biblioteca externo a mano a través de archivos Gradle (para una mejor comprensión del proceso). Si desea agregar una biblioteca a través del creador de Android Studio, solo revise la respuesta a continuación, con la guía visual (existen algunas diferencias entre Android Studio 1.0 y las de capturas de pantalla, pero el proceso es muy similar).

Antes de comenzar a agregar una biblioteca a su proyecto a mano, considere agregar la dependencia externa. No se meterá en la estructura de su proyecto. Casi todas las bibliotecas conocidas de Android están disponibles en una Maven repositorio y su instalación toma solo una línea de código en el app/build.gradle archivo:

dependencies {
     compile 'com.jakewharton:butterknife:6.0.0'
}

Agregar la biblioteca

Aquí está el proceso completo de agregar una biblioteca externa de Android a nuestro proyecto:

  1. Crea un nuevo proyecto a través del creador de Android Studio. Yo lo llamé Hola Mundo.
  2. Aquí está la estructura original del proyecto creada por Android Studio:
HelloWorld/
      app/
           - build.gradle  // local Gradle configuration (for app only)
           ...
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. En el directorio raíz (HelloWorld/), crea una nueva carpeta: /libs en el que colocaremos nuestras bibliotecas externas (este paso no es obligatorio, solo para mantener una estructura de proyecto más limpia).
  2. Pega tu biblioteca en el recién creado /libs carpeta. En este ejemplo, utilicé Biblioteca PagerSlidingTabStrip (Simplemente descargue ZIP de GitHub, cambie el nombre del directorio de la biblioteca a "PagerSlidingTabStrip" y cópielo). Aquí está la nueva estructura de nuestro proyecto:
HelloWorld/
      app/
           - build.gradle  // Local Gradle configuration (for app only)
           ...
      libs/
           PagerSlidingTabStrip/
                - build.gradle // Local Gradle configuration (for library only)
      - build.gradle // Global Gradle configuration (for whole project)
      - settings.gradle
      - gradle.properties
      ...
  1. Edite settings.gradle agregando su biblioteca a include. Si usa una ruta personalizada como yo, también debe definir el directorio del proyecto para nuestra biblioteca. Todo un settings.gradle debería verse a continuación:

    include ':app', ':PagerSlidingTabStrip'
    project(':PagerSlidingTabStrip').projectDir = new File('libs/PagerSlidingTabStrip')
    

5.1 Si enfrenta el error "Configuración predeterminada", intente esto en lugar del paso 5,

    include ':app'
    include ':libs:PagerSlidingTabStrip'
  1. En app/build.gradle agregue nuestro proyecto de biblioteca como una dependencia:

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'
        compile project(":PagerSlidingTabStrip")
    }
    

6.1. Si siguió el paso 5.1, luego siga esto en lugar de 6,

    dependencies {
        compile fileTree(dir: 'libs', include: ['*.jar'])
        compile 'com.android.support:appcompat-v7:21.0.3'

        compile project(":libs:PagerSlidingTabStrip")
    }
  1. Si su proyecto de biblioteca no tiene build.gradle archivo que tiene que crearlo manualmente. Aquí hay un ejemplo de ese archivo:

        apply plugin: 'com.android.library'
    
        dependencies {
            compile 'com.android.support:support-v4:21.0.3'
        }
    
        android {
            compileSdkVersion 21
            buildToolsVersion "21.1.2"
    
            defaultConfig {
                minSdkVersion 14
                targetSdkVersion 21
            }
    
            sourceSets {
                main {
                    manifest.srcFile 'AndroidManifest.xml'
                    java.srcDirs = ['src']
                    res.srcDirs = ['res']
                }
            }
        }
    
  2. Además, puede crear una configuración global para su proyecto que contendrá las versiones de SDK y la versión de herramientas de compilación para cada módulo para mantener la coherencia. Solo edite gradle.properties archivar y agregar líneas:

    ANDROID_BUILD_MIN_SDK_VERSION=14
    ANDROID_BUILD_TARGET_SDK_VERSION=21
    ANDROID_BUILD_TOOLS_VERSION=21.1.3
    ANDROID_BUILD_SDK_VERSION=21
    

    Ahora puedes usarlo en tu build.gradle archivos (en los módulos de aplicaciones y bibliotecas) como a continuación:

    //...
    android {
        compileSdkVersion Integer.parseInt(project.ANDROID_BUILD_SDK_VERSION)
        buildToolsVersion project.ANDROID_BUILD_TOOLS_VERSION
    
        defaultConfig {
            minSdkVersion Integer.parseInt(project.ANDROID_BUILD_MIN_SDK_VERSION)
            targetSdkVersion Integer.parseInt(project.ANDROID_BUILD_TARGET_SDK_VERSION)
        }
    }
    //...
    
  3. Eso es todo. Simplemente haga clic en sincronizar el proyecto con el icono de Gradle synchronise with Gradle. Su biblioteca debe estar disponible en su proyecto.

Google I / O 2013 - El nuevo sistema de compilación SDK de Android  es una gran presentación sobre la construcción de aplicaciones de Android con Gradle Build System: como dijo Xavier Ducrohet:

Android Studio se trata de editar y depurar y crear perfiles.   No se trata de construir más.

Al principio puede ser un poco confuso (especialmente para aquellos que trabajan con Eclipse y nunca he visto a la hormiga - como yo;)), pero al final Gradle nos da grandes oportunidades y vale la pena aprender este sistema de construcción.


687
2018-05-19 20:35



Aquí está la guía visual:

Actualizar para Android Studio 0.8.2:

En Android Studio 0.8.2, ve a Estructura del proyecto -> bajo Módulos solo presiona el botón más y selecciona Importar proyecto existente e importar actionbarsherlock. Luego sincroniza tus archivos Gradle.

Si enfrenta el error

Error: la revisión de SDK Build Tools (xx.x.x) es demasiado baja. Mínimo   requerido es aa.y.y

solo abre el build.gradle presentar en actionbarsherlock directorio y actualizar el buildToolsVersion al sugerido.

android {
  compileSdkVersion 19
  buildToolsVersion 'yy.y.y'

Android Studio 0.8.2


Menú Archivo -> Estructura del proyecto...:

First

Módulo -> Importar módulo

Second

Después de importar el módulo de biblioteca, seleccione tu módulo de proyecto y agregue la dependencia:

Third

Y luego selecciona el módulo importado:

Forth


264
2018-05-19 12:33



Use el menú Archivo -> Estructura del proyecto -> Módulos.

Empecé a usarlo hoy. Es un poco diferente.

Para Sherlock, tal vez quiera eliminar su directorio de prueba o agregar el junit.jar archivo a la ruta de clases

Para importar la biblioteca usando gradle, puede tener que agregarlo al dependencies sección de su build.gradle (el del módulo).

P.ej.

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.1.0'
    compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar'
}

Android Studio está cambiando.

Existe una sección llamada "Configuración de módulo abierto" si haga clic derecho en una carpeta de módulo en la sección de proyecto de Android Studio (estoy usando la versión 0.2.10).


107
2018-05-16 12:57



Yo consideraría Dependencias, bibliotecas de Android y configuración de proyectos múltiples lectura necesaria. Por favor tómese unos minutos para hacerlo.

Particularmente, en el caso de un proyecto de biblioteca que no sea de jar, lea el siguiente fragmento de la fuente anterior:

Los proyectos de Gradle también pueden depender de otros proyectos de gradle utilizando una configuración de proyectos múltiples.   Una configuración de múltiples proyectos generalmente funciona teniendo todos los proyectos como subcarpetas de un proyecto raíz determinado.

Por ejemplo, dado a la siguiente estructura:

MyProject/
 + app/
 + libraries/
    + lib1/
    + lib2/

Podemos identificar 3 proyectos. Gradle los referenciará con el siguiente nombre:

:app
:libraries:lib1
:libraries:lib2

Cada proyecto tendrá su propia build.gradle declarando cómo se construye.   Además, habrá un archivo llamado settings.gradle en la raíz que declara los proyectos.   Esto le da la siguiente estructura:

MyProject/
 | settings.gradle
 + app/
    | build.gradle
 + libraries/
    + lib1/
       | build.gradle
    + lib2/
       | build.gradle

El contenido de settings.gradle es muy simple:

include ':app', ':libraries:lib1', ':libraries:lib2'

Esto define qué carpeta es realmente un proyecto de Gradle.

El proyecto de aplicación probablemente dependa de las bibliotecas, y esto se hace declarando las siguientes dependencias:

dependencies {
    compile project(':libraries:lib1')
}

Tenga en cuenta que hubo poco o ningún uso de Android Studio GUI para que esto suceda.

Actualmente estoy usando submódulos git para vincular la biblioteca anidada al repositorio de git de la biblioteca real para evitar un desorden de dependencia.


49
2017-10-14 08:10



Acabo de encontrar una manera más fácil (en lugar de escribir directamente en los archivos .gradle).

Esto es para Android Studio 1.1.0.

  1. Menú Archivo -> Nuevo módulo ...:

    Import Existing Project

    Haga clic en "Importar proyecto existente".

  2. Seleccione la biblioteca deseada y el módulo deseado.

  3. Haga clic en finalizar. Android Studio importará la biblioteca en su proyecto. Sincronizará archivos gradle.

  4. Agregue el módulo importado a las dependencias de su proyecto.

    Haga clic con el botón derecho en la carpeta de la aplicación -> Abrir configuración del módulo -> vaya a la pestaña de dependencias -> Haga clic en el botón '+' -> haga clic en Dependencia del módulo.

    El módulo de la biblioteca se agregará luego a las dependencias del proyecto.

    Add library module

  5. ???

  6. Lucro


23
2018-06-29 16:49



La manera más fácil que encontré para incluir un proyecto de biblioteca externo es (por ejemplo, para incluir una biblioteca de Facebook que está almacenada en un directorio en la carpeta de dependencias):

  1. En settings.gradle add

    include ':facebook'
    
    project(':facebook').projectDir = new File(settingsDir, '../dependencies/FacebookSDK')
    
  2. En la sección de dependencias build.gradle, agregue

    compile project ('facebook')
    

Todo lo que queda por hacer es sincronizar el proyecto con archivos gradle.


15
2017-08-08 19:58



Una forma sencilla de agregar un archivo JAR como biblioteca a su proyecto de Android Studio:

a) Copie sus archivos * .jar

b) pegar en el libs directorio bajo sus proyectos:

Enter image description here

c) Agregar a build.gradle:

dependencies {
    ...
    compile files('libs/ScanAPIAndroid.jar', 'libs/ScanAPIFactoryAndroid.jar', .., ..)
}

segundo) Si su proyecto del ejemplo com.example.MYProject y libraries com.example.ScanAPI tiene el mismo espacio de nombres com.example, Android Studio verificará tu compilación y creará todos los cambios necesarios en tu proyecto. Después de eso, puede revisar estas configuraciones en el menú Archivo -> Estructura del proyecto.

do) Si su proyecto y bibliotecas tienen un espacio de nombres diferente tiene que hacer clic derecho en la biblioteca y seleccionar la opción "Agregar como biblioteca" y seleccionar el tipo que necesita.

Recuerde que la opción "Estructura del proyecto" no está haciendo ningún cambio automático en "build.gradle" en la versión actual de Android Studio (0.2.3). Tal vez esta característica estará disponible en las próximas versiones.


13
2017-08-27 21:40



Opción 1: colocar archivos en el libs / directorio del proyecto

El archivo build.gradle relevante se actualizará automáticamente.

Opción 2: modificar el archivo build.gradle manualmente

Abra su archivo build.gradle y agregue una nueva regla de compilación al cierre de las dependencias. Por ejemplo, si desea agregar servicios de Google Play, la sección de dependencias de su proyecto se vería así:

dependencies {
     compile fileTree(dir: 'libs', include: ['*.jar'])
     compile 'com.google.android.gms:play-services:6.5.+'
   }

Opción 3: usar la interfaz de usuario de Android Studio

En el panel Proyecto, Controlar Haga clic en el módulo al que desea agregar la dependencia y seleccione Abrir configuración de módulo.

Enter image description here

Seleccione la pestaña Dependencias, seguido por el botón + en la esquina inferior izquierda. Puede elegir de la siguiente lista de opciones:

  • Dependencia de la Biblioteca
  • File Dependency
  • Dependencia del módulo

A continuación, puede ingresar más información sobre la dependencia que desea agregar a su proyecto. Por ejemplo, si elige Dependencia de biblioteca, Android Studio muestra una lista de bibliotecas para que elija.

Una vez que haya agregado su dependencia, verifique su archivo build.gradle a nivel de módulo. Debería haberse actualizado automáticamente para incluir la nueva dependencia.

Fuente


11
2018-04-03 06:32



Si necesita acceder a los recursos de un proyecto de biblioteca (como lo hace con ABS), asegúrese de agregar el módulo / proyecto de biblioteca como una "Dependencia de módulo" en lugar de una "Biblioteca".


8
2018-05-19 01:04



Así es como funciona para mí en Android Studio 1.5

En el proyecto donde desea agregar un proyecto de biblioteca externa, ir al menú Archivo -> Nuevo -> * Importar nuevo módulo **, vaya al proyecto de la biblioteca que desea agregar a su proyecto, seleccione agregar el módulo 'biblioteca' en su proyecto. Conseguirás settings.gradle en sus proyectos, al lado de la aplicación, biblioteca incluida, algo como esto:

include ':app', ':library'

Añadir build.gradle (Módulo: aplicación) en la sección de dependencias:

Compilar proyecto (': biblioteca')

Reconstruye el proyecto, y eso es todo.

* Puede agregar tantas bibliotecas (módulos) como desee. En ese caso, en settings.gradle tendrás:

 include ':app', ':lib1', ':lib2', ...

Y en build.gradle, necesitarás tener:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])

    // Some other dependencies...

    compile project(':lib1')
    compile project(':lib2')
    ...
}

8
2017-12-11 15:04