2013-06-27 3 views
13

Я использую Android Developer Tools 22, Eclipse Indigo и текущий плагин Gradle для Eclipse.ADT Eclipse + Gradle: неполный BuildConfig.java

Теперь я хотел бы использовать различные Ароматизаторы путем определения в файле build.gradle:

 productFlavors{ 
    A { 
     packageName "com.test.A" 
     buildConfig "public final static String FLAVOR = \"A\";" 

    } 
    B { 
     packageName "com.test.B" 
     buildConfig "public final static String FLAVOR = \"B\";" 
    } 
} 

Насколько я знаю, я могу получить доступ к этим переменным, используя BuildConfig.FLAVOR, но определение FLAVOR отсутствует в сгенерированном файле BuildConfig.java в папке gen.

Если я собрать мой проект через Gradle правильный и полный BuildConfig.java генерируется в папке сборки/источника/buildConfig/[A | B]/[отлаживать | релиз]/ком/тест/.

Это работает, если я построить проект по Gradle, но я не могу работать с Eclipse, так как он ожидает, что переменные определены в BuildConfig.java в генераторных папку

Могу ли я заставить Gradle или adt для создания правильной сборки BuildConfig.java в папке gen?

+0

В настоящее время я задаю тот же вопрос. Я предполагаю, что в настоящее время это невозможно из-за отсутствия поддержки инструментария в ADT. Вы можете использовать отражение, чтобы получить значение FLAVOR. – Moritz

ответ

2

Android Studio - это кровоточащий край (еще не бета).

Как ответил Issue 57668 командой Android (поднятый @arcone)

Участник проекта # 2 х ... @ android.com

Затмение плагин не совместим с андроид плагин.

Вы не сможете импортировать проект градиента Android в Eclipse, используя поддержку Gradle по умолчанию в Eclipse.

Чтобы заставить его работать в Eclipse, мы должны изменить плагин Gradle для Eclipse, таким же образом мы изменяем поддержку Gradle в IntelliJ

То есть Android команда работает над Gradle плагин для IntelliJ и плагин gradle для Eclipse также должен быть обновлен.

Вы можете развить в Eclipse, с ADT и запустить Gradle построить с использованием Nodeclipse/Enide Gradle for Eclipse (marketplace)

Некоторые скриншоты для Gradle for Eclipse:

Есть some plans for Android with Gradle Development in Eclipse

1

Использование Eclipse с новым плагином Gradle не поддерживается, вместо этого вы должны использовать Android Studio.

Кроме того, поскольку вы спросили об этом, плагин добавил эту функциональность. Из release notes for version 0.7.0 of the Android Gradle plugin:

сборки конфигурация теперь автоматически содержит больше константы для PACKAGE_NAME, VERSION_CODE, VERSION_NAME, BUILD_TYPE, отдушка, а также FLAVOR_, если есть несколько измерений вкуса.

1

Могу ли я заставить gradle или adt генерировать правильную BuildConfig.java в папке gen?

Да, с хака: один раз :generateDebugBuildConfig (замените Debug с вариантом вам нужно) вбежал Gradle, вы будете иметь BuildConfig.java то, что вам нужно.

Я сделал это на Windows, но они должны быть одинаковыми для Unix с вашей любимой оболочки и cp

  1. Открыть свойства проекта и перейдите строителей
  2. Добавить «Программа» Builder
    • Местоположение: C:\Windows\System32\cmd.exe
    • Рабочий каталог: Просмотрите рабочее пространство ... и выберите y наш проект,
      результат будет что-то вроде: ${workspace_loc:/YourProject}
    • Аргументы: /c "xcopy build\generated\source\buildConfig\debug gen /S /I /Y"
    • Установите время запуска
      • Обновить вкладку: «Определенные ресурсы» выберите gen папку
      • Построить вкладку Параметры: «После очистки», «Вручную», «Авто» и «Укажите ресурсы» в корневую папку вашего проекта
  3. Убедитесь, что этот новый построитель помещается между Android Pre Compiler и Java Builder

Примечание: это действительно работает против ADT и, вероятно, там будет другие недостающие части, вы можете найти трудно обрабатывать (applicationIdSuffix, resValue, источник вариант папки, просто чтобы назвать несколько). Может быть, проще отказаться от Eclipse ADT и перейти на Android Studio, Google, похоже, хочет этого, не публично признавая это. На ADT не было реального прогресса, так как они заявили, что будут поддерживать его при I/O 2013.

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