Nano Hash - криптовалюты, майнинг, программирование

Gradle проверяет постоянное значение, чтобы показать ошибку, если это правда

Есть ли способ настроить gradle для проверки постоянной переменной, такой как DEBUG, в проекте и показать ошибку, если он пытается сделать выпускную версию?

Спасибо


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

Ответы:


1

Я бы порекомендовал пойти другим путем. Вместо того, чтобы жестко кодировать другие переменные, а затем вызывать ошибку сборки, если они установлены в сборках выпуска, установите эти переменные в файле сборки и присвойте им разные значения для типов сборки отладки и выпуска. Средством для этого является директива buildConfigField, и этот механизм устанавливает переменные, которые действуют как BuildConfig.DEBUG.

Вы можете сделать что-то подобное в файле build.gradle вашего модуля:

buildTypes {
    debug {            
        buildConfigField "String", "MY_CONSTANT", '"debugValue"'
    }
    release {            
        buildConfigField "String", "MY_CONSTANT", '"releaseValue"'
    }
}

Это добавит BuildConfig.MY_CONSTANT со значением "debugValue" для отладочных сборок и "releaseValue" для выпуска.

Если вы хотите иметь различное поведение в сборках отладки и выпуска, в своем коде вы можете использовать условные выражения для BuildConfig.DEBUG или для ваших констант:

if (BuildConfig.DEBUG) {
    // Do something here only for debug builds
}

и т.п.

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

if (BuildConfig.DEBUG) {
    sGlobalVariable = "debug";
}
21.10.2014
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..