>>
Причина ошибки и как найти детали
Ваша проблема типовая для начинающих Kotlin-разработчиков. Ошибка Compilation error без деталей в консоли Gradle возникает из-за того, что Gradle по умолчанию не выводит полный лог ошибок компилятора Kotlin. Настоящая причина скрыта, и её нужно "вытащить" наружу. Чаще всего это:
- Несовместимость версий Kotlin и Java
- Ошибка в коде Kotlin (синтаксис, типы, импорты)
- Конфликт зависимостей
Шаг 1: Включите подробный лог
Запустите сборку с флагом --stacktrace или --info:
./gradlew assembleDebug --stacktrace
Или в Android Studio: View → Tool Windows → Build, потом нажмите на кнопку "Toggle view" (иконка шестерёнки) и выберите "Show Stack Trace".
Шаг 2: Найдите настоящую ошибку
В выводе ищите строку e: (ошибка Kotlin компилятора). Например:
e: /Users/user/MyApp/app/src/main/java/com/example/myapp/MainActivity.kt: (15, 9): Unresolved reference: showToast
Это уже укажет файл, строку и причину. В вашем случае, скорее всего, проблема в том, что вы используете it.id в лямбде setOnClickListener. it — это View, но id возвращает Int, и вы пытаетесь конкатенировать Int со строкой. В Kotlin это неявно не разрешено (в отличие от Java).
Шаг 3: Исправьте код
Замените строку:
val message = "Кнопка нажата: " + it.id
На:
val message = "Кнопка нажата: ${it.id}"
Или:
val message = "Кнопка нажата: " + it.id.toString()
Также убедитесь, что у вас импортированы android.widget.Button и android.widget.Toast.
Шаг 4: Проверьте совместимость версий
У вас compileSdk = 34, Java 17, Kotlin 1.8.0. Это нормальная комбинация, но рекомендую обновить Kotlin до 1.9.22 (актуальная стабильная на момент ответа) и использовать плагин:
id("org.jetbrains.kotlin.android") version "1.9.22"
Также проверьте, что в корневом build.gradle.kts (уровень проекта) указана та же версия Kotlin:
plugins {
id("org.jetbrains.kotlin.android") version "1.9.22" apply false
}
Шаг 5: Альтернативный способ — Android Studio
Откройте вкладку Build внизу. Если там пусто, нажмите Run → Run 'app'. Ошибка появится в виде красной строки. Также можно нажать Analyze → Inspect Code — Android Studio подсветит синтаксические ошибки.
Если после всех исправлений ошибка остаётся, попробуйте:
- Сделать
File → Invalidate Caches and Restart
- Удалить папку
.kotlin в корне проекта
- Проверить, что в файле
gradle-wrapper.properties стоит gradle-8.2 или новее
В 90% случаев проблема решается включением подробного лога и исправлением синтаксической ошибки в Kotlin-коде. Ваш код в целом правильный, кроме конкатенации строк.
<<>>
Дополнительный подход: использование Gradle Kotlin DSL и явные ошибки
Если вы используете Kotlin DSL (.kts файлы), ошибки часто скрыты из-за кэширования. Попробуйте полностью очистить кэш Gradle:
./gradlew clean
rm -rf ~/.gradle/caches/
./gradlew assembleDebug --rerun-tasks
Также можно добавить в gradle.properties строку для более подробного вывода:
kotlin.compiler.execution.strategy=in-process
kotlin.daemon.jvmargs=-Xmx2g -Dkotlin.daemon.debug=true
Это заставит компилятор Kotlin работать в том же процессе, что и Gradle, и выводить ошибки прямо в консоль.
Ещё один совет: временно закомментируйте весь код в MainActivity.kt и оставьте пустой класс:
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
}
}
Если сборка пройдёт — значит ошибка именно в вашем коде. Постепенно раскомментируйте строки, чтобы найти проблемное место. Это старый, но надёжный метод.
И последнее: проверьте, что у вас установлен плагин Kotlin в Android Studio (File → Settings → Plugins → Kotlin). Без него IDE может не показывать ошибки, а Gradle — выдавать неинформативные сообщения.