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

Используйте различные типы сборки библиотечного модуля в Android App Module в Android Studio и Gradle

У меня есть рабочее пространство, содержащее несколько разных приложений и общий проект библиотеки, который я ищу для преобразования из Eclipse в Android Studio и от Ant до Gradle. В настоящее время в наших сценариях Ant мы заменяем текст в нескольких наших классах перед компиляцией в зависимости от того, была ли сборка предназначена для отладки, проверки качества, тестирования бета-версии/клиента или предназначена для выпуска в Google Play.

Я хочу использовать систему вариантов построения в Gradle и использовать ресурсы ресурсов (логические значения, строки и т.д.), чтобы не содержать текст сборки script в моих классах.

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

Есть ли способ, чтобы я мог использовать различные типы сборки модулей приложения для использования соответствующего типа сборки библиотечного модуля?

Это было запущено из Android Studio с помощью окна инструмента "Варианты сборки", показывающего оба модуля, используя вариант отладки. Изображение должно читать debug для приложения и библиотеки.

debug debug

4b9b3361

Ответ 1

Ну, Gradle Android-плагин просто не может построить отладочный version зависимых библиотечных модулей. Это известная, старая проблема, и это еще не разрешено.
Вы можете попытаться использовать некоторые обходные пути из обсуждаемого мною обсуждения, в частности, взгляните на сообщения № 35 и № 38.

Ответ 2

Документация взята из Публикация библиотеки в Gradle Руководство пользователя плагина.

По умолчанию библиотека публикует только свой вариант выпуска. Этот вариант будут использоваться всеми проектами, ссылающимися на библиотеку, независимо от того, вариант они строят сами. Это временное ограничение из-за Gradle ограничения, которые мы делаем для удаления.

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

Опубликовать все. Можно опубликовать все варианты сборки вашего проекта библиотеки, добавив следующую строку в проект библиотеки:

android {
    publishNonDefault true
}

Затем вы должны изменить свои зависимости в проекте приложения следующим образом:

dependencies {
    releaseCompile project(path: ':yourLibrary', configuration: 'release')
    debugCompile project(path: ':yourLibrary', configuration: 'debug')

    // This is also possible
    customCompile project(path: ':yourLibrary', configuration: 'custom')
}

Изменить значение по умолчанию. Вы можете изменить, какой varaint будет опубликован из вашей библиотеки, добавив следующую строку в проект вашей библиотеки:

android {
    defaultPublishConfig "debug"
}

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

Ответ 3

Просто ссылку https://issuetracker.google.com/issues/36967265

//in library Project build.gradle (lib): 
apply plugin: 'com.android.library' 

android { 
    publishNonDefault true 
... 
    buildTypes { 
        release { 
... 
        } 
        debug { 
... 
        } 
    } 
} 
dependencies { 
... 
} 


//in main Project build.gradle (application) 
apply plugin: 'com.android.application' 

android { 
... 
    buildTypes { 
        release { 
... 
        } 
        debug { 
... 
        } 
    } 
} 
dependencies { 
    debugCompile project(path: ':libName', configuration: "debug") 
    releaseCompile project(path: ':libName', configuration: "release") 
... 
}