Ответ 1
Предполагая, что Some Other Folder является проектом gradle, вы можете добавить в свой файл settings.gradle следующее:
include ':module1'
project(':module1').projectDir = new File(settingsDir, '../Project B/Module 1')
У меня есть пример проекта со следующей настройкой:
/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.
Предполагая, что Some Other Folder является проектом gradle, вы можете добавить в свой файл settings.gradle следующее:
include ':module1'
project(':module1').projectDir = new File(settingsDir, '../Project B/Module 1')
Вы должны добавить в свой файл settings.gradle следующие строки:
include ':module2'
project(':module2').projectDir = new File(settingsDir, '../Project 2/Module2')
Затем вам нужно добавить в builde.gradle(Module: app) в дереве зависимостей следующую строку:
compile project(':module2')
или войдите в структуру проектa > приложение > Зависимости, нажмите "Добавить", выберите "Зависимости модуля" и выберите свой модуль
С 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 был достаточно умен, чтобы понять все.
Щелкните правой кнопкой мыши по проекту - выберите "Открыть настройки модуля" - выберите "Модули" в левой панели - нажмите "+" символ сверху - Выберите "Импортировать модуль".
После импорта модуля. Вам нужно добавить его как зависимость для вашего текущего проекта.
Сохраните "Модули", выбранные в левой панели, и нажмите на свой проект. Теперь перейдите на вкладку зависимостей и нажмите "+", который расположен внизу. Выберите третий вариант "Зависимости модуля" и если вы правильно импортировали проект, он покажет вам весь доступный модуль, который можно добавить как зависимость от вашего текущего проекта.
Как сказал Итан, если вы добавите это в свои настройки .gradle, он добавит внешний проект в Android Studio (в этом примере он находится в родительской папке):
project(':../ProjectB/:module1')
Затем, чтобы добавить его как зависимость от одного из ваших проектов, просто добавьте его в build.gradle этого проекта в качестве другой зависимости вроде этого (вы также можете сделать это графически как здесь):
compile project(':../ProjectB/:module1')