Подтвердить что ты не робот

Различные зависимости для отладки и выпуска в gradle и Android Studio

У меня есть проект Android, который зависит от чистого Java-проекта. Оба они зависят от другой библиотеки Java, также в моем мультипроекте gradle, установленном в Android Studio. У меня две версии этой библиотеки, и я хочу, чтобы и Android, и Java-проекты зависели от одного из них в режиме отладки, а другой - в выпуске.

Возможно ли это для Android-проекта? Для чистого Java-проекта? Как?

4b9b3361

Ответ 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
}

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