I'm trying to integrate Compose in a legacy code that uses Dagger and Hilt.
These are the relevant part of the configuration:
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-parcelize'
id 'androidx.navigation.safeargs.kotlin'
id 'com.google.gms.google-services'
id 'kotlin-kapt'
id 'com.google.firebase.crashlytics'
id 'com.google.firebase.appdistribution'
id 'com.google.dagger.hilt.android'
}
android {
compileSdk 33
defaultConfig {
minSdk 26
targetSdk 33
versionCode versionCode
versionName versionName
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
consumerProguardFiles "consumer-rules.pro"
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_11
targetCompatibility JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = 11
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion = "1.4.2"
kotlinCompilerVersion = kotlin_version
}
kotlinOptions {
freeCompilerArgs = freeCompilerArgs + [
"-P",
"plugin:androidx.compose.compiler.plugins.kotlin:liveLiteralsEnabled=false",
]
}
}
dependencies {
...
implementation UI.composeRuntime
implementation UI.composeUI
implementation UI.composeMaterialIconExtended
implementation UI.composePreview
implementation UI.composeUiTooling
implementation UI.composeJunit4
implementation UI.composeActivity
implementation UI.composeConstraintLayout
}
where:
object UI {
const val composeUI = "androidx.compose.ui:ui:${Version.compose}"
const val composeRuntime = "androidx.compose.runtime:runtime:${Version.compose}"
const val composeMaterial = "androidx.compose.material:material:${Version.compose}"
const val composeMaterialIconExtended =
"androidx.compose.material:material-icons-extended:${Version.composeIconExtended}"
const val composePreview = "androidx.compose.ui:ui-tooling-preview:${Version.compose}"
const val composeUiTooling = "androidx.compose.ui:ui-tooling:${Version.compose}"
const val composeJunit4 = "androidx.compose.ui:ui-test-junit4:${Version.compose}"
const val composeActivity = "androidx.activity:activity-compose:${Version.composeActivity}"
object Version {
const val compose = "1.3.3"
const val composeActivity = "1.4.0"
const val constraintLayout = "2.1.2"
const val composeConstraintLayout = "1.0.0-rc02"
const val composeIconExtended = "1.0.5"
}
}
In the project build.gradle file I have:
buildscript {
ext.kotlin_version = '1.8.10'
ext.gradle_plugin = '1.8.10'
repositories {
mavenLocal()
google()
mavenCentral()
}
dependencies {
classpath "com.android.tools.build:gradle:7.3.1"
classpath 'com.google.gms:google-services:4.3.15'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$gradle_plugin"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
classpath "com.google.dagger:hilt-android-gradle-plugin:2.44.2"
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.2'
classpath 'com.google.firebase:firebase-appdistribution-gradle:3.2.0'
def nav_version = "2.4.2"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
}
}
allprojects {
repositories {
mavenLocal()
google()
mavenCentral()
maven { url "https://jitpack.io" }
}
}
The app builds successfully but at runtime a get a crash with the error:
java.lang.NoSuchMethodError: No virtual method Int$class-CommonModule()I in class Lcom/my/package/di/LiveLiterals$CommonModuleKt;
where CommonModule is a Dagger/Hilt Module.
I have added
"plugin:androidx.compose.compiler.plugins.kotlin:liveLiteralsEnabled=false",
trying to get rid of this problem but it doesn't help.
The app is modular and I have applied Compose only to the app module that contains the Android UI that is now Activities and Fragments and layout XMLs.
Please try to add this line in your build.gradle
kotlinCompilerExtensionVersion = '1.3.3'
the latest version of kotlinCompilerExtensionVersion is 1.4.2.
but keep in your mind it should be compatible with your kotlin version.
please check this and sync your project again and notify me that is your problem solved?
Related
I have Two lines of error when i run the simple Jetpack Compose Material 3 Project
build.gradle(Project:)
buildscript {
ext {
compose_version = '1.3.0-beta02'
core_ktx_version = '1.9.0-rc01'
material3_version = 'material3:1.3.0-beta02'
lifecycle_version = '2.4.1'
activity_compose_version = '1.5.1'
nav_version = "2.5.2"
hilt_version = "2.42"
hilt_nav_fragment = "1.0.0"
lottieVersion = "5.2.0"
timber_version = "5.0.1"
hilt_navigation_compose = "1.0.0"
room_version = "2.3.0-beta02"
kotlin_version = "1.6.21"
}
dependencies {
classpath "com.google.dagger:hilt-android-gradle-plugin:$hilt_version"
classpath "com.android.tools.build:gradle:4.2.1"
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:$nav_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}// Top-level build file where you can add configuration options common to all sub-projects/modules.
plugins {
id 'com.android.application' version '7.2.2' apply false
id 'com.android.library' version '7.2.2' apply false
id 'org.jetbrains.kotlin.android' version '1.6.21' apply false
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle (Module : )
plugins {
id 'com.android.application'
id 'org.jetbrains.kotlin.android'
id 'kotlin-kapt'
id 'dagger.hilt.android.plugin'
}
android {
compileSdk 33
defaultConfig {
applicationId "com.jetpackcompose.jp1"
minSdk 24
targetSdk 33
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
vectorDrawables {
useSupportLibrary true
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
buildFeatures {
compose true
}
composeOptions {
kotlinCompilerExtensionVersion compose_version
}
packagingOptions {
resources {
excludes += '/META-INF/{AL2.0,LGPL2.1}'
}
}
}
dependencies {
implementation "androidx.core:core-ktx:$core_ktx_version"
implementation "androidx.compose.ui:ui:$compose_version"
implementation "androidx.compose.material3:$material3_version"
implementation "androidx.compose.ui:ui-tooling-preview:$compose_version"
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
implementation "androidx.activity:activity-compose:$activity_compose_version"
implementation "androidx.compose.compiler:compiler:1.3.1"
implementation 'androidx.appcompat:appcompat:1.6.0-beta01'
// hilt -android
implementation "com.google.dagger:hilt-android:$hilt_version"
kapt "com.google.dagger:hilt-android-compiler:$hilt_version"
// To Integrate Navigation
implementation "androidx.navigation:navigation-compose:$nav_version"
// To use additional extensions of navigation frameworks like hiltViewModel()
implementation "androidx.hilt:hilt-navigation-fragment:$hilt_nav_fragment"
implementation "androidx.hilt:hilt-navigation-compose:$hilt_navigation_compose"
implementation "androidx.navigation:navigation-fragment-ktx:$nav_version"
implementation "androidx.navigation:navigation-ui-ktx:$nav_version"
testImplementation 'junit:junit:4.13.2'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
androidTestImplementation "androidx.compose.ui:ui-test-junit4:$compose_version"
debugImplementation "androidx.compose.ui:ui-tooling:$compose_version"
debugImplementation "androidx.compose.ui:ui-test-manifest:$compose_version"
}
settings.gradle:
pluginManagement {
repositories {
gradlePluginPortal()
google()
mavenCentral()
maven {
url "https://maven.google.com"
}
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
google()
mavenCentral()
maven {
url "https://maven.google.com"
}
}
}
rootProject.name = "jp1"
include ':app'
when i run the project i have an error of :
Execution failed for task ':app:desugarDebugFileDependencies'.
Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
Could not find androidx.compose.material3:material3:1.3.0-beta02.
Compose compiler and the other compose dependencies have different releases.
The version androidx.compose.compiler:compiler:1.3.0-beta02 doesn't exist.
You can check it in the google maven repo
You can in any case use the stable version of the module compiler 1.3.1 and all the other compose dependencies at 1.2.1 or 1.3.0-beta02:
buildscript {
ext {
compose_compiler = '1.3.1' //compiler
compose_version = '1.3.0-beta02' //compose dependencies
compose_material3 = '1.0.0-beta02' //material3 release
}
//...
}
and then:
composeOptions {
kotlinCompilerExtensionVersion compose_compiler
}
dependencies {
// beta 1.3.0 releases
implementation "androidx.compose.material:material:$compose_version"
//...
//material3
implementation "androidx.compose.material3:material3:$compose_material3"
}
As described in the documentation the compiler 1.3.x requires kotlin 1.7.10:
What is:
Unable to start activity ComponentInfo: java.lang.NullPointerException: Firestore component is not present
Recently i have converted code from java to Kotlin. Few days it worked well but from last 1 week i don't know why but whenever i run the application below error is coming.
Kotlin error -
java.lang.RuntimeException: Unable to start activity ComponentInfo:
java.lang.NullPointerException: Firestore component is not present
Below is my app gradle
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'kotlin-android-extensions'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 31
defaultConfig {
configurations.all {
resolutionStrategy { force 'androidx.core:core-ktx:1.6.0' }
}
applicationId "in.xxx"
minSdkVersion 26
targetSdkVersion 31
versionCode 2
versionName "1.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
viewBinding false
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
}
}
dependencies {
// Import the BoM for the Firebase platform
implementation platform('com.google.firebase:firebase-bom:29.0.0')
implementation 'com.google.firebase:firebase-firestore-ktx'
implementation 'com.google.firebase:firebase-storage-ktx'
implementation 'com.google.firebase:firebase-auth-ktx'
implementation 'com.google.firebase:firebase-messaging-ktx'
implementation 'com.google.firebase:firebase-core'
implementation 'com.github.OneTouchPro:One:3.4'
implementation 'androidx.core:core-ktx:1.7.0'
implementation 'androidx.appcompat:appcompat:1.4.1'
implementation 'com.google.android.material:material:1.5.0'
androidTestImplementation 'androidx.test.ext:junit:1.1.3'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
}
Project Gradle:
buildscript {
ext.kotlin_version = "1.6.10"
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:4.1.3'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.10'
}
}
allprojects {
repositories {
google()
mavenCentral()
maven { url 'https://jitpack.io' }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
Kotlin File:
class MainActivity : AppCompatActivity() {
private lateinit var mStorageRef: StorageReference
private lateinit var oneSharedPref: OneSharedPref
private lateinit var database: FirebaseFirestore
private lateinit var mProgress: OneProgress
private lateinit var postAdapter: PostAdapter
private lateinit var categoryAdapter: CategoryAdapter
private var startDate: Timestamp? = null
private var dateValue: Int? = 0
private var calendar: Calendar? = Calendar.getInstance()
private var query: Query? = null
private var splash: Boolean = true
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
FirebaseApp.initializeApp(this)
database = Firebase.firestore
}
Error is coming for this line
database = Firebase.firestore
I got solution to my problem. Added Binding option in my scripts and moved project dependencies to gradle settings.
I'm trying to setup jetpack compose for an existing project but i'm having the above error when i trying to run the app after synchronized the gradle files.
This is how my build.gradle (project) looks like:
buildscript {
ext.kotlin_version = '1.5.10'
ext.compose_version = '1.0.0'
repositories {
google()
jcenter()
maven { url 'https://jitpack.io' }
}
dependencies {
classpath 'com.android.tools.build:gradle:7.0.0'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.8.0'
classpath 'com.google.gms:google-services:4.3.4'
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.3.0'
}
}
plugins {
id "com.github.hierynomus.license" version "0.14.0"
}
....
and this is how my build.gradle(Module) looks like:
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'kotlin-kapt'
android {
compileSdkVersion 30
buildToolsVersion '30.0.3'
defaultConfig {
applicationId "com.app.schedulicity"
minSdkVersion 21
targetSdkVersion 30
versionCode 82
versionName "10.0.9"
renderscriptSupportModeEnabled true
multiDexEnabled true
testInstrumentationRunner 'androidx.test.runner.AndroidJUnitRunner'
// Room migration helper: expose the schema
kapt {
arguments {
arg("room.schemaLocation", "$projectDir/schemas".toString())
}
}
// Room migration testing: adding the schema location as an asset folder
sourceSets {
androidTest.assets.srcDirs += files("$projectDir/schemas".toString())
String sharedTestDir = 'src/sharedTest/java'
debugTesting {
java.srcDir sharedTestDir
resources.srcDirs += ['src/test/resources']
}
}
javaCompileOptions {
annotationProcessorOptions {
arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
}
buildFeatures {
compose = true
viewBinding true
}
composeOptions {
kotlinCompilerVersion = "1.5.10"
kotlinCompilerExtensionVersion = "1.0.0"
}
kotlinOptions {
jvmTarget = "1.8"
}
....
If i synch the project all looks good but when i try to compile then the error happens. As you can see i haven't include any dependency to the project yet.
Maybe some of you have faced with this problem before and have a solution :)
Of course the error will occur. The error does not occur in sync since there is nothing wrong with the added dependencies. Everything is downloaded and works fine. When you try to compile, it doesn't because you have not added the compose compiler dependency. How would it compile when the compiler itself is missing?
Create a dummy project using the studio templates and copy the dependencies from there.
Or visit here
https://developer.android.com/jetpack/compose/interop/adding
fun saveImageInFirebase(){
var currentUser =mAuth!!.currentUser
val email:String=currentUser!!.email.toString()
val storage=FirebaseStorage.getInstance()
val storgaRef=storage.getReferenceFromUrl("gs://gameudemy.appspot.com")
val df=SimpleDateFormat("ddMMyyHHmmss")
val dataobj=Date()
val imagePath= splitString(email) + "."+ df.format(dataobj)+ ".jpg"
val ImageRef=storgaRef.child("images/"+imagePath )
imageSpace.isDrawingCacheEnabled=true
imageSpace.buildDrawingCache()
val drawable=imageSpace.drawable as BitmapDrawable
val bitmap=drawable.bitmap
val baos=ByteArrayOutputStream()
bitmap.compress(Bitmap.CompressFormat.JPEG,100,baos)
val data= baos.toByteArray()
val uploadTask=ImageRef.putBytes(data)
uploadTask.addOnFailureListener{
Toast.makeText(applicationContext,"fail to upload",Toast.LENGTH_LONG).show()
}.addOnSuccessListener { taskSnapshot ->
var DownloadURL= taskSnapshot.storage.downloadUrl.toString()!!
myRef.child("Users").child(currentUser.uid).child("email").setValue(currentUser.email)
myRef.child("Users").child(currentUser.uid).child("ProfileImage").setValue(DownloadURL)
loadTweets()
}
}
The setValue method called turns red and says Unresolved reference.
How to resolve it?
Gradle structure->
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.4.10"
repositories {
google()
jcenter()
}
dependencies {
classpath "com.android.tools.build:gradle:4.1.0"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
classpath 'com.google.gms:google-services:4.3.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
plugins {
id 'com.android.application'
id 'kotlin-android'
id 'com.google.gms.google-services'
}
android {
compileSdkVersion 30
buildToolsVersion "30.0.2"
defaultConfig {
applicationId "com.shanu.sevenstar"
minSdkVersion 24
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
}
apply plugin: 'kotlin-android-extensions'
dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.2'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'com.google.android.material:material:1.2.1'
implementation 'androidx.constraintlayout:constraintlayout:2.0.2'
implementation 'com.google.firebase:firebase-analytics:17.6.0'
implementation 'com.google.firebase:firebase-core:17.5.1'
implementation 'com.google.firebase:firebase-auth:19.4.0'
implementation 'com.google.firebase:firebase-database:19.5.0'
implementation 'com.google.firebase:firebase-storage:19.2.0'
testImplementation 'junit:junit:4.13.1'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0'
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.8"
}
Error returned is
Unresolved reference. None of the following candidates is applicable because of receiver type mismatch:
public inline operator fun MutableMap<in String, in TypeVariable(V)>.setValue(thisRef: Any?, property: KProperty<>, value: TypeVariable(V)): Unit defined in kotlin.collections
public inline operator fun KMutableProperty0<TypeVariable(V)>.setValue(thisRef: Any?, property: KProperty<>, value: TypeVariable(V)): Unit defined in kotlin
public inline operator fun <T, V> KMutableProperty1<TypeVariable(T), TypeVariable(V)>.setValue(thisRef: TypeVariable(T), property: KProperty<*>, value: TypeVariable(V)): Unit defined in kotlin
So, I'm trying to let jetpack compose run with a simple example, I have already updated my kotlin plugin to 1.4.0 and also updated all my build gradle with the jetpack compose documentation, but I got this error when compiling
java.lang.IncompatibleClassChangeError: Found interface
org.jetbrains.kotlin.backend.common.extensions.IrPluginContext, but
class was expected at
androidx.compose.plugins.kotlin.ComposeIrGenerationExtension.generate(ComposeIrGenerationExtension.kt:41)
I have also downloaded the canary version of Android studio
build.gradle project
// Top-level build file where you can add configuration options common to all sub-projects/modules.
buildscript {
ext.kotlin_version = "1.4.0-rc"
repositories {
google()
jcenter()
maven{
url "https://dl.bintray.com/kotlin/kotlin-eap/"
}
}
dependencies {
classpath "com.android.tools.build:gradle:4.0.1"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
allprojects {
repositories {
google()
jcenter()
maven{
url "https://dl.bintray.com/kotlin/kotlin-eap/"
}
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
build.gradle app
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
android {
compileSdkVersion 30
buildToolsVersion "30.0.1"
defaultConfig {
applicationId "com.jetpackcompose"
minSdkVersion 22
targetSdkVersion 30
versionCode 1
versionName "1.0"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
buildFeatures {
// Enables Jetpack Compose for this module
compose true
}
// Set both the Java and Kotlin compilers to target Java 8.
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
}
kotlinOptions {
jvmTarget = '1.8'
}
composeOptions {
kotlinCompilerVersion kotlin_version
kotlinCompilerExtensionVersion "0.1.0-dev13"
}
}
dependencies {
implementation fileTree(dir: "libs", include: ["*.jar"])
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
implementation 'androidx.core:core-ktx:1.3.1'
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation 'androidx.ui:ui-core:0.1.0-dev13'
implementation 'androidx.ui:ui-tooling:0.1.0-dev13'
implementation 'androidx.ui:ui-layout:0.1.0-dev13'
implementation 'androidx.ui:ui-material:0.1.0-dev13'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
kotlinOptions {
jvmTarget = "1.8"
freeCompilerArgs += ["-Xallow-jvm-ir-dependencies", "-Xskip-prerelease-check"]
}
}
But I cant compile the app, I'm trying to run the basic example
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContent{
sayHello()
}
}
#Preview
#Composable
fun sayHello(){
Text("Hello World")
}
}
Does anyone knows why this error is thrown ?
Using Kotlin version 1.4.10 instead of 1.4.20 solved my problem.
Try to update Compose version to 0.1.0-dev16. Looks like 0.1.0-dev13 isn't compatible with Kotlin 1.4-rc