Question
I am seeing this warning in Android Studio 3.0 Canary 4:
Kotlin version that is used for building with Gradle (1.1.2-5) differs from the one bundled into the IDE plugin (1.1.2-4)
Has anyone solved this issue, and what is the correct way to fix it?
The main problem is that the Kotlin version used by Gradle to build the project does not match the Kotlin version bundled with the IDE plugin.
Short Answer
By the end of this page, you will understand what a Kotlin version mismatch means, why it happens between Gradle and Android Studio, how to identify where the Kotlin version is configured, and the safest ways to resolve the warning in an Android project.
Concept
A version mismatch happens when two parts of your development setup use different versions of the same tool.
In this case:
- Gradle uses one Kotlin version to build your project.
- Android Studio / IntelliJ Kotlin plugin uses another Kotlin version for editor features such as syntax highlighting, inspections, and code analysis.
Even if your code still builds, this mismatch can cause problems such as:
- misleading IDE warnings
- inconsistent code analysis
- autocomplete or inspection issues
- build behavior that does not fully match what the IDE shows
In Android and Kotlin projects, the Kotlin version is usually declared in Gradle configuration, often in the project-level build.gradle file. Android Studio also has its own installed Kotlin plugin version.
The warning appears because the IDE detects that:
- your project is built with one Kotlin compiler version
- but the IDE plugin understands another version
The fix is usually to make both versions match.
Common solutions include:
- updating the Kotlin plugin in Android Studio
- changing the project Kotlin version in Gradle
- syncing Gradle after the change
- restarting the IDE if needed
This matters in real programming because build tools, plugins, and IDE integrations often depend on compatible versions. Keeping them aligned reduces confusion and prevents subtle bugs.
Mental Model
Think of this like two translators working on the same document:
- one translator is the Gradle build system
- the other translator is the IDE plugin
If one translator uses a newer dictionary and the other uses an older one, they may interpret some words differently.
Your project may still work, but you can get confusing messages or inconsistent results.
The safest approach is to make sure both translators use the same dictionary version.
Syntax and Examples
In many Android/Kotlin projects, the Kotlin version is declared in the top-level Gradle file.
A common setup looks like this:
buildscript {
ext.kotlin_version = '1.1.2-5'
repositories {
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
This tells Gradle which Kotlin plugin version to use when building the project.
If Android Studio has a different Kotlin plugin version installed, you may see a warning.
Option 1: Update the IDE Kotlin plugin
If your project already uses the correct Kotlin version, update the Kotlin plugin in Android Studio so it matches the Gradle version.
Option 2: Change the Gradle Kotlin version
If you want to match the IDE version instead, change the Gradle configuration:
buildscript {
ext.kotlin_version = '1.1.2-4'
repositories {
google()
jcenter()
}
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Then sync the project.
What to choose
Usually, you should use a version that is supported by both:
- your Android Studio version
- your Kotlin plugin
- your Gradle setup
In preview or Canary builds, temporary mismatches are more common.
Step by Step Execution
Consider this simplified Gradle configuration:
buildscript {
ext.kotlin_version = '1.1.2-5'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Here is what happens step by step:
-
Gradle reads
ext.kotlin_version. -
The value is set to
'1.1.2-5'. -
Gradle uses that value in:
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" -
The project is built with Kotlin
1.1.2-5. -
Android Studio checks its bundled Kotlin plugin version.
-
If the IDE plugin version is
1.1.2-4, it notices they are different. -
Android Studio shows a warning about the mismatch.
Nothing is necessarily broken immediately, but the toolchain is not fully aligned.
A typical fix flow is:
- Open the project-level
build.gradle. - Find the Kotlin version.
- Check the installed Kotlin plugin version in Android Studio.
- Update one side so both match.
- Sync Gradle.
- Rebuild the project.
- Restart the IDE if the warning remains.
Real World Use Cases
Version alignment is common in real software projects, not just with Kotlin.
Android app development
An Android team upgrades Kotlin in Gradle to use a bug fix, but some developers still have an older IDE plugin. They start seeing different warnings locally.
CI vs local development
A project builds successfully in CI because CI uses the Gradle-defined version, but a developer's IDE reports false warnings because its plugin is older.
Team onboarding
A new developer opens the project with a different Android Studio version and immediately sees compatibility warnings. Matching tool versions avoids wasted setup time.
Plugin-based ecosystems
Projects using Kotlin, Android Gradle Plugin, lint tools, and IDE plugins often need compatible versions across all tools to keep builds stable and predictable.
Real Codebase Usage
In real projects, developers usually manage tool versions deliberately rather than changing them randomly.
Centralized version definition
Many codebases keep the Kotlin version in one place:
ext.kotlin_version = '1.1.2-5'
This makes upgrades easier and reduces duplication.
Controlled upgrades
Teams often upgrade versions in small steps:
- update Kotlin version
- sync Gradle
- run tests
- check IDE compatibility
- update documentation if needed
Environment consistency
Projects often document required versions in:
README- onboarding docs
- Gradle files
- version catalogs or build configuration files
Guarding against mismatch
Real teams commonly:
- avoid mixing unstable IDE builds with production projects
- use the same Android Studio version across the team
- pin known working Kotlin versions
- upgrade only after compatibility is confirmed
Early troubleshooting pattern
When a warning appears, developers usually check these first:
- Gradle Kotlin plugin version
- IDE Kotlin plugin version
- Android Studio version
- whether the project is using a Canary, Beta, or stable build
Common Mistakes
Here are common beginner mistakes when dealing with Kotlin version mismatch.
1. Updating only one side
A developer changes the Gradle version but forgets the IDE plugin, or updates the plugin but not Gradle.
ext.kotlin_version = '1.1.2-5'
If the IDE still uses 1.1.2-4, the warning remains.
Avoid it: Check both Gradle and the IDE plugin version.
2. Editing the wrong Gradle file
Some beginners look in the app-level build.gradle instead of the project-level one.
Avoid it: Look for the file that contains buildscript and classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:...".
3. Ignoring Canary build instability
Since Android Studio Canary builds are preview versions, bundled plugins may temporarily lag behind or change frequently.
Avoid it: Expect more version issues in Canary releases, and prefer stable versions for important work.
4. Forgetting to sync after changes
Changing the version in Gradle does nothing until the project is synced.
Avoid it: Run Gradle sync after every version change.
5. Assuming the warning always means build failure
This warning often means mismatch, not necessarily broken build.
Read the exact message. A warning is different from a compiler error.
Comparisons
| Situation | What it means | Typical fix |
|---|---|---|
| Gradle Kotlin version = IDE Kotlin plugin version | Build tool and IDE agree | No action needed |
| Gradle version is newer than IDE plugin | Build may work, IDE may warn | Update IDE plugin or lower Gradle version |
| IDE plugin is newer than Gradle version | IDE may support features not used by build | Update Gradle version or keep versions aligned |
| Using stable Android Studio | Fewer unexpected mismatches | Prefer for daily work |
| Using Canary Android Studio | More likely to see temporary incompatibilities | Expect warnings and check compatibility notes |
Gradle vs IDE plugin
| Tool | Role |
|---|---|
| Gradle Kotlin plugin | Compiles and builds the project |
Cheat Sheet
Problem:
Kotlin version used by Gradle != Kotlin version bundled in IDE plugin
Where to check
- Project-level
build.gradle - Kotlin plugin version in Android Studio / IntelliJ
- Android Studio version
Common Gradle setting
buildscript {
ext.kotlin_version = '1.1.2-5'
dependencies {
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
Fix options
- update the IDE Kotlin plugin to match Gradle
- change
ext.kotlin_versionto match the IDE - sync Gradle
- restart the IDE
Good practice
- keep build tools and IDE plugin versions aligned
- prefer stable IDE versions for important projects
- document the expected tool versions for the team
Important note
A mismatch warning does not always mean the build will fail, but it should still be resolved for consistency.
FAQ
Why does Android Studio show a Kotlin version mismatch warning?
Because the Kotlin version used by Gradle to build the project is different from the Kotlin version installed or bundled in the IDE plugin.
Where is the Kotlin version defined in a Gradle-based Android project?
Usually in the project-level build.gradle, often as ext.kotlin_version, and then referenced in the Kotlin Gradle plugin dependency.
Should I update Gradle or the IDE plugin?
Either can work. The goal is to make both versions match. Choose the option that best fits your Android Studio and project compatibility.
Can I ignore the warning?
Sometimes the project still builds, but ignoring it can lead to confusing IDE behavior. It is better to align the versions.
Why is this more common in Canary builds?
Canary builds are preview releases, so bundled plugins and supported tool versions can change more often and may temporarily be out of sync.
Does this warning mean my Kotlin code is wrong?
No. It usually means your tools are using different Kotlin versions, not that your code syntax is invalid.
What should I do after changing the Kotlin version?
Sync Gradle, rebuild the project, and restart the IDE if the warning does not disappear immediately.
Mini Project
Description
Create a small Android/Kotlin project setup checklist that detects and fixes Kotlin version mismatches between Gradle and the IDE. This project helps you practice reading Gradle configuration, identifying the source of a tool version warning, and applying a consistent fix.
Goal
Make the Kotlin version used by Gradle and the IDE match, then verify that the project syncs cleanly without mismatch warnings.
Requirements
- Create a sample Gradle configuration with a Kotlin version variable.
- Set the Kotlin Gradle plugin dependency using that variable.
- Compare the Gradle Kotlin version with the IDE plugin version.
- Update one side so both versions match.
- Sync and rebuild the project to confirm the warning is resolved.
Keep learning
Related questions
Accessing Kotlin Extension Functions from Java
Learn how Kotlin extension functions are compiled and how to call them correctly from Java with clear examples and common pitfalls.
Allow HTTP and HTTPS in Android 9 Pie with Network Security Configuration
Learn how Android 9 Pie handles cleartext HTTP traffic and how to allow HTTP and HTTPS safely using network security config.
Android AlarmManager Example: Scheduling Tasks with AlarmManager
Learn how to use Android AlarmManager to schedule tasks, set alarms, and handle broadcasts with a simple beginner example.