Различные зависимости для отладки и выпуска в gradle и Android Studio
У меня есть проект Android, который зависит от чистого Java-проекта. Оба они зависят от другой библиотеки Java, также в моем мультипроекте gradle, установленном в Android Studio. У меня две версии этой библиотеки, и я хочу, чтобы и Android, и Java-проекты зависели от одного из них в режиме отладки, а другой - в выпуске.
Возможно ли это для Android-проекта? Для чистого Java-проекта? Как?
Ответы
Ответ 1
Типы сборки (отладка, выпуск или обычай) могут иметь свои собственные зависимости.
Чтобы указать зависимость, специфичную для типа сборки, выполните следующие действия:
dependencies {
debugCompile "mydebugdependency"
releaseCompile "myreleasedependency"
}
Если ваш проект java и проект android работают с использованием gradle, вы можете сделать это в обоих файлах build.gradle.
Ответ 2
моя зависимость buildDebug также игнорировалась. моя установка - это модуль приложения и библиотечный модуль, и у меня есть необходимость распространять тип сборки из приложения в библиотечные модули, то есть когда я компилирую тип отладки в приложении, я хочу также получить тип отладки библиотеки.
как уже упоминалось, я попытался иметь определенную зависимость для каждого типа сборки в файле приложения gradle, но безрезультатно:
buildTypes {
debug {
debuggable true
applicationIdSuffix ".debug"
dependencies {
debugCompile project(":library")
}
}
}
В конечном счете, что для меня было трюком: http://tools.android.com/tech-docs/new-build-system/user-guide#TOC-Library-Publication
Итак, теперь управление библиотекой управляется (как обычно) в области глобальных зависимостей в файле app gradle:
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
releaseCompile project(path: ':library', configuration: 'release')
debugCompile project(path: ':library', configuration: 'debug')
}
и пришлось добавить это в библиотеку gradle файл сборки:
android {
publishNonDefault true
}
публикует все типы построения зависимостей. обратите внимание, что если вам потребуется много времени для компиляции вашей зависимости, это решение может быть вам не подходит.