Android studio add external project to build.gradle

TacB0sS picture TacB0sS · Jul 5, 2013 · Viewed 89.4k times · Source

I have a sample project, with the following setup:

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

Where the 'Test Project' is dependent on the 'Test Lib', and the last depends on the 'Pure Java Lib' Compiling the project and launching this setup works just fine.

I'm now thinking about importing my previous Eclipse workspace and work with Android studio, the problem is the project setup is different, and I would like to keep it this way.

for example if to use the previous example:

/root
  + Android Test Lib
  + Android Test Project

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

I've tried many configurations, but I didn't find a way to reference a project outside the scope of the parent folder ('root' in the example case).

In many platforms/modules you can use the '..' to move up in the folders but this didn't work for me, perhaps I've used it wrong.

Does anyone know how this can be achieved with Gradle?

UPDATE

I'll try to be more generic:

/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

I would like to use Module 1 of project B, in project A.


UPDATE: 09-03-19

I saw this now and I must update... after almost 6 years, today I am wiser, and I can definitely say the problem was me misunderstanding the concept of "Source of truth".

While having one ref to a library is a nice to have concept.. and may seem like the a "Source of truth", the REAL "Source of truth" would be the version of the code each project is using of that library, cause the library by itself has versions.. many versions an the "Source of truth" is relative to the project which is using the library.

The correct way would be to use what most developers do not like, and that is git submodules, and yes duplicate the sources in each project cause most chances each project uses a different version of the code.

You would need however to aim for all of your projects to use the latest and greatest version of all your libraries.. which is a challenge by itself

The reason this is the right way to develop a project with library sources is that this scales... you can have hundreds of project each with its own library configuration.

Answer

Ethan picture Ethan · Jul 5, 2013

Assuming that Some Other Folder is a gradle project you could add something like the following to your settings.gradle file:

include ':module1'
project(':module1').projectDir = new File(settingsDir, '../Project B/Module 1')