Home » Android » Android Support plugin errors after upgrading Android Studio to 3.1.0

Android Support plugin errors after upgrading Android Studio to 3.1.0

Posted by: admin May 14, 2020 Leave a comment

Questions:

I use Kotlin and databinding for my project, after recent upgrade to Android Studio 3.1.0 I constantly see a lot of exceptions in Android Support plugin:

Could not initialize class android.databinding.tool.ext.ExtKt
java.lang.NoClassDefFoundError: Could not initialize class
android.databinding.tool.ext.ExtKt at
android.databinding.tool.reflection.ModelClass.getTypeName(ModelClass.java:688)
at
android.databinding.tool.reflection.ModelClass.equals(ModelClass.java:694)
at
android.databinding.tool.reflection.ModelClass.findSetter(ModelClass.java:614)
at
android.databinding.tool.reflection.ModelClass.findGetterOrField(ModelClass.java:523)
at
com.android.tools.idea.lang.databinding.DataBindingXmlReferenceContributor$2.getReferencesByElement(DataBindingXmlReferenceContributor.java:196)
at
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl.getReferences(ReferenceProvidersRegistryImpl.java:135)
at
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl.mapNotEmptyReferencesFromProviders(ReferenceProvidersRegistryImpl.java:123)
at
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistryImpl.doGetReferencesFromProviders(ReferenceProvidersRegistryImpl.java:102)
at
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry.getReferencesFromProviders(ReferenceProvidersRegistry.java:59)
at
com.intellij.psi.impl.source.resolve.reference.ReferenceProvidersRegistry.getReferencesFromProviders(ReferenceProvidersRegistry.java:53)
at
com.android.tools.idea.lang.databinding.DataBindingPsiElement.getReferences(DataBindingPsiElement.java:32)
at
org.intellij.plugins.intelliLang.references.InjectedReferencesContributor.getInjectedReferences(InjectedReferencesContributor.java:56)
at
org.intellij.plugins.intelliLang.references.InjectedReferencesInspection$1.visitElement(InjectedReferencesInspection.java:40)
at
com.intellij.psi.impl.PsiElementBase.accept(PsiElementBase.java:274)
at
com.android.tools.idea.lang.databinding.psi.impl.PsiDbExprImpl.accept(PsiDbExprImpl.java:43)
at
com.android.tools.idea.lang.databinding.psi.impl.PsiDbRefExprImpl.accept(PsiDbRefExprImpl.java:42)
at
com.intellij.codeInspection.InspectionEngine.acceptElements(InspectionEngine.java:82)
at
com.intellij.codeInspection.InspectionEngine.createVisitorAndAcceptElements(InspectionEngine.java:70)
at
com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.doInspectInjectedPsi(LocalInspectionsPass.java:750)
at
com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.lambda$inspectInjectedPsi$6(LocalInspectionsPass.java:338)
at
com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:133)
at
com.intellij.concurrency.ApplierCompleter.tryToExecAllList(ApplierCompleter.java:223)
at
com.intellij.concurrency.ApplierCompleter.execAndForkSubTasks(ApplierCompleter.java:151)
at
com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1125)
at
com.intellij.concurrency.ApplierCompleter.lambda$wrapInReadActionAndIndicator$1(ApplierCompleter.java:105)
at
com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:543)
at
com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at
com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at
com.intellij.concurrency.ApplierCompleter.wrapInReadActionAndIndicator(ApplierCompleter.java:116)
at
com.intellij.concurrency.ApplierCompleter.lambda$compute$0(ApplierCompleter.java:96)
at
com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:143)
at
com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:229)
at
com.intellij.concurrency.ApplierCompleter.compute(ApplierCompleter.java:96)
at
java.util.concurrent.CountedCompleter.exec(CountedCompleter.java:731)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at
java.util.concurrent.ForkJoinPool$WorkQueue.pollAndExecCC(ForkJoinPool.java:1190)
at
java.util.concurrent.ForkJoinPool.helpComplete(ForkJoinPool.java:1879)
at
java.util.concurrent.ForkJoinPool.awaitJoin(ForkJoinPool.java:2045)
at java.util.concurrent.ForkJoinTask.doJoin(ForkJoinTask.java:390)
at java.util.concurrent.ForkJoinTask.join(ForkJoinTask.java:719) at
java.util.concurrent.ForkJoinPool.invoke(ForkJoinPool.java:2616) at
com.intellij.concurrency.JobLauncherImpl.invokeConcurrentlyUnderProgress(JobLauncherImpl.java:65)
at
com.intellij.concurrency.JobLauncher.invokeConcurrentlyUnderProgress(JobLauncher.java:57)
at
com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.inspectInjectedPsi(LocalInspectionsPass.java:341)
at
com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.inspect(LocalInspectionsPass.java:231)
at
com.intellij.codeInsight.daemon.impl.LocalInspectionsPass.collectInformationWithProgress(LocalInspectionsPass.java:136)
at
com.intellij.codeInsight.daemon.impl.ProgressableTextEditorHighlightingPass.doCollectInformation(ProgressableTextEditorHighlightingPass.java:83)
at
com.intellij.codeHighlighting.TextEditorHighlightingPass.collectInformation(TextEditorHighlightingPass.java:70)
at
com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$null$1(PassExecutorService.java:437)
at
com.intellij.openapi.application.impl.ApplicationImpl.tryRunReadAction(ApplicationImpl.java:1130)
at
com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$doRun$2(PassExecutorService.java:430)
at
com.intellij.openapi.progress.impl.CoreProgressManager.registerIndicatorAndRun(CoreProgressManager.java:543)
at
com.intellij.openapi.progress.impl.CoreProgressManager.executeProcessUnderProgress(CoreProgressManager.java:488)
at
com.intellij.openapi.progress.impl.ProgressManagerImpl.executeProcessUnderProgress(ProgressManagerImpl.java:94)
at
com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.doRun(PassExecutorService.java:429)
at
com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.lambda$run$0(PassExecutorService.java:405)
at
com.intellij.openapi.application.impl.ReadMostlyRWLock.executeByImpatientReader(ReadMostlyRWLock.java:143)
at
com.intellij.openapi.application.impl.ApplicationImpl.executeByImpatientReader(ApplicationImpl.java:229)
at
com.intellij.codeInsight.daemon.impl.PassExecutorService$ScheduledPass.run(PassExecutorService.java:403)
at
com.intellij.concurrency.JobLauncherImpl$VoidForkJoinTask$1.exec(JobLauncherImpl.java:170)
at java.util.concurrent.ForkJoinTask.doExec(ForkJoinTask.java:289)
at
java.util.concurrent.ForkJoinPool$WorkQueue.runTask(ForkJoinPool.java:1056)
at
java.util.concurrent.ForkJoinPool.runWorker(ForkJoinPool.java:1692)
at
java.util.concurrent.ForkJoinWorkerThread.run(ForkJoinWorkerThread.java:157)

