2015-07-21 3 views
2

я поставил Ароматизаторы продукта в другой файл под названием other.gradle и это выглядит следующим образом:Android build.gradle импорта ароматизаторов из другого файла

project.ext.myflavors = { 
mock { 
    applicationId "com.mysite.mock" 
} 

} 

и я смог успешно получить доступ к закрытию в моем build.gradle файл как это:

myflavors() 

, но я получаю сообщение об ошибке, что макет метода не определен.

Error:Gradle DSL method not found: 'mock()' 

Невозможно просто определить код из другого файла и импортировать сам код в файл сборки? Или как я могу импортировать ароматы из другого файла?

+0

Я не думаю, что это имеет смысл. Расширение 'productFlavors' принадлежит к блоку' android'. Это похоже на удаление метода из класса и размещение его в другом классе и надеемся, что он все равно будет работать одинаково. –

+0

yah справа. Я только что видел этот вопрос сейчас. Но разве нет способа, чтобы вкусы были определены в отдельном файле? – j2emanue

+1

Если вы не переместите весь блок 'android' в отдельный' build.gradle'. Почему вы так хотите? –

ответ

1

Достаточно хорошо получить доступ к productFlavors несколько раз. Таким образом, добавление некоторых или всех вкусов в скрипт, включенный в ваш скрипт сборки, будет работать.

Создание должен быть добавлен скрипт Gradle, который содержит логику, которая решает, какой вкус (ы):

if (someCondition()) { 
    android { 
     productFlavors { 
      one { 
       applicationId = 'com.example.oneapp' 
      } 
     } 
    } 
} else { 
    android { 
     productFlavors { 
      two { 
       applicationId = 'com.example.twoapp' 
      } 
     } 
    } 
} 

Теперь включить этот сценарий из вашего сценария сборки. Повторное использование сценариев легко, если вы поместите его под (подпапкой) корневого проекта. Например:

apply from: rootProject.file('build-scripts/flavor-picker.gradle') 

Обратите внимание, что ваш IDE может не заметить изменения в сценарий выбора аромата или gradle.properties, так что если вы вносите изменения в них вы, вероятно, придется вручную реимпортировать Gradle файлы, чтобы увидеть правильный набор доступных задач.

+0

Android Studio замечала это хорошо. – paynd

2

Билд ароматизаторов могут быть определены в отдельном файле (build_flavors.gradle), как это:

android { 
    productFlavors { 
     flavorA { 
      // ... 
     } 
     flavorB { 
      // ... 
     } 
    } 
} 

, а затем импортировать в build.gradle:

apply plugin: 'com.android.application' 
apply from: './build_flavors.gradle' 

android { 
    // the rest of your android configuration 
} 
Смежные вопросы