Как запретить Android Studio копировать файлы при добавлении модуля?

У меня есть 2 андроид-проекта: Tower и dronekit-android. Я пытаюсь одновременно импортировать оба проекта в Android Studio. Итак, я сначала импортирую Tower, а затем импортирую dronekit-android в окне настроек проекта. (Используя Файл -> Структура проекта -> +)

Однако Android Studio сделала нечто очень необычное, а именно всегда копировала все исходные коды из другого проекта в корневую директорию текущего проекта. Как показано на следующем снимке экрана, на котором все папки, показанные в окне сравнения, копируются из dronekit-andorid в Tower.

введите здесь описание изображения

Как изменить это поведение и импортировать их без копирования? Как в этом:

введите здесь описание изображения

ОБНОВЛЕНИЕ: я попытался изменить свой settings.gradle, чтобы включить другой проект с подмодулями:

//Android projects
include ':Android'
project(':dronekit-android').projectDir = new File('/home/peng/git-drone/dronekit-android')

но я не могу импортировать его из-за этой ошибки:

Error:Project with path ':dronekit-android' could not be found.

что-то не так с настройкой?

ОБНОВЛЕНИЕ 2: в конце концов я редактирую settings.gradle вручную и добавляю в него другой проект и все его подмодули, что занимает довольно много времени, я ожидал, что Google Android Studio умна, чтобы сделать это автоматически:

//Android projects
include ':ServiceApp', ':StarterApp'
include ':ClientLib'

//Library projects
include ':Mavlink'
include ':UsbSerialLibrary'

project(':UsbSerialLibrary').projectDir = new File('dependencyLibs/usb-serial-for-android/UsbSerialLibrary')
project(':Mavlink').projectDir = new File('dependencyLibs/Mavlink')
project(':StarterApp').projectDir = new File('samples/StarterApp')

Но тут я столкнулся с другой проблемой:

Когда я синхронизирую проект, я получил эту ошибку:

Error:Plugin with id 'com.jfrog.bintray' not found.

Подробности смотрите на скриншоте:

Ошибка: Плагин с идентификатором 'com.jfrog.bintray' не найден.


person tribbloid    schedule 25.06.2016    source источник


Ответы (2)


Вы забыли включить :dronekit-android:

include ':Android',':dronekit-android'
project(':dronekit-android').projectDir = new File('<fullpath>/<projectname>/<module folder>')

И в вашем build.gradle

dependencies {
    compile project(':dronekit-android')
}
person Enzokie    schedule 25.06.2016
comment
Ты прав! Теперь я вижу файлы в окне проекта. Но я столкнулся с проблемой, которая никогда не возникает при независимом импорте любого из проектов. Это конфликт версий? - person tribbloid; 30.06.2016
comment
Не совсем, это действительно то, как вы импортируете из локального каталога, поскольку ваш библиотечный модуль может иметь такое же имя, как и другие другие модули (хотя это редкий случай). - person Enzokie; 30.06.2016

Если вы просто пытаетесь включить другой проект в один (без копирования), вы можете добавить запись в файл «settings.gradle», чтобы указать имя проекта и где в файловой системе находится проект (относительный путь Ok):

project(':project-name').projectDir = new File('path-to/project-name')

После этого вам просто нужно импортировать «основной» проект (тот, что с измененными настройками .gradle).

person Owais Ali    schedule 25.06.2016
comment
По-видимому, не работает: Ошибка: не удалось найти проект с путем «: dronekit-android». подробности см. в моем обновлении. - person tribbloid; 25.06.2016
comment
Какова структура каталогов в Dronekit-Android? Путь должен быть к модулю, а не к корневому проекту (т.е. путь должен указывать на build.gradle с конфигурацией Android) - person Owais Ali; 26.06.2016