reales - Cómo crear un proyecto de biblioteca en Android Studio y un proyecto de aplicación que usa el proyecto de biblioteca
introducción a android studio incluye proyectos reales y el código fuente pdf (14)
Soy nuevo en el sistema de compilación Gradle e IntelliJ.
Entonces, ¿cómo creo un Android Library Project (por ejemplo, com.myapp.lib1) y el proyecto de la aplicación (por ejemplo, com.myapp.app) y hago que el sistema de compilación incluya com.myapp.lib1 en el proyecto de la aplicación?
Fui a la Estructura del proyecto -> Módulos -> Proyecto Mi aplicación y agregué una dependencia al proyecto lib. IntelliJ ahora puede reconocer clases del proyecto lib cuando se usa en el proyecto de la aplicación, pero cuando ejecuto el proyecto de la aplicación, hay errores como:
Gradle: error: package com.myapp.lib1 does not exist
Documentación
Esta es la forma recomendada según el consejo dado en la documentación de Android Studio.
Crear un módulo de biblioteca
Cree un nuevo proyecto para crear su biblioteca. Haga clic en Archivo> Nuevo> Nuevo módulo> Biblioteca de Android> Siguiente> (elija nombre)> Finalizar . Luego agregue a su biblioteca las clases y los recursos que desee.
Cuando construya el módulo, se creará un archivo AAR. Puede encontrarlo en project-name/module-name/build/outputs/aar/
.
Agrega tu biblioteca como una dependencia
Puede agregar su biblioteca como una dependencia a otro proyecto como este:
- Importe su archivo AAR de biblioteca con Archivo> Nuevo Módulo> Importar .JAR / .AAR Paquete> Siguiente> (elija ubicación de archivo)> Finalizar . (No importe el código, de lo contrario será editable en demasiados lugares).
En el archivo settings.gradle, asegúrese de que el nombre de su biblioteca esté allí.
include '':app'', '':my-library-module''
En el archivo build.gradle de la aplicación, agregue la línea de compilación a la sección de dependencias:
dependencies { compile project(":my-library-module") }
- Se te pedirá que sincronices tu proyecto con gradle. Hazlo.
Eso es. Debería poder usar su biblioteca ahora.
Notas
Si desea que su biblioteca esté fácilmente disponible para un público más amplio, considere usar JitPac o JCenter .
Como comenta theczechsensation anteriormente, intento buscar sobre Gradle Build Varians y encontré este enlace: http://code.tutsplus.com/tutorials/using-gradle-build-variants--cms-25005 Esta es una solución muy simple. Esto es lo que hice: - En build.gradle:
flavorDimensions "version"
productFlavors {
trial{
applicationId "org.de_studio.recentappswitcher.trial"
flavorDimension "version"
}
pro{
applicationId "org.de_studio.recentappswitcher.pro"
flavorDimension "version"
}
}
Luego tengo 2 versiones más de mi aplicación: pro y trial con 2 differentName de paquete que es 2 applicationId en el código anterior para que pueda subir ambos a Google Play. Todavía codigo en la sección "principal" y uso el getpackageName para cambiar a la versión. Solo ve al enlace que di para más detalles.
Consulte este enlace sobre las configuraciones de proyectos múltiples .
Algunas cosas para destacar, asegúrese de tener su configuración actualizada. Para actualizarla, haga referencia tanto a la aplicación como a los módulos de la biblioteca.
settings.gradle: include '':app'', '':libraries:lib1'', '':libraries:lib2''
También asegúrese de que build.gradle de la aplicación tenga lo siguiente:
dependencies {
compile project('':libraries:lib1'')
}
Debes tener la siguiente estructura:
MyProject/
| settings.gradle
+ app/
| build.gradle
+ libraries/
+ lib1/
| build.gradle
+ lib2/
| build.gradle
El build.gradle de la aplicación debe usar el complemento com.android.application
mientras que cualquier build.gradle de una biblioteca debe usar el complemento com.android.library
.
El IDE de Android Studio debería actualizarse si puede compilar desde la línea de comandos con esta configuración.
En mi caso, usando MAC OS X 10.11 y Android 2.0, y haciendo exactamente lo que Aqib Mumtaz ha explicado.
Pero, cada vez, recibí este mensaje: " Se ha producido un problema al configurar el proyecto": aplicación ''.> No se puede evaluar el módulo xxx: no se ha encontrado la configuración con el nombre'' predeterminado '' . "
Descubrí que el motivo de este mensaje es que Android 2.0 no permite crear una biblioteca directamente. Por lo tanto, primero decidí crear un proyecto de aplicación y luego modificar build.gradle para transformarlo en una biblioteca.
Esta solución no funciona, porque un proyecto de biblioteca es muy diferente a un proyecto de aplicación.
Por lo tanto, he resuelto mi problema de esta manera:
- Primero crea una aplicación estándar (si es necesario);
- A continuación, elija ''Archivo / Crear módulo''
- Vaya al buscador y mueva la carpeta del módulo recién creado en su directorio de marco
Luego continúe con la solución propuesta por Aqib Mumtaz.
Como resultado, su fuente de biblioteca se compartirá sin necesidad de duplicar los archivos fuente cada vez (¡fue una herejía para mí!)
Esperando que esto te ayude.
Hay dos formas simples si una no funciona, intente con la otra.
- Agregue la dependencia de la biblioteca dentro de la dependencia dentro del archivo build.gradle de la biblioteca que usa, y pegue su biblioteca en Bibliotecas Externas.
O
- Simplemente vaya a su carpeta libs dentro de la carpeta de la aplicación y pegue todos sus archivos .jar, por ejemplo, Library. Ahora el truco aquí es que ahora entre en settings.gradle file ahora agregue esta línea "include": app: libs "después de" include ": aplicación ''"Definitivamente funcionará ........... :)
La forma más sencilla para mí de crear y reutilizar un proyecto de biblioteca:
- En un
file > new > new module
proyecto abiertofile > new > new module
(y responde las preguntas de la interfaz de usuario)
- marque / o agregue si en el archivo settings.gradle :
include '':myLibrary''
marque / o agregue si en el archivo build.gradle :
dependencies { ... compile project('':myLibrary'') }
Para reutilizar este módulo de biblioteca en otro proyecto, copie su carpeta en el proyecto en lugar del paso 1 y siga los pasos 2 y 3.
También puede crear un nuevo proyecto de aplicación de estudio . Puede cambiar fácilmente un módulo de aplicación existente a un módulo de biblioteca cambiando la asignación de complemento en el archivo build.gradle a com.android.library.
apply plugin: ''com.android.application''
android {...}
a
apply plugin: ''com.android.library''
android {...}
más here
La forma recomendada de Google Gradle Plugin para configurar tus archivos gradle para crear varios proyectos tiene algunas deficiencias. Si tienes varios proyectos dependiendo de un proyecto de biblioteca, esta publicación explica brevemente la configuración recomendada de Google, sus deficiencias y recomienda una forma diferente de configurar tus archivos gradle. admitir configuraciones de múltiples proyectos en Android Studio:
Una configuración multiproyecto alternativa para android studio
Una forma diferente:
Resulta que hay una forma mejor de administrar proyectos múltiples en Android Studio. El truco consiste en crear proyectos de Android Studio separados para sus bibliotecas y decirle a gradle que el módulo para la biblioteca de la que depende su aplicación se encuentra en el directorio de proyectos de la biblioteca. Si quisiera utilizar este método con la estructura del proyecto que describí anteriormente, haría lo siguiente:
- Cree un proyecto de Android Studio para la biblioteca StickyListHeaders
- Crear un proyecto de Android Studio para App2
- Crear un proyecto de Android Studio para la aplicación 1
- Configure App1 y App2 para compilar los módulos en el proyecto StickyListHeaders.
El 4 ° paso es la parte difícil, así que ese es el único paso que describiré en detalle. Puede hacer referencia a módulos que son externos al directorio de su proyecto agregando una declaración de proyecto en su archivo settings.gradle y configurando la propiedad projectDir en el objeto ProjectDescriptor que devuelve esa declaración de proyecto:
El código uno tiene que poner en settings.gradle
:
include '':library1''
project('':library1'').projectDir = new File(''../StickyListHeader/library1'')
Si ha hecho esto correctamente, notará que los módulos a los que hace referencia su proyecto aparecerán en el navegador del proyecto, incluso si esos módulos son externos al directorio del proyecto:
Esto le permite trabajar en código de biblioteca y código de aplicación simultáneamente. La integración del control de versiones también funciona bien cuando se hace referencia a los módulos externamente de esta manera. Puede confirmar y enviar sus modificaciones al código de la biblioteca del mismo modo que puede confirmar y enviar modificaciones al código de la aplicación.
Esta forma de configurar múltiples proyectos evita las dificultades que plagan la configuración recomendada de Google. Debido a que estamos haciendo referencia a un módulo que está fuera del directorio del proyecto, no tenemos que hacer copias adicionales del módulo de la biblioteca para cada aplicación que dependa de él y podemos versionar nuestras bibliotecas sin ningún tipo de tonto del submódulo git.
Desafortunadamente, esta otra forma de configurar múltiples proyectos es muy difícil de encontrar. Obviamente, no es algo que descubrirá si mira la guía de Google, y en este punto, no hay forma de configurar sus proyectos de esta manera mediante el uso de la interfaz de usuario de Android Studio.
Me pregunto por qué no hay ningún ejemplo de proyecto jar independiente.
En eclipse, solo marcamos el cuadro "Es Biblioteca" en el diálogo de configuración del proyecto.
En el estudio de Android, seguí estos pasos y obtuve un archivo jar.
Crea un proyecto.
abrir archivo en el menú izquierdo del proyecto. (app / build.gradle): Gradle Scripts> build.gradle (Módulo: XXX)
cambiar una línea:
apply plugin: ''com.android.application''
->''apply plugin: com.android.library''
eliminar applicationId en el archivo:
applicationId "com.mycompany.testproject"
proyecto de construcción: Build> Rebuild Project
entonces puedes obtener el archivo aar: app> build> outputs> aar folder
cambiar el nombre de la extensión de archivo
aar
enzip
descomprimir, y puede ver
classes.jar
en la carpeta. renombrar y usarlo!
De todos modos, no sé por qué Google hace que la creación de jar sea tan problemática en el estudio de Android.
No olvides utilizar el apply plugin: ''com.android.library''
en tu build.gradle
lugar de aplicar el complemento: ''com.android.application''
Para Intellij IDEA (y Android Studio), cada biblioteca es un Módulo. Piense en un Módulo en Android Studio como un equivalente al proyecto en Eclipse. Proyecto en Android Studio es una colección de módulos. Los módulos pueden ser aplicaciones ejecutables o módulos de biblioteca.
Por lo tanto, para agregar un nuevo proyecto de biblioteca Android, debe crear un módulo de tipo "Biblioteca Android". A continuación, agregue este módulo de biblioteca a la lista de dependencias de su módulo principal (módulo de aplicación).
Para crear una biblioteca:
Archivo> Nuevo módulo
seleccione la biblioteca de Android
Para usar la biblioteca, agrégala como una dependencia:
Archivo> Estructura del proyecto> Módulos> Dependencias
A continuación, agregue el módulo (biblioteca de Android) como una dependencia del módulo.
Ejecute su proyecto. Funcionará
Propósito: biblioteca de Android en un solo lugar: compartir en varios proyectos http://raevilman.blogspot.com/2016/02/android-library-project-using-android.html
Puede agregar un nuevo módulo a cualquier aplicación como dice Blundell en su respuesta y luego consultarlo desde cualquier otra aplicación.
Si desea mover el módulo a cualquier lugar de su computadora, simplemente mueva la carpeta del módulo (los módulos son completamente independientes), entonces tendrá que hacer referencia al módulo.
Para hacer referencia a este módulo, debe hacer lo siguiente:
En el archivo build.gradle de su aplicación, agregue:
dependencies { ... compile project('':myandroidlib'') }
En el archivo settings.gradle, agregue lo siguiente:
include '':app'', '':myandroidlib'' project('':myandroidlib'').projectDir = new File(PATH_TO_YOUR_MODULE)
Tenía la misma pregunta y la resolvió de la siguiente manera:
Situación de inicio :
FrigoShare (root)
|-Modules: frigoshare, frigoShare-backend
Objetivo : desea agregar un módulo llamado dataformats
- Agregue un nuevo módulo (p. Ej .:
Java Library
) Asegúrate de que tu
settings.gradle
así (normalmente automáticamente):include '':frigoshare'', '':frigoShare-backend'', '':dataformats''
Asegúrese ( manualmente ) de que los archivos
build.gradle
de los módulos que necesitan usar su biblioteca tengan la siguiente dependencia:dependencies { ... compile project('':dataformats'') }