Что такое конфигурация generateStubs в Котлине?

Что такое generateStubs для Kotlin? Вот моя конфигурация в build.gradle.

Я не могу найти его в открытом документе здесь: http://kotlinlang.org/docs/reference/kapt.html

kapt {
  generateStubs = true
}

Если я использую Java и Kotlin(1.2) в моем проекте, все равно нужно добавить?

Ответ 1

ИЗМЕНИТЬ

Если я использую Java и Kotlin (1.2) в своем проекте, все равно необходимо добавить

Нет. В версии 1.0.4 представлена ​​новая экспериментальная реализация API обработки аннотаций. Теперь нет необходимости настраивать этот generateStubs в build.gradle.

Добавьте следующее в свой build.gradle, если вы хотите его включить:

apply plugin: 'kotlin-kapt' 

Вам также придется удалить конфигурацию generateStubs из build.gradle

Но как ваш вопрос о деталях на generateStubs, я сохраняю свой старый пост как есть.



Использование:

Используя kapt с: generatestubs = true, чтобы использовать библиотеки, такие как dagger 2 или dbflow, это позволит компилятору генерировать классы-заглушки, необходимые для взаимодействия между Java и Kotlin. Если generatestubs = true не включен, "bootstrap" (пользовательский обработчик аннотации, который передается в javac, загружает данные аннотации и вызывает другие обработчики аннотаций.) Java-код необходим для ссылки на сгенерированные источники .pulled, что из

Примечание. Сгенерированные коды всегда находятся в Java не в Kotlin.


Когда включать:

Генерация заглушек требует относительно большой работы, потому что все объявления должны быть разрешены, и иногда знание возвращаемых типов требует анализа выражения (тела функций или инициализаторы свойств после знака =). Таким образом, использование заглушек в kapt несколько замедляет ваше построение. Вот почему по умолчанию отключены заглушки, и для их включения вам нужно написать следующее в файле build.gradle:

kapt {
  generateStubs = true
}

Как это работает:

Штыри, созданные компилятором промежуточные классы, позволяют ссылаться на "сгенерированные" источники из Kotlin, иначе компилятор не сможет ссылаться на недостающие источники.

Сгенерированный источник создается в "build/generated/source/kapt/main", так как он находится под " build", который обычно исключается из источников проекта IntelliJ, этот исходный корень будет помечен в самой сборке script.

sourceSets {
  main.java.srcDirs += [file("$buildDir/generated/source/kapt/main")]
}

Пример:

Пример Dagger2 с поддержкой обработчика аннотаций Kotlin (1.1.50) Gradle build