2016-06-09 3 views
1

У меня есть конструкция градиента. Мне нужно иметь разные конфигурации, основываясь на том, является ли это сборкой отладки или отладки. Проблема заключается в том, что конструкция градации не различает эти две.Gradle не проводит различие между выпуском buildType и debug

, например:

apply plugin: 'com.android.library' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    buildTypes { 

     debug { 
      println 'debug' 

     } 
     release { 
      println 'release' 

     } 

    } 
    } 

Когда я строить с помощью «Gradle assembleRelsease» или с помощью «Gradle assembleDebug», он печатает как «освобождение» и «отладки» в обоих случаях или даже, когда я строить с помощью отладки (от вариантов сборки) в студии android. Он просто не различает его. То, что я ожидал бы, это когда я создаю релиз, он печатает только «release», и когда я создаю degub, он печатает только «debug». У любого органа есть решение этой проблемы? я делаю что-то неправильно?

+0

Он печатает оба значения, поскольку они входят в область конфигурации. Дополнительную информацию см. В документе [lifecycle documentaiton] (https://docs.gradle.org/current/userguide/build_lifecycle.html). Также для библиотек сборка [всегда выпускается] (http://stackoverflow.com/questions/20176284/buildconfig-debug-always-false-when-building-library-projects-with-gradle). – GPuschka

+1

Библиотеки всегда создаются как релиз только в том случае, если они включены как модуль внутри приложения-приложения в Android Studio. Отдельный проект библиотеки будет строить debug или release в соответствии с инструкциями. – mijiturka

+0

Благодарим вас за ответ, но проблема всегда входит в оба. поэтому я всегда получаю переменные конфигурации, записанные со второго блока, независимо от того, является ли это «выпуском» или «отлаживать» – fadi

ответ

1

Ваш сценарий будет генерировать ожидаемые результаты (разные .arar) для вариантов отладки и выпуска библиотеки: он просто печатает все все время.

Что вы видите, это Gradle lifecycle, который проходит этап инициализации, конфигурации и выполнения.

Поскольку многие файлы build.gradle (проекты Android обычно имеют как минимум 2), используются в процессе сборки для разных каталогов и подпроектов, и вы можете определять задачи после их использования в упорядочении файла сборки, я угадывая первые две фазы, выполняйте сканирование и анализ файлов сборки до фактического создания чего-либо.

Конфигурация проходит через все команды, включая инструкцию println. (см. this example) Возможно, они решили напечатать на принтере во время настройки, чтобы облегчить отладку.

+0

Благодарим вас, но это касается не только печати, потому что на этой основе я устанавливаю некоторые переменные конфигурации, но проблема всегда входит в оба. поэтому я всегда получаю конфигурацию из второго блока, будь то «release» или «отладка» – fadi

+1

Если фаза конфигурации проходит через все команды, она также пройдет через ваше назначение переменной. Если вы полагаетесь на свои значения, вы, вероятно, должны использовать debug << {...} или debug {doFirst {..}}, а затем, в соответствии с примером, заставить их присваиваться только во время выполнения. – mijiturka

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