2015-07-28 16 views
12

मैं एंड्रॉइड प्रोजेक्ट में कोटलिन के साथ डैगर 2 का परीक्षण कर रहा हूं। मैं Android Clean Architecture रेपो से प्रेरित था। मेरे पास मेरे ग्रेडल बिल्ड में दो मॉड्यूल हैं, एक "ऐप" है और एक "मॉड्यूल" है। मॉड्यूल में एक क्लास कॉल मॉडल होता है। मेरे ऐप ग्रेडल मॉड्यूल में मैंने मॉडल प्रदाता के साथ "डैगर मॉड्यूल" नामक एक डगर मॉड्यूल बनाया।अनसुलझा संदर्भ डैगर 2 + कोटलिन + एंड्रॉइड ग्रेडल

DaggerModule.kt: (3, 57): Unresolved reference: Model 
DaggerModule.kt: (9, 34): Unresolved reference: Model 
DaggerModule.kt: (9, 42): Unresolved reference: Model 

जब मैं "एप्लिकेशन" मॉड्यूल सब कुछ के अंदर करने के लिए "मॉड्यूल" मॉड्यूल से मॉडल वर्ग ले जाने का प्रयास संकलित w/ओ त्रुटि: जब मैं परियोजना बनाने की कोशिश, मैं संकलन त्रुटियों मिलता है। यह पता लगाने की कोशिश कर रहा हूं कि क्या मैं कुछ बेवकूफ कर रहा हूं, या अगर मुझे कहीं भी एक बग फाइल करना चाहिए।

संदर्भ यहाँ समस्याग्रस्त फ़ाइलों के स्निपेट के लिए:

---- 
app/build.gradle 

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:1.2.3' 
     classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.12.1218' 
    } 
} 
apply plugin: 'com.android.application' 
apply plugin: 'kotlin-android' 

repositories { 
    jcenter() 
    mavenCentral() 
} 

android { 
    compileSdkVersion 22 
    buildToolsVersion "22.0.1" 

    defaultConfig { 
     applicationId "com.github.app.kotlin_unresolved_reference.app" 
     minSdkVersion 15 
     targetSdkVersion 22 
     versionCode 1 
     versionName "1.0" 
    } 

    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_6 
     targetCompatibility JavaVersion.VERSION_1_6 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 

    compile project(':module') 
    compile 'com.android.support:appcompat-v7:22.2.1' 

    kapt "com.google.dagger:dagger-compiler:2.0.1" 
    compile "com.google.dagger:dagger:2.0.1" 
    compile "javax.annotation:javax.annotation-api:1.2" 
    compile "org.jetbrains.kotlin:kotlin-stdlib:0.12.1218" 
} 


--- 
module/build.gradle 

apply plugin: 'java' 

//noinspection GroovyUnusedAssignment 
sourceCompatibility = 1.7 
//noinspection GroovyUnusedAssignment 
targetCompatibility = 1.7 

configurations { 
    provided 
} 

sourceSets { 
    main { 
     compileClasspath += configurations.provided 
    } 
} 

dependencies { 
    provided "com.google.dagger:dagger-compiler:2.0.1" 
    compile "com.google.dagger:dagger:2.0.1" 
    compile "javax.annotation:javax.annotation-api:1.2" 
    compile "org.jetbrains.kotlin:kotlin-stdlib:0.12.1218" 
} 

--- 
DaggerModule.kt 

Module 
public class DaggerModule { 
    Provides fun provideModel(): Model = Model() 
} 

---- 
Model.kt 

public class Model { } 

अस्वीकरण: यह मेरा पहला परीक्षण ड्राइविंग डैगर 2 और एक Gradle newb हूँ। नमूना प्रोजेक्ट वह न्यूनतम कोड है जिसे मैं समस्या को प्रदर्शित करने के लिए पा सकता हूं। मुझे यह करने की उम्मीद नहीं है: डी।

+0

क्या आपका मॉड्यूल ** सेटिंग्स.gradle ** में शामिल है? – Lamorak

+0

हाँ मॉड्यूल को धीरे-धीरे सेटिंग्स में शामिल किया गया है। – donaldlittlpie

उत्तर

10

आपका मॉड्यूल/build.gradle कोटलिन के बजाए जावा पर सेट है। मैंने इसे निम्नलिखित में संशोधित किया है और यह ठीक संकलित करता है।

buildscript { 
    repositories { 
     jcenter() 
     mavenCentral() 
    } 
    dependencies { 
     classpath 'org.jetbrains.kotlin:kotlin-gradle-plugin:0.12.1218' 
    } 
} 

apply plugin: 'kotlin' 

dependencies { 
    kapt "com.google.dagger:dagger-compiler:2.0.1" 
    compile "com.google.dagger:dagger:2.0.1" 
    compile "javax.annotation:javax.annotation-api:1.2" 
    compile "org.jetbrains.kotlin:kotlin-stdlib:0.12.1218" 
} 
+0

मेरे लिए मुझे प्लगइन लागू करना पड़ा: 'जावा-लाइब्रेरी और प्लगइन लागू करें:' कोटलिन ' – murt

संबंधित मुद्दे