My main build.gradle

buildscript {
    ext.kotlin_version = '1.2.31'
    ext.protobuf_version = '3.0.0'
    ext.anko_version='0.10.4'

    repositories {
        google()
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.5'
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

Application build.gradle

apply plugin: 'com.android.application'

apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'project-report'

android {
    compileSdkVersion 27
    buildToolsVersion "27.0.3"

    defaultConfig {
        applicationId "com.myapp"
        minSdkVersion 16
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true

        javaCompileOptions {
            annotationProcessorOptions {
                arguments = ["room.schemaLocation": "$projectDir/schemas".toString()]
            }
        }
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    dataBinding {
        enabled = true
    }
}

kapt {
    useBuildCache = true
    mapDiagnosticLocations = true
}

dependencies {
    implementation project(':proto')

    implementation "android.arch.persistence.room:runtime:1.0.0"
    implementation 'com.android.support:recyclerview-v7:27.1.0'
    kapt "android.arch.persistence.room:compiler:1.0.0"
    kapt "com.android.databinding:compiler:3.1.0"

    implementation "android.arch.lifecycle:extensions:1.1.1"
    implementation "android.arch.lifecycle:common-java8:1.1.1"

    implementation 'com.auth0.android:jwtdecode:1.1.1'
    implementation 'com.squareup.okhttp3:okhttp:3.9.1'

    // Anko
    implementation "org.jetbrains.anko:anko-sdk15:$anko_version"
    implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version"

    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    implementation 'com.android.support:appcompat-v7:27.1.0'
    implementation 'com.android.support:design:27.1.0'
    implementation 'com.android.support.constraint:constraint-layout:1.0.2'
    implementation 'com.android.support:support-v4:27.1.0'
    implementation 'com.android.support:support-vector-drawable:27.1.0'

    testImplementation 'junit:junit:4.12'

    androidTestImplementation 'com.android.support.test:runner:1.0.1'
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
    //noinspection GradleDependency
    androidTestImplementation 'org.exparity:hamcrest-date:1.1.0'
}

And gradle.properties

org.gradle.jvmargs=-Xmx2048m
kotlin.incremental.usePreciseJavaTracking=true
android.enableD8=true
android.databinding.enableV2=true

gradle-wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-4.4-all.zip

So far I have tried:

  • Invalidate cache and restart
  • Reimport project
  • Clean and rebuid
  • Clean install without former configurations + reimport project + no extra plugins installed
  • In gradle.properties commenting out each line by one or all of them + invalidate and restart
  • Tried implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8" in gradle “just in case”

Nothing helped and errors still pop up almost in each file. As I can see this somehow is related to binding and kotlin.

Did anyone encounter this issue?

PS

In layout xml files non-existing string resources are not even highlighted, e.g. @string/non_existing_title – just appears as a valid string resource (even after clean install).
Though I’m not sure if this issue is related to reported exceptions.

UPDATE 1

I noticed that after Invalidate & restart another exception is thrown once:

com/squareup/javapoet/TypeName
java.lang.NoClassDefFoundError: com/squareup/javapoet/TypeName
    at android.databinding.tool.ext.ExtKt.<clinit>(ext.kt:180)
    at android.databinding.tool.reflection.ModelClass.getTypeName(ModelClass.java:688)
    at android.databinding.tool.reflection.ModelClass.equals(ModelClass.java:694)
    at android.databinding.tool.reflection.ModelClass.findSetter(ModelClass.java:614)
    at android.databinding.tool.reflection.ModelClass.findGetterOrField(ModelClass.java:523)
....
Caused by: java.lang.ClassNotFoundException: com.squareup.javapoet.TypeName PluginClassLoader[org.jetbrains.android, 10.3.1] [email protected]
    at com.intellij.ide.plugins.cl.PluginClassLoader.loadClass(PluginClassLoader.java:63)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 63 more

I’ve tried to add javapoet dependency but this exception is still thrown once after invalidating. And then only Could not initialize class android.databinding.tool.ext.ExtKt exceptions are thrown as reported initially.

How to&Answers:

After some hesitations I decided to move to canary channel and installed Android Studio Canary 10 (importing previous settings), and now specifications are:

Android Studio 3.2 Canary 10 Build #AI-181.2784.17.32.4705630, built on April 7, 2018
JRE: 1.8.0_152-release-1136-b01 amd64 
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o Linux 4.13.0-38-generic

On installing I had multiple issues with kotlin not finding many classes; invalidate and restart, clean/rebuild didn’t help.

Then I just uninstalled Kotlin plugin from Plugins section and it looks like after restart it was restored with original version and I have no problems since.

Current Kotlin plugin version: Version: 1.2.31-Studio3.2-1

And at last everything works as expected. @Yazazzello, thanks for your feedback on Android Studio Canary #10.