2015-03-13 4 views
1

Я пытаюсь использовать библиотеку под названием Holdr (https://github.com/evant/holdr) для создания классов на основе моих файлов макета, чтобы легко ссылаться на представления в этих макетах в моих действиях.Неразрешенная ссылка для Holdr в Kotlin

я могу проверить, что классы генерируются отлично во время сборки

./gradlew assembleDebug 

класса для макета activity_main.xml генерирует Holdr_ActivityMain.java в

app/build/generated/source/holdr/ 

Котлин дает мне две ошибки во время задачи

:app:compileDebugKotlin 

Ошибки

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

Вот мой класс

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) 
    } 

} 

Вот мой 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() 
} 

Любая помощь будет признателен, спасибо.

+0

Связанные вопрос в багтрекере Котлин в: https://youtrack.jetbrains.com/issue/KT-17989 – BoD

ответ

1

Какую версию плагина Kotlin Gradle вы используете?

На данный момент, вы можете указать источники путь Holdr явно в качестве обходного пути:

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

Я используя classpath "org.jetbrains.kotlin: kotlin-gradle-plugin: $ kotlin_version" с ext.kotlin_version = '0.10.770', хотя версия плагина Android от Kotlin, установленная мной, установлена ​​0.10.195.25. Спасибо за обходной путь. –

+0

Писатель holdr прокомментировал мой вопрос в G +: «Я не пробовал заставить его работать с kotlin, но теоретически это должно быть. Я использую метод, предоставляемый плагином Android« registerJavaGeneratingTask », чтобы добавить сгенерированные источники в classpath для компиляции. Возможно, что плагин kotlin сбрасывает вещи таким образом, что каталог больше не подбирается. Это немного понятно, так как этот параметр вряд ли документирован (единственная ссылка, которую я могу найти, это в примечаниях к выпуску 0.7.0 https://plus.google.com/+AndroidDevelopers/posts/ersS6fMLxw1). " –

+0

О, извините, я действительно хотел спросить, какой плагин Android Gradle вы используете. Но если обходной путь работы, возможно, с этим нет никаких проблем. В любом случае, я исследую это, это похоже на ошибку в плагине Kotlin Gradle. – yanex

Смежные вопросы