Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Can't build project with Android Studio 3.0 + DataBinding + Kotlin

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' } 
like image 655
Dennis Zinkovski Avatar asked Nov 17 '17 16:11

Dennis Zinkovski


People also ask

How do I enable kotlin DataBinding?

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 .

Is Android DataBinding deprecated?

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.


1 Answers

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!

like image 98
Peppermint Paddy Avatar answered Oct 15 '22 13:10

Peppermint Paddy