Dagger2µÄʹÓÃ

·ç»­Çï / ÎÄ ·¢±íÓÚ2017-03-04 19:35 µÚ´ÎÔĶÁ dagger2

µ¼Èë

1.ÔÚ Project µÄ build.gradle ÎļþÌí¼Ó apt ¹¤¾ßµÄ gradle ²å¼þ

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.1.2'
        // Ìí¼Ó apt
        classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
}

2.ÔÚ Module µÄ build.gradle ÎļþÒýÈë apt ²å¼þºÍ dagger2

apply plugin: 'com.android.application'
// ÒýÈë apt ²å¼þ
apply plugin: 'com.neenbedankt.android-apt'
......
dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    compile 'com.android.support:appcompat-v7:24.2.1'
    // Ìí¼Ó dagger2
    compile 'com.google.dagger:dagger:2.6'
    apt 'com.google.dagger:dagger-compiler:2.6'
}

compile 'com.google.dagger:dagger:2.6'Êǵ¼ÈëÒÀÀµµÄ dagger Ïà¹ØµÄÀà

apt 'com.google.dagger:dagger-compiler:2.6'ÊÇʹÓà apt ¹¤¾ßÔÚ±àÒëµÄʱºò×Ô¶¯²úÉúÒÀÀµ×¢ÈëÏà¹Ø´úÂ룬apt »áÔÚ±àÒëµÄʱºòÔËÐÐ dagger-compiler ÀïÃæµÄ´úÂ룬À´×Ô¶¯²úÉúÒÀÀµ×¢ÈëÏà¹ØµÄ´úÂë

apply plugin: 'com.neenbedankt.android-apt'Ó¦Óà apt gradle ²å¼þ

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'Ìí¼Ó apt ²å¼þ

ʹÓÃ

Ëĸö×¢½[email protected] @module @provides @Component

@inject Ö¸¶¨ÐèҪעÈëµÄÄ¿±ê
    //Ö¸¶¨µÄ×¢ÈëÄ¿±ê ÔÚÖ´ÐÐ×¢Èëºó ¼´¿ÉÖ±½Ó»ñÈ¡¶ÔÏó
    @Inject 
    MainActivityPresenter presenter;
@module Ö¸¶¨´´½¨¶ÔÏóµÄÀà
@provides Ö¸¶¨´´½¨¶ÔÏóµÄ·½·¨
//Ò»°ã@module »áºÍ@providesÅäºÏʹÓà ×÷ΪÌṩ¶ÔÏóµÄ·½Ê½
@Module
public class MainActivityModule {
    @Provides
    public MainActivityPresenter MainActivityPresenterPrivider() {
        return new MainActivityPresenter();
    }
}
@Component
[email protected] ÀàËÆÓڵȺŵĹØÏµ °Ñ×¢ÈëµÄÄ¿±êºÍ ÌṩµÄµÄ¶ÔÏó¹ØÁªÆðÀ´Ìṩһ¸ö×¢Èë·½·¨ ½øÐйØÁª
@Component(modules = MainActivityModule.class)
public interface MainActivityComponent {
    void in(MainActivity activity);
}

rebuild Ö®ºó»á¸ù¾ÝÀàÃûÉú³ÉÒ»¸ö¶ÔÓ¦µÄ´úÂ루¾ÍÊÇapt°ïÉú³ÉµÄ£©

//Ãû×ÖÈ磺DaggerMainActivityComponent
 DaggerMainActivityComponent.builder().mainActivityModule(new MainActivityModule()).build().in(this);
//ÕâÑùÄãÔÚÉÏÃæÊÇÓÐ@inject×¢½âµÄÄ¿±ê ¾ÍÓÐÖµÁË ¾Í¿ÉÒÔʹÓÃÁË