2015-03-13 3 views
1

J'essaie d'utiliser une bibliothèque appelée Holdr (https://github.com/evant/holdr) pour générer des classes basées sur mes fichiers de mise en page afin de référencer facilement des vues dans ces mises en page dans mes activités.Référence non résolue pour Holdr dans Kotlin

je peux vérifier que les classes sont générées bien au moment de la construction

./gradlew assembleDebug 

classe pour la mise en page activity_main.xml génère Holdr_ActivityMain.java dans

app/build/generated/source/holdr/ 

Kotlin me donne deux erreurs au cours de la tâche

:app:compileDebugKotlin 

Erreurs

e: (8, 44): Unresolved reference: holdr 
e: (12, 24): Unresolved reference: Holdr_ActivityMain 

Voici ma classe

import com.myapp.holdr.Holdr_ActivityMain 

public class MainActivity : Activity() { 

    private var holdr: Holdr_ActivityMain? = null 

    override fun onCreate(savedInstanceState: Bundle?) { 
     super.onCreate(savedInstanceState) 
     setContentView(R.layout.activity_main) 
    } 

} 

Voici mon build.gradle

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.holdr' 
apply plugin: 'kotlin-android' 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.0" 

    defaultConfig { 
     applicationId "com.myapp" 
     minSdkVersion 22 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    sourceSets { 
     main.java.srcDirs += 'src/main/java' 
     main.java.srcDirs += 'src/main/kotlin' 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 

buildscript { 

    ext.kotlin_version = '0.10.770' 

    repositories { 
     mavenCentral() 
    } 

    dependencies { 
     classpath 'me.tatarka.holdr:gradle-plugin:1.4.1' 
     classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" 
    } 
} 

repositories { 
    mavenCentral() 
} 

Toute aide serait appréciée, je vous remercie.

+0

question connexe dans le bugtracker de Kotlin: https://youtrack.jetbrains.com/issue/KT-17989 – BoD

Répondre

1

Quelle version du plugin Kotlin Gradle utilisez-vous?

Pour l'instant, vous pouvez spécifier le chemin des sources Holdr explicitement comme une solution de contournement:

sourceSets { 
    ... 
    debug.java.srcDirs += 'build/generated/source/holdr/debug' 
    release.java.srcDirs += 'build/generated/source/holdr/release' 
} 
+0

Je suis en utilisant classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version" avec ext.kotlin_version = '0.10.770', bien que la version du plugin Kotlin Android Studio que j'ai installée est 0.10.195.25. Merci pour la solution de contournement. –

+0

L'auteur de holdr a commenté ma question en G + avec: "Je n'ai pas essayé de le faire fonctionner avec kotlin, mais en théorie il le faut .J'utilise une méthode fournie par le plugin android" registerJavaGeneratingTask "afin d'ajouter Il est possible que le plugin kotlin soit en train de déblayer les choses de telle sorte que le répertoire ne soit plus détecté, c'est un peu compréhensible car cette option est rarement documentée (la seule référence que je peux trouver est dans les notes de version de la version 0.7.0 https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1). " –

+0

Oh, désolé, je voulais vraiment demander quel plugin Android Gradle utilisez-vous? Mais si la solution de contournement fonctionne, il n'y a peut-être aucun problème. Quoi qu'il en soit, je vais étudier cela, cela ressemble à un bug dans le plugin Kotlin Gradle. – yanex