Soy nuevo en el sistema de construcción Gradle e IntelliJ.
Entonces, ¿cómo creo un proyecto de biblioteca de Android (por ejemplo, com.myapp.lib1) y el proyecto de aplicación (por ejemplo, com.myapp.app) y hago que el sistema de compilación incluya com.myapp.lib1 en el proyecto de aplicación?
Fui a la Estructura del proyecto -> Módulos -> Mi proyecto de 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
android-studio
Randy Sugianto 'Yuku'
fuente
fuente
Respuestas:
Para crear una biblioteca:
Archivo> Nuevo módulo
seleccione Biblioteca de Android
Para usar la biblioteca, agréguela como dependencia:
Archivo> Estructura del proyecto> Módulos> Dependencias
Luego agregue el módulo (biblioteca de Android) como una dependencia del módulo.
Ejecute su proyecto. Se va a trabajar.
fuente
Me pregunto por qué no hay un ejemplo de proyecto jar independiente.
En eclipse, solo marcamos la casilla "Es la 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.
abra el 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: Construir> Proyecto de reconstrucción
entonces puede obtener el archivo aar: aplicación> compilación> salidas> carpeta aar
cambiar
aar
el nombre de la extensión del archivo azip
descomprimir, y se puede ver
classes.jar
en la carpeta. cambiar el nombre y usarlo!De todos modos, no sé por qué Google hace que la creación de jarras sea tan problemática en Android Studio.
fuente
La forma recomendada del complemento Gradle de Google para configurar sus archivos gradle para construir múltiples proyectos tiene algunas deficiencias. Si tiene 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 sus archivos gradle para Admite configuraciones de proyectos múltiples en Android Studio:
Una configuración multiproyecto alternativa para Android Studio
Una manera diferente:
Resulta que hay una mejor manera de administrar múltiples proyectos en Android Studio. El truco es crear proyectos separados de Android Studio para sus bibliotecas y decirle a Gradle que el módulo para la biblioteca del que depende su aplicación se encuentra en el directorio de proyectos de la biblioteca. Si desea utilizar este método con la estructura del proyecto que describí anteriormente, haría lo siguiente:
El cuarto 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 que uno tiene que poner
settings.gradle
: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 de control de versiones también funciona bien cuando hace referencia a módulos externos de esta manera. Puede confirmar y enviar sus modificaciones al código de la biblioteca tal como puede confirmar y enviar modificaciones al código de su aplicación.
Esta forma de configurar múltiples proyectos evita las dificultades que afectan la configuración recomendada por 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 biblioteca para cada aplicación que dependa de él y podemos versionar nuestras bibliotecas sin ningún tipo de tonterías de submódulo git.
Desafortunadamente, esta otra forma de configurar múltiples proyectos es muy difícil de encontrar. Obviamente, no es algo que descubrirá al mirar la guía de Google, y en este punto, no hay forma de configurar sus proyectos de esta manera utilizando la interfaz de usuario de Android Studio.
fuente
Consulte este enlace sobre configuraciones de proyectos múltiples .
Algunas cosas para señalar, asegúrese de tener su settings.gradle actualizada para hacer 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 la aplicación build.gradle tenga lo siguiente:
Debe tener la siguiente estructura:
Build.gradle de la aplicación debería usar el
com.android.application
complemento, mientras que build.gradle de cualquier biblioteca debería usar elcom.android.library
complemento.El IDE de Android Studio debería actualizarse si puede construir desde la línea de comandos con esta configuración.
fuente
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. Project en Android Studio es una colección de módulos. Los módulos pueden ser aplicaciones ejecutables o módulos de biblioteca.
Entonces, para agregar un nuevo proyecto de biblioteca de Android, debe crear un módulo del tipo "Biblioteca de Android". Luego agregue este módulo de biblioteca a la lista de dependencias de su módulo principal (módulo de aplicación).
fuente
La forma más sencilla para mí de crear y reutilizar un proyecto de biblioteca:
file > new > new module
(y responder las preguntas de la interfaz de usuario)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 del complemento en el archivo build.gradle a com.android.library.
a
mas aqui
fuente
Puede agregar un nuevo módulo a cualquier aplicación como Blundell dice en su respuesta y luego hacer referencia a él 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:
En el archivo build.gradle de su aplicación, agregue:
En el archivo settings.gradle, agregue lo siguiente:
fuente
project(':library').projectDir = new File('../library')
dóndelibrary
está el nombre de la carpeta en paralelo con la carpeta del proyecto de Android.No olvides usar
apply plugin: 'com.android.library'
tubuild.gradle
plugin en lugar de aplicar:'com.android.application'
fuente
Forma de documentación
Esta es la forma recomendada según los consejos dados 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 el nombre)> Finalizar . Luego agregue las clases y recursos que desee a su biblioteca.
Cuando cree el módulo, se creará un archivo AAR. Lo puedes encontrar en
project-name/module-name/build/outputs/aar/
.Agregue su biblioteca como una dependencia
Puede agregar su biblioteca como dependencia a otro proyecto como este:
En el archivo settings.gradle, asegúrese de que su nombre de biblioteca esté allí.
En el archivo build.gradle de la aplicación, agregue la línea de compilación a la sección de dependencias:
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 .
fuente
Tenía la misma pregunta y la resolvió de la siguiente manera:
Situación de inicio :
Destino : desea agregar un módulo llamado
dataformats
Java Library
)Asegúrese de que su
settings.gradle
aspecto sea el siguiente (normalmente automáticamente):include ':frigoshare', ':frigoShare-backend', ':dataformats'
Asegúrese ( manualmente ) de que los
build.gradle
archivos de los módulos que necesitan usar su biblioteca tengan la siguiente dependencia:dependencies { ... compile project(':dataformats') }
fuente
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
fuente
Como comentamos en la sección checa anterior, trato de buscar sobre Variantes de Gradle Build 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:
Luego tengo 2 versiones más de mi aplicación: pro y versión de prueba con 2 packageName diferentes, que es 2 applicationId en el código anterior para poder cargar ambos en Google Play. Todavía codifico en la sección "principal" y uso el getpackageName para cambiar a la versión. Simplemente vaya al enlace que le di para más detalles.
fuente
Hay dos formas más simples si una no funciona, intente con la otra.
O
fuente
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 produjo un problema al configurar el proyecto ': aplicación'.> No se puede evaluar el módulo xxx: no se encontró la configuración con el nombre 'predeterminado' ".
Descubrí que la razón 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 como una biblioteca.
Esta solución no funciona, porque un proyecto de Biblioteca es muy diferente a un proyecto de aplicación.
Entonces, he resuelto mi problema así:
Luego continúe con la solución propuesta por Aqib Mumtaz.
Como resultado, la fuente de su biblioteca se compartirá sin necesidad de duplicar los archivos de origen cada vez (¡fue una herejía para mí!)
Esperando que esto te ayude.
fuente