Je ne parviens pas à compiler mon projet Android Kotlin.
Je n'ai aucune idée de ce que c'est ...
Journal de bord:
erreur: les supertypes des classes suivantes ne peuvent pas être résolus. Assurez-vous que vous avez les dépendances requises dans le chemin d'accès aux classes:
build.gradle (app)
buildscript {
ext.Android_plugin_version = "2.3.3"
ext.kotlin_version = '1.1.2-5'
repositories {
maven { url 'https://maven.google.com' }
maven { url "https://jitpack.io" }
mavenCentral()
}
dependencies {
classpath "com.Android.tools.build:gradle:$Android_plugin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
}
allprojects {
repositories {
maven { url 'https://maven.google.com' }
maven { url "https://jitpack.io" }
mavenCentral()
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
apply plugin: 'kotlin-kapt'
def compat_version = '26.+'
def play_services_version = '11.0.1'
def firebase_version = '9.6.1'
Android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.site.app"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
javaCompileOptions {
annotationProcessorOptions {
arguments = ["library" : "true"]
}
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
dataBinding {
enabled true
}
sourceSets {
main.Java.srcDirs += 'src/main/kotlin'
}
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_7
targetCompatibility JavaVersion.VERSION_1_7
}
}
kapt {
generateStubs = true
correctErrorTypes = true
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
// Android
compile 'com.Android.support:multidex:1.0.1'
compile "com.Android.support:appcompat-v7:${compat_version}"
compile "com.Android.support:design:${compat_version}"
compile "com.Android.support:cardview-v7:${compat_version}"
compile "com.Android.support:recyclerview-v7:${compat_version}"
compile "com.Android.support:gridlayout-v7:${compat_version}"
compile "com.google.Android.gms:play-services:${play_services_version}"
compile "com.google.Android.gms:play-services-ads:${play_services_version}"
compile "com.google.Android.gms:play-services-maps:${play_services_version}"
compile 'com.Android.support.constraint:constraint-layout:1.0.2'
compile 'com.google.maps.Android:android-maps-utils:0.4+'
kapt "com.Android.databinding:compiler:$Android_plugin_version"
// kotlin
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
compile "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test:$kotlin_version"
testCompile "org.jetbrains.kotlin:kotlin-test-junit:$kotlin_version"
}
Dans mon cas, j'avais un module de bibliothèque avec une classe d'application abstraite implémentant la variable HasActivityInjector
de Dagger et un module d'application dépendant de la bibliothèque et de sa propre classe d'application (non abstraite) étendant la classe d'application de base.
Mes dépendances Gradle étaient implementation
s, et donc inaccessibles à la classe d'application du module d'application (même s'il n'y avait aucune importation, sinon le problème serait immédiatement évident car vous obtiendriez une erreur 'impossible à résoudre'. Le correctif consistait à remplacer dagger implementation
dépendances avec api
, ce qui les rend également disponibles pour les modules dépendants.
Je l'ai corrigé en changeant l'ordre d'appels des plugins!
build.gradle
buildscript {
ext.Android_plugin_version = '2.3.3'
ext.kotlin_version = '1.1.3-2'
repositories {
jcenter()
mavenCentral()
maven { url "https://maven.google.com" }
maven { url 'https://maven.fabric.io/public' }
maven { url "https://jitpack.io" }
}
dependencies {
classpath "com.Android.tools.build:gradle:$Android_plugin_version"
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
classpath "org.jetbrains.kotlin:kotlin-Android-extensions:$kotlin_version"
classpath 'io.fabric.tools:gradle:1.+'
}
}
allprojects {
repositories {
jcenter()
mavenCentral()
maven { url "https://maven.google.com" }
maven { url 'https://maven.fabric.io/public' }
maven { url "https://jitpack.io" }
}
}
task clean(type: Delete) {
delete rootProject.buildDir
}
app/build.gradle
apply plugin: 'com.Android.application'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-Android'
apply plugin: 'kotlin-Android-extensions'
apply plugin: 'io.fabric'
Android {
compileSdkVersion 26
buildToolsVersion "26.0.0"
defaultConfig {
applicationId "com.sample.app"
minSdkVersion 19
targetSdkVersion 26
versionCode 1
versionName "1.0.0"
testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
multiDexEnabled true
}
buildTypes {
debug {
ext.alwaysUpdateBuildId = false
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-Android.txt'), 'proguard-rules.pro'
}
}
dexOptions {
javaMaxHeapSize "4g"
}
dataBinding {
enabled true
}
sourceSets {
main.Java.srcDirs += 'src/main/kotlin'
}
lintOptions {
abortOnError false
disable 'InvalidPackage'
}
}
kapt {
generateStubs = true
}
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.Android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.Android.support', module: 'support-annotations'
})
testCompile 'junit:junit:4.12'
// kotlin
kapt "com.Android.databinding:compiler:$Android_plugin_version"
compile "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
// Android
compile 'com.Android.support:multidex:1.0.1'
compile "com.Android.support:appcompat-v7:${compat_version}"
compile "com.Android.support:design:${compat_version}"
compile "com.Android.support:cardview-v7:${compat_version}"
compile "com.Android.support:recyclerview-v7:${compat_version}"
compile "com.Android.support:gridlayout-v7:${compat_version}"
compile "com.Android.support:support-vector-drawable:${compat_version}"
compile 'com.Android.support.constraint:constraint-layout:1.0.2'
compile "com.google.Android.gms:play-services-ads:${play_services_version}"
compile "com.google.Android.gms:play-services-maps:${play_services_version}"
compile "com.google.Android.gms:play-services-gcm:${play_services_version}"
compile 'com.google.maps.Android:android-maps-utils:0.4+'
// fabric
compile('com.crashlytics.sdk.Android:crashlytics:2.6.8@aar') {
transitive = true;
}
// logger
compile 'com.orhanobut:logger:2.1.1'
// dexter
compile 'com.karumi:dexter:4.1.0'
// firebase
compile "com.google.firebase:firebase-messaging:${firebase_version}"
// persistence
compile "Android.Arch.persistence.room:runtime:1.0.0-alpha3"
annotationProcessor "Android.Arch.persistence.room:compiler:1.0.0-alpha3"
// facebook
compile 'com.facebook.Android:facebook-Android-sdk:4.+'
// retrofit
compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
// gson
compile 'com.google.code.gson:gson:2.8.1'
// jobs
compile 'com.evernote:Android-job:1.1.11'
// chart
compile 'com.github.PhilJay:MPAndroidChart:v3.0.1'
// fresco
compile 'com.facebook.fresco:fresco:1.3.0'
// indicator
compile 'com.github.JakeWharton:ViewPagerIndicator:2.4.1'
}
Mettez à jour votre version de Google Play Gradle à la dernière
Dans mon cas, j'ai dû ajouter la dépendance requise sur mon module principal et compiler la dernière version avec:
Android {
configurations.all {
resolutionStrategy.force "com.squareup.picasso:picasso:${picassoVersion}"
}
}