2014-09-15 2 views
1

У меня есть специальная библиотека, на которую нужно ссылаться примерно в 10 проектах. Все отлично работает в Eclipse, но я хочу перенести их в Android Studio, чтобы воспользоваться системой сборки. Я уже проверитьСсылка на проекты внешних библиотек в Android Studio (v0.8.9)

Android studio add external project to build.gradle

How to share a single library source across multiple projects

и некоторые другие ссылки и документы в Gradleware, но я не получаю, чтобы мои проекты компиляции.

Моя файловая структура, как:

+ проекты

| + libraryProject

| + --- рабочее пространство

| + ------ projectSrc

|

| + project0

| + --- рабочее пространство

| + ------ projectSrc0

|

| + project1

| + --- рабочее пространство

| + ------ projectSrc1

. . не

| + projectN

| + --- рабочее пространство

| + ------ projectSrcN

Каждый проект содержит документы, файлы проекта, и т.д ... и поэтому нет удобно иметь src в одной корневой папке.

В моем "project1" settings.gradle файла я использовал:

include ':module-custom-lib' 
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc') 

В моем файле build.gradle, зависимости раздела добавить:

dependencies { 
    compile project(':..:..:..:libraryProject:workspace:projectSrc') 
    .... 
} 

Но Я получаю сообщение о том, что проект не найден.

Я также использовал следующий подход:

def customLib = file('../../../libraryProject/workspace/projectSrc') 
settings.createProjectDescriptor(rootProjectDescriptor, 'module-custom-lib', customLib) 
include ':module-custom-lib' 

Тогда в build.gradle

dependencies { 
    compile project(':module-custom-lib') 
    .... 
} 

Пожалуйста, помогите.Спасибо за ваше время.

EDIT: мне удалось получить его работу путем добавления модуля приложение в качестве суффикса в директории проекта .:

include ':module-custom-lib' 
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc/app') 

Теперь члены библиотеки решить отлично, но в рамках проекта " R 'не может быть разрешен. Так что если:

setContentView(R.layout.main); 

не удается найти этот ресурс. Очистка и восстановление проекта не устраняет проблему.

EDIT 2: По-видимому, возникла проблема с слиянием манифеста, потому что проблема была исправлена ​​после того, как я скорректировал minSdk и targetSdk обоих проектов. Предыдущее решение работает отлично.

ответ

4

Ваша первая попытка имеет более простой синтаксис и должна работать. Ваш settings.gradle файл выглядит хорошо:

include ':module-custom-lib' 
project(':module-custom-lib').projectDir = new File(settingsDir, '../../../libraryProject/workspace/projectSrc') 

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

В dependencies блоке файла построения модуля, вы должны ссылаться на один и тот же модуль, как вы делаете в settings.gradle, так что вы бы использовать что-то вроде этого:

dependencies { 
    compile project(':module-custom-lib') 
} 

В dependencies блоки, вы связываетесь с проектами с использованием пространства имен проектов Gradle, и поскольку вы уже явно настроили корневой каталог библиотечного модуля, вам не нужно пытаться найти его в файловой системе здесь. Синтаксис :..:..:.. не будет работать так, чтобы ссылаться на модуль, который находится вне корневого каталога вашего проекта, как этот.

+0

Это дает мне ошибку «Конфигурация с именем« по умолчанию »не найдена.» –

+0

Любой намек? Что означает это сообщение? –

+0

Это означает, что он не находит модуль в месте, на которое указывает конфиг в настройках.gradle, - вероятно, он не найдет свой build.gradle вообще. –

0

Вы должны рассмотреть возможность объединения «выпусков» вашей библиотеки в репозиторий Maven (возможно, ваше местное репозиторинг Maven). Таким образом, вы можете ссылаться на свою библиотеку из любого другого проекта, который должен использовать его так же, как и с сторонними библиотеками.

+0

У меня есть много проектов, которые по-прежнему будут ссылаться на Eclipse (во время процесса миграции), поэтому я не хочу нажимать на локальное репозиторий maven или не развертывать как aar. –

Смежные вопросы