Proyecto de Biblioteca de Android usando Android Studio


Esta pregunta podría haber sido respondida en algún lugar, pero no pudo encontrar la adecuada.

Quiero saber cómo puedo crear un proyecto de biblioteca de utilidades común en Android Studio. Quiero escribir algunas clases comunes y algunos métodos comunes dentro de ellos para usar en proyectos de aplicaciones Android. Probablemente como cómo .dll se encuentran en Windows world: un conjunto de métodos comunes que se pueden compartir entre varios consumidores.

Gracias de antemano.

Author: kalehv, 2014-01-23

6 answers

La forma más sencilla de hacer esto:

  1. Haz clic derecho en tu proyecto abierto en Android Studio y selecciona New > Module

  2. En el panel izquierdo, elija Android Library y haga clic en siguiente.

  3. Ingrese todos los detalles, desmarque Crear actividad, Tema y todos si no es necesario.

  4. Elige el mismo nivel de API que tu proyecto y Next, Next, Next .

Ahora verá otro directorio dentro de su proyecto, build.gradle para la biblioteca se configurará automáticamente para usted.

Si el nombre de su módulo / biblioteca es "mylibrary",

include ':mylibrary' 

Se añadirá automáticamente en la configuración de .gradle archivo dentro del directorio raíz de tu proyecto.

Ahora abre tu módulo principal e inserta esta línea en el bloque de dependencias :

compile project(':mylibrary')

Si desea utilizar la misma biblioteca en otros proyectos, tiene que copiar el módulo de biblioteca a ese proyecto en particular utilizando File Explore y tiene que configurar ajustes.gradle y la compilación del módulo principal .gradle manualmente.

 27
Author: pyus13,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 09:11:07

Una vieja pregunta, pero incluso ahora no parece haber una solución propper para bibliotecas en AndroidStudio. He estado buscando en hacer el paso de migración desde hace algún tiempo y esto es lo que encontré.

Mi 'solución'

Digamos que tenemos una Biblioteca (llamada lib) que contiene código compartido y un proyecto de aplicación (llamado app) que quiere usar el código de dicha biblioteca.

La clave es definir un proyecto en settings.gradle en la raíz del Proyecto (/Some/Path/MyProjects/Project/settings.gradle) Este archivo debe ya existen y contienen algo como include ':app'.

Modificaremos este archivo para incluir también la biblioteca Y definir la biblioteca con las siguientes dos líneas:

/Algunos/Path/MyProjects/Project / settings.gradle

...
// tell gradle we want to include a module called 'lib'
include 'lib'
// tell gradle there is a module called 'lib', found in a specific directory
// Note the /app on the end, the project structure wraps a project around a module, you want to refer that module!
project (':lib').projectDir = new File('/Some/Path/MyProjects/Library/app')
...

También edita la compilación de proyectos.gradle /Some/Path/MyProjects/Project/app/build.gradle para depender del módulo recién agregado lib

/Algunos/Path/MyProjects/Project/app / build.gradle '

...
dependencies {
    ...
    compile project (':lib') // we want to depend on our library
}
...

Extra

Cuando se trabaja con varios desarrolladores o para en aras de la flexibilidad, utilizo mi gradle.properties en mi directorio .gradle (para sistemas basados en *nix que generalmente se encuentran en homedir, no estoy seguro de dónde lo busca Windows). Haga tenga en cuentaque es posible que necesite crear el directorio y el archivo usted mismo.

En este archivo puedes crear, si lo deseas, constantes que puedes usar en todos tus archivos de gradle. Por ejemplo, el mío contiene algo como lo siguiente:

theconstant=/Some/Path/MyProjects/Library/app

Tenga en cuenta las citas aparentemente faltantes (no estoy seguro de si thats really needed tho) Ahora podemos reemplazar

project (':lib').projectDir = new File('/Some/Path/MyProjects/Library/app')

Con

project (':lib').projectDir = new File(theconstant)

Ahora usted y su equipo podrían definir esta constante (que podría diferir por máquina) y cambiar la ruta en consecuencia.

Pros

  • ¡Ya no hay que hacer frente a bibliotecas enteras!
  • Flexibilidad, puede editar la biblioteca en la ventana del proyecto
  • Varios desarrolladores que trabajan en los mismos proyectos pueden definir sus propias rutas
  • La biblioteca se compila en los proyectos' tiempo de compilación (BuildConfig.DEBUG!)

Cons

  • Ninguno hasta ahora

No he encontrado la oportunidad de probar correctamente esto, sin embargo, esto parece ser la solución más elegante por el momento! Me gustaría escuchar sus opiniones al respecto.

 19
Author: justinvdk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-11-08 19:35:30

Solo estoy haciendo:

include '..:commons'

En ajustes.gradle

Y:

  compile project(':..:commons')

En construcción.gradle del proyecto de referencia

Para que pueda colocar su lib de uso común fuera del proyecto

 2
Author: stefan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-31 08:06:59

Tu construcción.gradle debería verse algo como esto

apply plugin: 'android-library'

repositories {
    mavenCentral()
} 
dependencies {
compile 'com.android.support:support-v4:18.0.0'
}

android {
compileSdkVersion 18
buildToolsVersion '18.1.1'

sourceSets {
    main {
        manifest.srcFile 'AndroidManifest.xml'
        java.srcDirs = ['src']
        res.srcDirs = ['res']
    }
}
}

Mira la primera línea

 1
Author: Bri6ko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 03:32:26

Cuando creas un nuevo proyecto en Android Studio, una de las opciones es "marcar como biblioteca".
alternativamente, simplemente crea el proyecto como cualquier otro. luego, cuando lo uses en otro lugar, en el archivo gradle de la biblioteca, asegúrate de cambiar apply-plugin "android" a apply-plugin "android-library" y agregarlo como una dependencia a la aplicación que lo está usando. Para obtener más información sobre cómo agregar el proyecto creado como una biblioteca, consulte aquí.

 0
Author: adityajones,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:54:28

Simplemente crear un proyecto normal, si usted desea utilizar como biblioteca abierta project structure en la aplicación que desea utilizar y añadir la intención de biblioteca en Dependencies.

 0
Author: ojonugwa ochalifu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-01-23 03:31:25