2017-01-29 47 views
3

匕首2不產生每次我嘗試建立我的項目出現以下錯誤時組件

ApplicationModule

@Module 
public class ApplicationModule { 

    private static final String APP_ID = "id"; 
    private static final String APP_SECRET = "secret"; 

    private final Application mApplication; 

    public ApplicationModule(Application application) { 
     mApplication = application; 
    } 

    @Provides 
    Application provideApplication() { 
     return mApplication; 
    } 

    @Provides 
    @Singleton 
    Client provideClient(Application application) { 
     return new Client.Builder(APP_ID, APP_SECRET, application).build(); 
    } 
} 

ApplicationComponent

@Singleton 
@Component(modules = ApplicationModule.class) 
public interface ApplicationComponent { 

    void inject(MainApplication application); 

    Application getApplication(); 

    Client getClient(); 

} 

MainApplication

public class MainApplication extends android.app.Application { 

    private ApplicationComponent component; 

    @Inject 
    Client client; 

    @Override 
    public void onCreate() { 
     super.onCreate(); 

     ... 

     component = DaggerApplicationComponent.builder() 
       .applicationModule(new ApplicationModule(this)) 
       .build(); 
     component.inject(this); 
    } 

    public ApplicationComponent getComponent() { 
     return component; 
    } 

} 

而且我gradle.build(模塊:APP)

buildscript { 
    repositories { 
     jcenter() 
     maven { 
      url 'http://dl.bintray.com/amulyakhare/maven' 
     } 
    } 
    dependencies { 
     classpath 'me.tatarka:gradle-retrolambda:3.2.5' 
    } 
} 

apply plugin: 'com.android.application' 
apply plugin: 'me.tatarka.retrolambda' 

android { 
    compileSdkVersion 25 
    buildToolsVersion "25.0.2" 

    defaultConfig { 
     applicationId "br.mobi.santor.agora" 
     minSdkVersion 15 
     targetSdkVersion 25 
     versionCode 1 
     versionName "1.0" 
    } 
    buildTypes { 
     release { 
      minifyEnabled false 
      proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
     } 
    } 
    compileOptions { 
     sourceCompatibility JavaVersion.VERSION_1_8 
     targetCompatibility JavaVersion.VERSION_1_8 
    } 
} 

repositories { 
    flatDir { 
     dirs 'libs' 
    } 
} 

final SUPPORT_LIBRARY_VERSION = '25.1.0' 
final DAGGER_VERSION = '2.8' 

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile(name: 'kinvey-android-2.10.6', ext: 'aar') 

    // AppCompat dependencies 
    compile "com.android.support:appcompat-v7:$SUPPORT_LIBRARY_VERSION" 
    compile "com.android.support:cardview-v7:$SUPPORT_LIBRARY_VERSION" 
    compile "com.android.support:recyclerview-v7:$SUPPORT_LIBRARY_VERSION" 
    compile "com.android.support:design:$SUPPORT_LIBRARY_VERSION" 

    // Dagger dependencies 
    compile "com.google.dagger:dagger:$DAGGER_VERSION" 
    annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION" 

    // Network dependencies 
    compile 'com.squareup.picasso:picasso:2.5.2' 

    // Utils dependencies 
    compile 'uk.co.chrisjenx:calligraphy:2.2.0' 
    compile 'joda-time:joda-time:2.9.7' 

    testCompile 'junit:junit:4.12' 
} 
+1

根據你的應用中需要的dagger 2文檔:gradle:apt'com.google.dagger:dagger-compiler:2.8'', 'compile'c​​om.google.dagger:dagger:2.8''和'provided'javax.annotation:jsr250-api:1.0'' –

+0

當我使用'apt'com.google.dagger:dagger-compiler:2.8''時,出現以下錯誤:錯誤:(60,0)Could not在類型爲org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.'的對象上查找參數[com.google.dagger:dagger-compiler:2.8]的方法apt()。 –

+0

您的先決條件錯誤近似於此線程中的錯誤:http://stackoverflow.com/q/40897009/1426891。那裏的建議有幫助嗎? –

回答

3

NoSuchMethodError幾乎肯定意味着你有番石榴對舊版本類路徑比用於編譯。確保你有最新版本的番石榴(幾乎總是安全的使用最新的these compatibility guarnatees),它應該工作。

+0

一切正常!在我的情況下,我剛剛刪除了guava.jar,因爲匕首自動添加了依賴關係。謝謝 –

相關問題