2015-07-15 5 views
0

У меня есть сценарий для подготовки сборки apk.Как я могу ссылаться на поле, определенное в сценарии градации?

Он определяет некоторое значение, которое имеет некоторые случайные, специфичные для каждого значения сборки:

def salt = generateSalt() 

def generatedSalt() { 
return generateRandomlySalt 
} 

В том же сценарии я хочу иметь еще один метод, который будет работать на этом значении.

def generateMapAndSalt() { 
    // here is additional logic which depends on the defined salt 
    generateEncodedHash(certificate, salt, shaKey) 
} 

Существует еще один метод внутри андроида закрытия, который будет проходить это определенное значение соли к buildConfigFiles. Как ссылаться после генерируемого значения соли из определенного метода? Устали доступа к нему со следующим синтаксисом:

this.$salt 
$salt 
salt 

не повезло.

ответ

1

Вы можете определить соль в блоке ext и обратиться к ней через экземпляр project.

ext { 
    salt = generateSalt() 
} 

project.salt 
+0

Спасибо, это он. Я смог пропустить проект. ссылка также - знаете ли вы, почему? – Patrick

+0

Поскольку gradle по умолчанию ищет свойство в области 'project'. Если он там не определен, возникает проблема. – Opal

+1

Чтобы добавить к этому, * все * в скрипте сборки попытается использовать объект проекта, даже такие вещи, как 'apply plugin: 'foo'', он просто запускает' project.apply() 'и передает значения карты' плагин: 'foo''. Аналогично для конфигурации «зависимостей» и т. Д. Поэтому у меня всегда есть https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html open –

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