Tengo un proyecto de muestra, con la siguiente configuración:
/root
+ Pure Java Lib
+ Android Test Lib
+ Android Test Project
Donde el ' Proyecto de prueba ' depende de la ' Libra de prueba ', y el último depende de la ' Lib de Java pura ' Compilar el proyecto y ejecutar esta configuración funciona bien.
Ahora estoy pensando en importar mi espacio de trabajo anterior de Eclipse y trabajar con Android Studio, el problema es que la configuración del proyecto es diferente y me gustaría mantenerlo así.
por ejemplo si usar el ejemplo anterior:
/root
+ Android Test Lib
+ Android Test Project
/Some Other folder (another repository for example)
+ Pure Java Lib
Intenté muchas configuraciones, pero no encontré una manera de hacer referencia a un proyecto fuera del alcance de la carpeta principal (' raíz ' en el caso de ejemplo).
En muchas plataformas / módulos, puede usar '...' para subir en las carpetas, pero esto no funcionó para mí, tal vez lo he usado mal.
¿Alguien sabe cómo se puede lograr esto con Gradle?
ACTUALIZAR
Intentaré ser más genérico:
/C:/
/Project A
+ Module 1 - Pure Java
+ Module 2 - Android Test Lib
+ Module 3 - Android Test Project
/Project B
+ Module 1 - Pure Java
+ Module 2 - Pure Java
+ Module 3 - Pure Java
Me gustaría utilizar el Módulo 1 del proyecto B , en el proyecto A .
ACTUALIZACIÓN: 09-03-19
Vi esto ahora y debo actualizar ... después de casi 6 años, hoy soy más sabio, y definitivamente puedo decir que el problema fue que entendí mal el concepto de "Fuente de la verdad".
Si bien tener una referencia a una biblioteca es un buen concepto ... y puede parecer una "Fuente de la verdad", la REAL "Fuente de la verdad" sería la versión del código que cada proyecto está usando de esa biblioteca, porque la biblioteca por sí misma tiene versiones ... muchas versiones y la "Fuente de la verdad" es relativa al proyecto que está usando la biblioteca.
La forma correcta sería usar lo que a la mayoría de los desarrolladores no les gusta, y eso es submódulos git, y sí duplicar las fuentes en cada proyecto porque la mayoría de las posibilidades de que cada proyecto use una versión diferente del código.
Sin embargo, deberá apuntar a que todos sus proyectos utilicen la última y mejor versión de todas sus bibliotecas ... lo cual es un desafío en sí mismo
La razón por la que esta es la forma correcta de desarrollar un proyecto con fuentes de biblioteca es que esto se escala ... puede tener cientos de proyectos cada uno con su propia configuración de biblioteca.
fuente
Respuestas:
Suponiendo que Some Other Folder es un proyecto gradle, puede agregar algo como lo siguiente a su archivo settings.gradle:
fuente
Tienes que poner en la configuración de tu archivo. Gradle estas líneas:
Luego debe agregar su builde.gradle (Módulo: aplicación) en el árbol de dependencias , esta línea:
o vaya a Estructura del proyecto > aplicación > Dependencias , haga clic en Agregar , elija 3 Dependencias del módulo y seleccione su módulo
fuente
compile project(path: ':library', configuration: 'variant')
. Aquí,variant
consiste enflavor
ybuildType
según lo definido por elbuild.gradle
archivo de la biblioteca . Por ejemplo, si desearelease
compilar el tipo de biblioteca en undevelop
sabor, entoncesvariant
esdevelopRelease
.Con Gradle 1.10 (no sé para qué otras versiones será válido) esto es lo que se me ocurrió en base a una respuesta dada aquí http://forums.gradle.org/gradle/topics/reference_external_project_as_dependancy
Tengo un proyecto de biblioteca api, un proyecto de biblioteca común y el proyecto principal de la aplicación. Cada uno es un proyecto de desarrollo independiente y las dos bibliotecas están destinadas a ser compartidas entre múltiples aplicaciones.
En settings.gradle para el proyecto común:
Luego, en la configuración principal del proyecto de la aplicación.gradle:
En cada uno de los archivos build.gradle respectivos, solo debe hacer referencia a ellos por el nombre que les dio en settings.createProjectDescriptor como lo haría con cualquier otra dependencia del proyecto:
Esto parece funcionar. Sospeché que ni siquiera arrojó un error para múltiples archivos DEX que definían la biblioteca api, porque todo era parte del mismo proceso de compilación y Gradle era lo suficientemente inteligente como para resolverlo todo.
fuente
Haga clic derecho en el proyecto - Seleccione "Abrir configuración de módulo" - Seleccione "Módulos" en el panel izquierdo - Haga clic en el símbolo "+" en la parte superior - Elija "Importar módulo".
Después de importar el módulo. Debe agregarlo como una dependencia para su proyecto actual.
Mantenga "Módulos" seleccionados en el panel izquierdo y haga clic en su proyecto - Ahora vaya a la pestaña de dependencias y haga clic en el símbolo "+" que se encuentra en la parte inferior - Elija la tercera opción "Dependencias del módulo" y si ha importado su proyecto correctamente, lo hará le muestra todos los módulos disponibles que se pueden agregar como dependencia a su proyecto actual.
fuente
Vuelvo a hacer esta pregunta de una manera que implica las intenciones de los carteles originales en ¿Cómo hacemos referencia a las bibliotecas personalizadas de Android y Java que viven fuera del directorio de nuestro proyecto principal de Android?
Ahí respondo mi propia pregunta. En el fondo, mi respuesta utiliza la información de codificación gradle de @ Ethan (el autor de la respuesta elegida en el hilo actual). Pero mi respuesta también navega por otras trampas y proporciona un ejemplo detallado paso a paso.
fuente
Como dijo Ethan, si agrega esto a su settings.gradle, agregará un proyecto externo a Android Studio (en este ejemplo, está en la carpeta principal):
Luego, para agregarlo como una dependencia de uno de sus proyectos, simplemente agréguelo en el build.gradle de ese proyecto como otra dependencia como esta (también puede hacerlo gráficamente como aquí ):
fuente