Android studio agregar proyecto externo para construir.gradle


Tengo un proyecto de ejemplo, con la siguiente configuración:

/root
  + Pure Java Lib
  + Android Test Lib
  + Android Test Project

Donde el ' Proyecto de prueba 'depende del' Test Lib ', y el último depende del ' Puro Java Lib ' Compilar el proyecto e iniciar esta configuración funciona bien.

Ahora estoy pensando en importar mi anterior espacio de trabajo Eclipse y trabajar con Android Studio, el problema es que la configuración del proyecto es diferente, y me gustaría mantenerlo de esta manera.

Por ejemplo si usar el ejemplo anterior:

/root
  + Android Test Lib
  + Android Test Project

/Some Other folder (another repository for example)
  + Pure Java Lib

He probado muchas configuraciones, pero no he encontrado una manera de hacer referencia a un proyecto fuera del ámbito de la carpeta padre (' root' en el caso de ejemplo).

En muchas plataformas/módulos se puede utilizar el '.."para subir en las carpetas, pero esto no funcionó para mí, tal vez lo he utilizado mal.

¿Alguien sabe cómo se puede lograr esto con Gradle?

UPDATE

Voy a tratar de 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 .

Author: TacB0sS, 2013-07-05

6 answers

Asumiendo que Alguna Otra carpeta es un proyecto de gradle, podrías agregar algo como lo siguiente a tu configuración.archivo gradle:

include ':module1'
project(':module1').projectDir = new File(settingsDir, '../Project B/Module 1')
 212
Author: Ethan,
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
2013-07-05 18:59:59

Tienes que poner la configuración de tu archivo .gradle estas líneas:

include ':module2'
project(':module2').projectDir = new File(settingsDir, '../Project 2/Module2')

Entonces tienes que agregar en tu build.gradle (Module: app) en el árbol dependencias, esta línea:

compile project(':module2')

O entrar en la Estructura del Proyecto > app > Dependencies , haga clic en Add , elija 3 Module Dependencies y seleccione su módulo

 40
Author: Dario Bruzzese,
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-04-13 10:42:10

Con Gradle 1.10 (no sé para qué otras versiones será válido) esto es lo que se me ocurrió basado en 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 de aplicación principal. Cada uno es un proyecto de desarrollo independiente y las dos bibliotecas están destinadas a ser compartidas entre varias aplicaciones.

En ajustes.gradle para lo común proyecto:

def apiLibDir = file('../android-api/android-api-lib')
def rootProjectDescriptor = settings.rootProject
settings.createProjectDescriptor(rootProjectDescriptor, 'android-api-lib', apiLibDir)
include ':android-api-lib'

Luego en la configuración principal del proyecto de la aplicación.gradle:

def apiLibDir = file('../android-libs/android-api/android-api-lib')
def rootProjectDescriptor = settings.rootProject
settings.createProjectDescriptor(rootProjectDescriptor, 'android-api-lib', apiLibDir)
include ':android-api-lib'

def commonLibDir = file('../android-libs/android-common/android-common-lib')
settings.createProjectDescriptor(rootProjectDescriptor, 'android-common-lib', commonLibDir)
include ':android-common-lib'

En cada una de las construcciones respectivas.archivos de gradle solo tienes que hacer referencia a ellos por el nombre que les diste en la configuración.createProjectDescriptor como lo haría con cualquier otra dependencia del proyecto:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile project(':android-api-lib')
    compile project(':android-common-lib')
}

Esto parece funcionar. Ni siquiera arrojó un error para varios archivos DEX que definían la biblioteca de api, sospecho que porque todo era parte del mismo proceso de compilación y Gradle era lo suficientemente inteligente como para averiguarlo todo fuera.

 9
Author: alphonzo79,
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-06-17 05:00:29

Haga clic con el botón derecho en el proyecto - Seleccione "Abrir Configuración del 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. Necesitas agregarlo como una dependencia para tu proyecto actual.

Mantenga "Modules" Seleccionado en el panel izquierdo y haga clic en su proyecto - Ahora Vaya a la pestaña dependencies y haga clic en el símbolo " + "que se encuentra en la parte inferior-Elija la tercera opción "Module Dependencies" y si ha importado su proyecto correctamente, le mostrará el módulo all available que se puede agregar como una dependencia a su proyecto actual.

 8
Author: Varundroid,
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-01-19 21:47:50

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?

Allí respondo a mi propia pregunta. En el núcleo de mi respuesta utiliza @ Ethan (el autor de la respuesta elegida en el hilo actual) gradle coding insight. Pero mi respuesta también navega por algunos otros puntos clave y proporciona un ejemplo detallado paso a paso.

 1
Author: John Bentley,
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
2018-03-17 00:17:08

Como dijo Ethan, si agregas esto a tu configuración.gradle, agregará un proyecto externo a Android Studio (en este ejemplo, está en la carpeta padre):

project(':../ProjectB/:module1')

Entonces, para agregarlo como una dependencia de uno de sus proyectos, simplemente agréguelo en la compilación.gradle de ese proyecto como otra dependencia como esta (también puedes hacerlo gráficamente como aquí):

compile project(':../ProjectB/:module1')
 0
Author: Yair Kukielka,
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 10:31:36