├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── dimens.xml │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_launcher_round.png │ │ │ │ └── ic_launcher_foreground.png │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── menu │ │ │ │ └── menu_main.xml │ │ │ ├── layout │ │ │ │ ├── fragment_main.xml │ │ │ │ ├── content_main.xml │ │ │ │ └── activity_main.xml │ │ │ └── drawable │ │ │ │ └── ic_launcher_background.xml │ │ ├── java │ │ │ └── me │ │ │ │ └── xiaobailong24 │ │ │ │ └── daggerandroid │ │ │ │ ├── di │ │ │ │ ├── module │ │ │ │ │ ├── AppModule.java │ │ │ │ │ ├── KobeModule.java │ │ │ │ │ ├── JordonModule.java │ │ │ │ │ ├── MainFragmentModule.java │ │ │ │ │ └── MainActivityModule.java │ │ │ │ └── component │ │ │ │ │ ├── MainFragmentSubcomponent.java │ │ │ │ │ ├── MainActivitySubcomponent.java │ │ │ │ │ └── AppComponent.java │ │ │ │ ├── entry │ │ │ │ └── Person.java │ │ │ │ ├── MainFragment.java │ │ │ │ ├── MainActivity.java │ │ │ │ └── MainApp.java │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── me │ │ │ └── xiaobailong24 │ │ │ └── daggerandroid │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── me │ │ └── xiaobailong24 │ │ └── daggerandroid │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── library ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ └── values │ │ │ │ └── strings.xml │ │ ├── AndroidManifest.xml │ │ └── java │ │ │ └── me │ │ │ └── xiaobailong24 │ │ │ └── daggerlibrary │ │ │ ├── di │ │ │ ├── scope │ │ │ │ ├── AppScope.java │ │ │ │ ├── ActivityScope.java │ │ │ │ └── FragmentScope.java │ │ │ ├── module │ │ │ │ └── DaggerModule.java │ │ │ └── component │ │ │ │ └── DaggerComponent.java │ │ │ ├── DaggerDelegate.java │ │ │ ├── DaggerFragmentLifecycleCallbacks.java │ │ │ └── DaggerActivityLifecycleCallbacks.java │ ├── test │ │ └── java │ │ │ └── me │ │ │ └── xiaobailong24 │ │ │ └── daggerlibrary │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── me │ │ └── xiaobailong24 │ │ └── daggerlibrary │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── gradle.properties ├── gradlew.bat ├── gradlew └── README.md /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /library/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':library' 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/dimens.xml: -------------------------------------------------------------------------------- 1 | 2 | 16dp 3 | 4 | -------------------------------------------------------------------------------- /library/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | DaggerLibrary 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /library/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/xiaobailong24/DaggerAndroid/HEAD/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | DaggerAndroid 3 | Settings 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Wed Sep 06 20:24:13 CST 2017 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | -------------------------------------------------------------------------------- /library/src/main/java/me/xiaobailong24/daggerlibrary/di/scope/AppScope.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary.di.scope; 2 | 3 | import java.lang.annotation.Retention; 4 | 5 | import javax.inject.Scope; 6 | 7 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 8 | 9 | /** 10 | * Created by xiaobailong24 on 2017/7/24. 11 | * Dagger 用于限定 AppModule 12 | */ 13 | 14 | @Scope 15 | @Retention(RUNTIME) 16 | public @interface AppScope { 17 | } -------------------------------------------------------------------------------- /library/src/main/java/me/xiaobailong24/daggerlibrary/di/scope/ActivityScope.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary.di.scope; 2 | 3 | import java.lang.annotation.Retention; 4 | 5 | import javax.inject.Scope; 6 | 7 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 8 | 9 | /** 10 | * Created by xiaobailong24 on 2017/9/6. 11 | * Dagger ActivityScope 12 | */ 13 | @Scope 14 | @Retention(RUNTIME) 15 | public @interface ActivityScope { 16 | } 17 | -------------------------------------------------------------------------------- /library/src/main/java/me/xiaobailong24/daggerlibrary/di/scope/FragmentScope.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary.di.scope; 2 | 3 | import java.lang.annotation.Retention; 4 | 5 | import javax.inject.Scope; 6 | 7 | import static java.lang.annotation.RetentionPolicy.RUNTIME; 8 | 9 | /** 10 | * Created by xiaobailong24 on 2017/9/6. 11 | * Dagger FragmentScope 12 | */ 13 | @Scope 14 | @Retention(RUNTIME) 15 | public @interface FragmentScope { 16 | } 17 | -------------------------------------------------------------------------------- /app/src/main/java/me/xiaobailong24/daggerandroid/di/module/AppModule.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerandroid.di.module; 2 | 3 | import android.app.Application; 4 | 5 | import dagger.Module; 6 | 7 | /** 8 | * Created by xiaobailong24 on 2017/9/6. 9 | * Dagger AppModule 10 | */ 11 | @Module 12 | public class AppModule { 13 | private Application mApplication; 14 | 15 | public AppModule(Application application) { 16 | mApplication = application; 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /app/src/main/res/menu/menu_main.xml: -------------------------------------------------------------------------------- 1 | 5 | 10 | 11 | -------------------------------------------------------------------------------- /app/src/test/java/me/xiaobailong24/daggerandroid/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerandroid; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /library/src/test/java/me/xiaobailong24/daggerlibrary/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary; 2 | 3 | import org.junit.Test; 4 | 5 | import static org.junit.Assert.*; 6 | 7 | /** 8 | * Example local unit test, which will execute on the development machine (host). 9 | * 10 | * @see Testing documentation 11 | */ 12 | public class ExampleUnitTest { 13 | @Test 14 | public void addition_isCorrect() throws Exception { 15 | assertEquals(4, 2 + 2); 16 | } 17 | } -------------------------------------------------------------------------------- /app/src/main/java/me/xiaobailong24/daggerandroid/di/module/KobeModule.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerandroid.di.module; 2 | 3 | import dagger.Module; 4 | import dagger.Provides; 5 | import me.xiaobailong24.daggerandroid.entry.Person; 6 | import me.xiaobailong24.daggerlibrary.di.scope.ActivityScope; 7 | 8 | /** 9 | * Created by xiaobailong24 on 2017/9/6. 10 | * Dagger Module 11 | */ 12 | @Module 13 | public class KobeModule { 14 | @ActivityScope 15 | @Provides 16 | public Person provideKobe() { 17 | return new Person("Kobe", 39); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /app/src/main/java/me/xiaobailong24/daggerandroid/di/module/JordonModule.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerandroid.di.module; 2 | 3 | import dagger.Module; 4 | import dagger.Provides; 5 | import me.xiaobailong24.daggerandroid.entry.Person; 6 | import me.xiaobailong24.daggerlibrary.di.scope.FragmentScope; 7 | 8 | /** 9 | * Created by xiaobailong24 on 2017/9/6. 10 | * Dagger Module 11 | */ 12 | @Module 13 | public class JordonModule { 14 | @FragmentScope 15 | @Provides 16 | public Person provideJordon() { 17 | return new Person("Jordon", 48); 18 | } 19 | 20 | } 21 | -------------------------------------------------------------------------------- /app/src/main/java/me/xiaobailong24/daggerandroid/entry/Person.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerandroid.entry; 2 | 3 | import javax.inject.Inject; 4 | 5 | /** 6 | * Created by xiaobailong24 on 2017/9/6. 7 | * Dagger Person 8 | */ 9 | 10 | public class Person { 11 | private String name; 12 | private int age; 13 | 14 | @Inject 15 | public Person(String name, int age) { 16 | this.name = name; 17 | this.age = age; 18 | } 19 | 20 | public String getName() { 21 | return name; 22 | } 23 | 24 | public int getAge() { 25 | return age; 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Built application files 2 | *.apk 3 | *.ap_ 4 | 5 | # Files for the ART/Dalvik VM 6 | *.dex 7 | 8 | # Java class files 9 | *.class 10 | 11 | # Generated files 12 | bin/ 13 | gen/ 14 | out/ 15 | 16 | # Gradle files 17 | .gradle/ 18 | build/ 19 | 20 | # Local configuration file (sdk path, etc) 21 | local.properties 22 | 23 | # Proguard folder generated by Eclipse 24 | proguard/ 25 | 26 | # Log Files 27 | *.log 28 | 29 | # Android Studio Navigation editor temp files 30 | .navigation/ 31 | 32 | # Android Studio captures folder 33 | captures/ 34 | 35 | # Intellij 36 | *.iml 37 | .idea 38 | 39 | # Keystore files 40 | *.jks 41 | 42 | # MacOS 43 | .DS_Store 44 | -------------------------------------------------------------------------------- /library/src/main/java/me/xiaobailong24/daggerlibrary/di/module/DaggerModule.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary.di.module; 2 | 3 | import android.app.Application; 4 | 5 | import javax.inject.Singleton; 6 | 7 | import dagger.Module; 8 | import dagger.Provides; 9 | 10 | /** 11 | * Created by xiaobailong24 on 2017/9/16. 12 | * Dagger Library Module 13 | */ 14 | @Module 15 | public class DaggerModule { 16 | private final Application mApplication; 17 | 18 | public DaggerModule(Application application) { 19 | mApplication = application; 20 | } 21 | 22 | @Singleton 23 | @Provides 24 | public Application provideApplication() { 25 | return this.mApplication; 26 | } 27 | 28 | } 29 | -------------------------------------------------------------------------------- /library/src/main/java/me/xiaobailong24/daggerlibrary/di/component/DaggerComponent.java: -------------------------------------------------------------------------------- 1 | package me.xiaobailong24.daggerlibrary.di.component; 2 | 3 | import android.app.Application; 4 | 5 | import javax.inject.Singleton; 6 | 7 | import dagger.Component; 8 | import dagger.android.AndroidInjectionModule; 9 | import me.xiaobailong24.daggerlibrary.DaggerDelegate; 10 | import me.xiaobailong24.daggerlibrary.di.module.DaggerModule; 11 | 12 | /** 13 | * Created by xiaobailong24 on 2017/9/16. 14 | * Dagger Library Component 15 | */ 16 | @Singleton 17 | @Component(modules = {AndroidInjectionModule.class, 18 | DaggerModule.class}) 19 | public interface DaggerComponent { 20 | Application application(); 21 | 22 | void inject(DaggerDelegate daggerDelegate); 23 | } 24 | -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 10 | 11 | 15 | 16 |