2016-05-30 176 views
4

我想運用這個Dagger 2 Vehicle Motor示例。匕首2:無法解析匕首組件的符號

我做的一切確切就像在教程中,除了我gradel.build:

compile 'com.google.dagger:dagger:2.4' 
apt 'com.google.dagger:dagger-compiler:2.4' 
compile 'javax.annotation:javax.annotation-api:1.2' 

但後來我得到一個

error: cannot find symbol variable Dagger_VehicleComponent

哪些錯誤呢?(同樣沒有 '_' 下劃線)

回答

2

另一個版本解決了這個問題:

compile 'com.google.dagger:dagger:2.2' 
apt 'com.google.dagger:dagger-compiler:2.2' 
provided 'javax.annotation:jsr250-api:1.0' 
0
  1. 變化Dagger_VehicleComponent與DaggerVehicleComponent
  2. 清理和重建項目
  3. 進口DaggerVehicleComponent類
0

花了我一段時間來弄清楚這一點。但我找到了原因(至少在我身邊) 我從零開始創建了一個項目,之後我試圖設置基本組件/工具,直到遇到此問題。

閱讀其他答案我發現DaggerApplicationComponent類是由編譯器自動生成的,然後我想,爲什麼IDE不能「找到」這個類? 答案是顯而易見的,...你明白了,是因爲該項目沒有編譯,如果場景與我的相同,這裏是解決這個問題的步驟。

1)打開終端進入你的項目路徑(或簡單地在Android Studio中打開終端)

2)清潔工程 ./gradlew乾淨

3)建設項目 ./ gradlew build

注意:如果你已經注意到這個項目沒有編譯...賓果!這可能是真正的問題。然後按照下面的步驟:

4)打開gradle這個並添加buildToolsVersion '23 .0.1' 也是非常重要的,必須啓用multiDexEnabled真正 這是我的應用程序模塊中gradle這個看起來像

android { 
    buildToolsVersion '23.0.1' // IMPORTANT 
    compileSdkVersion 26 
    defaultConfig { 
     applicationId "com.fixing.dagger" 
     minSdkVersion 23 
     targetSdkVersion 26 
     versionCode 1 
     versionName "1.0" 
     multiDexEnabled true // ALSO IMPORTANT 
    } 

    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
} 

之後,您將能夠導入DaggerApplicationComponent。

希望這可以爲別人節省時間!