I have a huge project with databinding, kotlin, dagger. I spent a few days trying to build it using several stackoverflow's solutions and decided to ask it personally.
I assume some of third party libraries uses databinding because adding this line doesn't help.
kapt 'com.android.databinding:compiler:3.0.0'
Android Studio says:
'androidProcessor' dependencies won't be recognized as kapt annotation processors. Please change the configuration name to 'kapt' for these artifacts: 'com.android.databinding:compiler:3.0.0'.
What I've tried and it didn't help:
kapt { generateStubs = true }
in local.properties: kotlin.incremental=false
another SO solution didn't help:
kapt ('com.android.databinding:compiler:3.0.0'){ force = true }
my build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'blockcanaryex' apply plugin: 'kotlin-kapt' apply plugin: 'newrelic' apply plugin: 'kotlin-android-extensions' def props = new Properties() file("newrelic.properties").withInputStream { props.load(it) } android { compileSdkVersion 26 buildToolsVersion '26.0.2' applicationVariants.all { variant -> variant.outputs.each { output -> def stdout = new ByteArrayOutputStream() exec { commandLine "git", "symbolic-ref", "--short", "HEAD" standardOutput = stdout } def branch = stdout.toString().trim() branch = "branch.$branch" if (project.hasProperty("buildNumber")) { def buildNumber = project.property("buildNumber") output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + branch + "-" + versionName + "." + versionCode + "." + buildNumber + ".apk")) } else { output.outputFile = new File(output.outputFile.parent, output.outputFile.name.replace(".apk", "-" + branch + "-" + versionName + "." + versionCode + ".apk")) } } } def version = "4.15" defaultConfig { buildConfigField "String", "TOKEN", "\"" + props.getProperty("token") + "\"" applicationId "xxx" minSdkVersion 19 targetSdkVersion 26 versionName version versionCode 260 multiDexEnabled true vectorDrawables.useSupportLibrary = true } signingConfigs { release { storeFile file("xxx") storePassword "xxx" keyAlias "xxx" keyPassword "xxx" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' signingConfig signingConfigs.release } debug { versionNameSuffix ".debug" } } flavorDimensions "prod","stag" productFlavors { production { dimension "prod" } staging { dimension "stag" applicationId "app.id" versionName(version + ".staging") } } packagingOptions { exclude 'META-INF/DEPENDENCIES.txt' exclude 'META-INF/LICENSE.txt' exclude 'META-INF/NOTICE.txt' exclude 'META-INF/NOTICE' exclude 'META-INF/LICENSE' exclude 'META-INF/DEPENDENCIES' exclude 'META-INF/notice.txt' exclude 'META-INF/license.txt' exclude 'META-INF/dependencies.txt' exclude '.readme' } compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 } dexOptions { javaMaxHeapSize "4g" } dataBinding { enabled = true } } repositories { jcenter() maven { url "https://jitpack.io" } maven { url 'https://bitbucket.org/gryphteam/maven/raw/release' } maven { url 'https://maven.google.com/' name 'Google' } } def supportVersion = "26.1.0" def playServicesVersion = "11.6.0" def retrofitVersion = "2.3.0" dependencies { implementation 'com.jakewharton:butterknife:6.1.0' implementation('de.keyboardsurfer.android.widget:crouton:1.8.5@aar') { exclude group: 'com.google.android', module: 'support-v4' } implementation 'com.google.dagger:dagger:2.10' kapt 'com.google.dagger:dagger-compiler:2.10' kapt 'com.android.databinding:compiler:3.0.0' implementation 'de.greenrobot:eventbus:2.4.0' implementation 'com.mcxiaoke.volley:library:1.0.19' implementation 'com.google.code.gson:gson:2.8.0' implementation "com.google.android.gms:play-services-places:$playServicesVersion" implementation "com.google.android.gms:play-services-plus:$playServicesVersion" implementation "com.google.android.gms:play-services-analytics:$playServicesVersion" implementation "com.google.android.gms:play-services-auth:$playServicesVersion" implementation "com.google.android.gms:play-services-gcm:$playServicesVersion" implementation "com.google.android.gms:play-services-ads:$playServicesVersion" implementation "com.android.support:appcompat-v7:$supportVersion" implementation "com.android.support:support-v13:$supportVersion" implementation "com.android.support:recyclerview-v7:$supportVersion" implementation "com.android.support:design:$supportVersion" implementation "com.android.support:support-annotations:$supportVersion" implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:multidex:1.0.2' implementation 'commons-io:commons-io:2.4' implementation 'org.apache.commons:commons-lang3:3.1' implementation files('libs/comscore.jar') implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.github.PhilJay:MPAndroidChart:v3.0.2' implementation 'com.github.deano2390:MaterialShowcaseView:1.0.5' implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' implementation 'com.google.ads.mediation:facebook:4.26.1.0' implementation 'com.facebook.android:audience-network-sdk:4.26.1' implementation 'org.jboss.netty:netty:3.2.10.Final' //Testing testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' androidTestImplementation 'com.android.support:multidex:1.0.2' androidTestImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test.espresso:espresso-web:3.0.1' androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test:runner:0.3') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test:rules:0.3') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test.espresso:espresso-intents:2.2') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test.espresso:espresso-contrib:2.2') { exclude group: 'com.android.support', module: 'app-compat' exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-annotations:22.2.1' exclude module: 'recyclerview-v7' } androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' androidTestImplementation "com.android.support:support-annotations:$supportVersion" implementation project(':eventsource_android-release') implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.0' debugImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRT:0.9.5.3' releaseImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRTNoOp:0.9.5.3' testImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRTNoOp:0.9.5.3' implementation 'me.mvdw.recyclerviewmergeadapter:recyclerviewmergeadapter:2.0.0' debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.1' releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' implementation "com.squareup.retrofit2:retrofit:$retrofitVersion" implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion" implementation "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion" implementation 'io.reactivex.rxjava2:rxjava:2.1.2' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'com.github.ReactiveX:RxKotlin:2.1.0' implementation 'com.gojuno.koptional:koptional-rxjava2-extensions:1.2.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation 'com.newrelic.agent.android:android-agent:5.14.0' implementation 'org.jsoup:jsoup:1.10.3' }
Installing the required dependencies Launch Android studio and create a new project. Once the project is ready, go to the Gradle scripts folder and open build. gradle (module: app) . Add buildFeatures and set databinding to true .
Recently Android has announced that with Kotlin 1.4. 20, their Android Kotlin Extensions Gradle plugin will be deprecated and will no longer be shipped in the future Kotlin releases. Android Kotlin Extensions plugin brought with it two very cool features : Synthetics let you replace calls to findViewById with kotlinx.
I just tried with similar build.gradle
settings in a new and fresh kotlin project and it builds. Unfortunately I couldn't use all your libs and your exact setting but maybe it's just a matter of order. Here is my
build.gradle
apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'kotlin-android-extensions' kapt { generateStubs = true } android { compileSdkVersion 26 defaultConfig { applicationId "nice.fontaine.kottest" minSdkVersion 21 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } } dependencies { implementation 'com.jakewharton:butterknife:6.1.0' annotationProcessor 'com.jakewharton:butterknife:6.1.0' implementation('de.keyboardsurfer.android.widget:crouton:1.8.5@aar') { exclude group: 'com.google.android', module: 'support-v4' } implementation 'com.google.dagger:dagger:2.10' kapt 'com.google.dagger:dagger-compiler:2.10' kapt 'com.android.databinding:compiler:3.0.0' implementation 'de.greenrobot:eventbus:2.4.0' implementation 'com.mcxiaoke.volley:library:1.0.19' implementation 'com.google.code.gson:gson:2.8.0' implementation "com.google.android.gms:play-services-places:11.6.0" implementation "com.google.android.gms:play-services-plus:11.6.0" implementation "com.google.android.gms:play-services-analytics:11.6.0" implementation "com.google.android.gms:play-services-auth:11.6.0" implementation "com.google.android.gms:play-services-gcm:11.6.0" implementation "com.google.android.gms:play-services-ads:11.6.0" implementation "com.android.support:appcompat-v7:26.1.0" implementation "com.android.support:support-v13:26.1.0" implementation "com.android.support:recyclerview-v7:26.1.0" implementation "com.android.support:design:26.1.0" implementation "com.android.support:support-annotations:26.1.0" implementation 'com.android.support.constraint:constraint-layout:1.0.2' implementation 'com.android.support:multidex:1.0.2' implementation 'commons-io:commons-io:2.4' implementation 'org.apache.commons:commons-lang3:3.1' implementation 'com.squareup.picasso:picasso:2.5.2' implementation 'com.amulyakhare:com.amulyakhare.textdrawable:1.0.1' implementation 'com.google.ads.mediation:facebook:4.26.1.0' implementation 'com.facebook.android:audience-network-sdk:4.26.1' implementation 'org.jboss.netty:netty:3.2.10.Final' //Testing testImplementation 'junit:junit:4.12' testImplementation 'org.mockito:mockito-core:1.10.19' androidTestImplementation 'com.android.support:multidex:1.0.2' androidTestImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test.espresso:espresso-web:3.0.1' androidTestImplementation('com.android.support.test.espresso:espresso-core:2.2') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test:runner:0.3') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test:rules:0.3') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test.espresso:espresso-intents:2.2') { exclude group: 'com.android.support', module: 'support-annotations:22.2.1' } androidTestImplementation('com.android.support.test.espresso:espresso-contrib:2.2') { exclude group: 'com.android.support', module: 'app-compat' exclude group: 'com.android.support', module: 'support-v4' exclude group: 'com.android.support', module: 'support-annotations:22.2.1' exclude module: 'recyclerview-v7' } androidTestImplementation 'com.android.support.test.uiautomator:uiautomator-v18:2.1.3' androidTestImplementation "com.android.support:support-annotations:26.1.0" implementation group: 'com.google.code.gson', name: 'gson', version: '2.8.0' debugImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRT:0.9.5.3' releaseImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRTNoOp:0.9.5.3' testImplementation 'com.letv.sarrsdesktop:BlockCanaryExJRTNoOp:0.9.5.3' implementation 'me.mvdw.recyclerviewmergeadapter:recyclerviewmergeadapter:2.0.0' debugImplementation 'com.squareup.leakcanary:leakcanary-android:1.5.1' releaseImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' testImplementation 'com.squareup.leakcanary:leakcanary-android-no-op:1.5.1' implementation "com.squareup.retrofit2:retrofit:2.3.0" implementation 'com.squareup.okhttp3:logging-interceptor:3.8.0' implementation "com.squareup.retrofit2:converter-gson:2.3.0" implementation "com.squareup.retrofit2:adapter-rxjava2:2.3.0" implementation 'io.reactivex.rxjava2:rxjava:2.1.2' implementation 'io.reactivex.rxjava2:rxandroid:2.0.1' implementation 'com.gojuno.koptional:koptional-rxjava2-extensions:1.2.0' implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" implementation 'com.newrelic.agent.android:android-agent:5.14.0' implementation 'org.jsoup:jsoup:1.10.3' }
At least I can verify with this test that
kapt 'com.android.databinding:compiler:3.0.0'
is working for me. Maybe try it in a new project too and check if this works and then slowly apply your other libs one by one. Hope that gets you on track!
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With