Студия Android добавляет внешний проект для сборки .gradle

У меня есть пример проекта со следующей настройкой:

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

Где "тестовый проект" зависит от "теста Lib", а последний зависит от "чистой Java Lib", Компиляция проекта и запуск этой настройки очень просто.

Теперь я думаю о том, чтобы импортировать свое предыдущее рабочее пространство Eclipse и работать с Android-студией, проблема в том, что настройка проекта отличается, и я хотел бы сохранить ее таким образом.

например, если использовать предыдущий пример:

/root
  + Android Test Lib
  + Android Test Project

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

Я пробовал много конфигураций, но я не нашел способ ссылаться на проект вне области родительской папки ( "root" в примере).

Во многих платформах/модулях вы можете использовать ".." для перемещения вверх в папках, но это не сработало для меня, возможно, я использовал это неправильно.

Кто-нибудь знает, как это можно достичь с помощью Gradle?

UPDATE

Я постараюсь быть более общим:

/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

Я хотел бы использовать модуль 1 проекта проекта B, в проекте A.

Ответ 1

Предполагая, что Some Other Folder является проектом gradle, вы можете добавить в свой файл settings.gradle следующее:

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

Ответ 2

Вы должны добавить в свой файл settings.gradle следующие строки:

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

Затем вам нужно добавить в builde.gradle(Module: app) в дереве зависимостей следующую строку:

compile project(':module2')

или войдите в структуру проектa > приложение > Зависимости, нажмите "Добавить", выберите "Зависимости модуля" и выберите свой модуль

Ответ 3

С Gradle 1.10 (не знаю, для каких других версий это будет действительным) это то, что я придумал, на основе приведенного здесь ответа http://forums.gradle.org/gradle/topics/reference_external_project_as_dependancy

У меня есть проект библиотеки api, общий проект библиотеки и основной проект приложения. Каждый из них является автономным проектом разработки, и две библиотеки предназначены для совместного использования несколькими приложениями.

В настройках .gradle для общего проекта:

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

Затем в основных настройках проекта приложения .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'

В каждом из соответствующих файлов build.gradle вы просто ссылаетесь на них по имени, которое вы дали им в параметрах settings.createProjectDescriptor, как и в любой другой зависимости проекта:

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

Это похоже на работу. Я не подозреваю, что он даже не выдавал ошибку для нескольких файлов DEX, определяющих библиотеку api, потому что все это было частью одного и того же процесса сборки, а Gradle был достаточно умен, чтобы понять все.

Ответ 4

Щелкните правой кнопкой мыши по проекту - выберите "Открыть настройки модуля" - выберите "Модули" в левой панели - нажмите "+" символ сверху - Выберите "Импортировать модуль".

После импорта модуля. Вам нужно добавить его как зависимость для вашего текущего проекта.

Сохраните "Модули", выбранные в левой панели, и нажмите на свой проект. Теперь перейдите на вкладку зависимостей и нажмите "+", который расположен внизу. Выберите третий вариант "Зависимости модуля" и если вы правильно импортировали проект, он покажет вам весь доступный модуль, который можно добавить как зависимость от вашего текущего проекта.

Ответ 5

Как сказал Итан, если вы добавите это в свои настройки .gradle, он добавит внешний проект в Android Studio (в этом примере он находится в родительской папке):

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

Затем, чтобы добавить его как зависимость от одного из ваших проектов, просто добавьте его в build.gradle этого проекта в качестве другой зависимости вроде этого (вы также можете сделать это графически как здесь):

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