├── app ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── colors.xml │ │ │ │ └── styles.xml │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-mdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-xxxhdpi │ │ │ │ ├── ic_launcher.png │ │ │ │ └── ic_launcher_round.png │ │ │ ├── mipmap-anydpi-v26 │ │ │ │ ├── ic_launcher.xml │ │ │ │ └── ic_launcher_round.xml │ │ │ ├── drawable-v24 │ │ │ │ └── ic_launcher_foreground.xml │ │ │ └── drawable │ │ │ │ └── ic_launcher_background.xml │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── kun │ │ │ └── componentjava │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── kun │ │ └── componentjava │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── baselib ├── .gitignore ├── src │ ├── main │ │ ├── AndroidManifest.xml │ │ ├── res │ │ │ ├── mipmap-hdpi │ │ │ │ ├── ic_back.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── ic_back_press.png │ │ │ │ └── default_avatar.png │ │ │ ├── mipmap-xhdpi │ │ │ │ ├── ic_back.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── default_avatar.png │ │ │ │ └── ic_back_press.png │ │ │ ├── mipmap-xxhdpi │ │ │ │ ├── ic_back.png │ │ │ │ ├── ic_launcher.png │ │ │ │ ├── default_avatar.png │ │ │ │ └── ic_back_press.png │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ ├── dimens.xml │ │ │ │ ├── styles.xml │ │ │ │ ├── colors.xml │ │ │ │ └── attrs.xml │ │ │ ├── drawable │ │ │ │ ├── divider_line.xml │ │ │ │ └── back.xml │ │ │ ├── layout │ │ │ │ ├── line.xml │ │ │ │ ├── view_input.xml │ │ │ │ └── view_titlebar.xml │ │ │ ├── anim │ │ │ │ ├── activity_start_in.xml │ │ │ │ ├── activity_start_out.xml │ │ │ │ ├── activity_start_out_scale.xml │ │ │ │ └── activity_start_in_scale.xml │ │ │ └── color │ │ │ │ └── black_bg.xml │ │ └── java │ │ │ └── com │ │ │ └── kun │ │ │ └── baselib │ │ │ ├── net │ │ │ ├── NetParams.java │ │ │ └── HttpSubscriber.java │ │ │ ├── config │ │ │ └── ModuleConfig.java │ │ │ ├── base │ │ │ ├── ApplicationImpl.java │ │ │ ├── BasePresenter.java │ │ │ ├── BaseActivityView.java │ │ │ ├── BaseDataCache.java │ │ │ ├── BaseResponse.java │ │ │ ├── BaseApplication.java │ │ │ └── BaseActivity.java │ │ │ ├── dagger │ │ │ ├── PerActivity.java │ │ │ ├── AppComponent.java │ │ │ ├── AppModule.java │ │ │ └── NetModule.java │ │ │ └── utils │ │ │ ├── RxHelper.java │ │ │ └── ToastUtil.java │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── kun │ │ │ └── baselib │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── kun │ │ └── baselib │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── modulea ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ └── layout │ │ │ │ └── activity_atest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── kun │ │ │ │ └── modulea │ │ │ │ ├── atest │ │ │ │ ├── ATestContract.java │ │ │ │ ├── ATestPresenter.java │ │ │ │ └── ATestActivity.java │ │ │ │ ├── ModuleA.java │ │ │ │ ├── net │ │ │ │ └── AmoduleApi.java │ │ │ │ └── dagger │ │ │ │ ├── AmoduleModule.java │ │ │ │ └── AmoduleComponent.java │ │ ├── AndroidManifest.xml │ │ └── module │ │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── kun │ │ │ └── modulea │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── kun │ │ └── modulea │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── moduleb ├── .gitignore ├── src │ ├── main │ │ ├── res │ │ │ ├── values │ │ │ │ ├── strings.xml │ │ │ │ └── styles.xml │ │ │ └── layout │ │ │ │ └── activity_btest.xml │ │ ├── java │ │ │ └── com │ │ │ │ └── kun │ │ │ │ └── moduleb │ │ │ │ ├── btest │ │ │ │ ├── BTestContract.java │ │ │ │ ├── BTestPresenter.java │ │ │ │ └── BTestActivity.java │ │ │ │ ├── ModuleB.java │ │ │ │ ├── net │ │ │ │ └── BmoduleApi.java │ │ │ │ └── dagger │ │ │ │ ├── BmoduleModule.java │ │ │ │ └── BmoduleComponent.java │ │ ├── AndroidManifest.xml │ │ └── module │ │ │ └── AndroidManifest.xml │ ├── test │ │ └── java │ │ │ └── com │ │ │ └── kun │ │ │ └── moduleb │ │ │ └── ExampleUnitTest.java │ └── androidTest │ │ └── java │ │ └── com │ │ └── kun │ │ └── moduleb │ │ └── ExampleInstrumentedTest.java ├── proguard-rules.pro └── build.gradle ├── settings.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── .gitignore ├── config.gradle ├── .idea ├── runConfigurations.xml ├── modules.xml ├── gradle.xml ├── inspectionProfiles │ └── Project_Default.xml └── misc.xml ├── gradle.properties ├── gradlew.bat └── gradlew /app/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /baselib/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /modulea/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /moduleb/.gitignore: -------------------------------------------------------------------------------- 1 | /build 2 | -------------------------------------------------------------------------------- /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app', ':modulea', ':moduleb', ':baselib' 2 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ComponentJava 3 | 4 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rongkun/ComponentJava/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /modulea/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | moduleA 3 | 4 | -------------------------------------------------------------------------------- /moduleb/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | ModuleB 3 | 4 | -------------------------------------------------------------------------------- /modulea/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/res/color/black_bg.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /baselib/src/main/res/drawable/back.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | -------------------------------------------------------------------------------- /modulea/src/main/java/com/kun/modulea/ModuleA.java: -------------------------------------------------------------------------------- 1 | package com.kun.modulea; 2 | 3 | import android.util.Log; 4 | 5 | import com.kun.baselib.base.ApplicationImpl; 6 | import com.kun.baselib.base.BaseApplication; 7 | 8 | /** 9 | * @author kun 10 | * @date 2017/12/11 11 | */ 12 | 13 | public class ModuleA implements ApplicationImpl { 14 | @Override 15 | public void onCreate(BaseApplication application) { 16 | Log.i("aaa","AModule"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /modulea/src/main/java/com/kun/modulea/net/AmoduleApi.java: -------------------------------------------------------------------------------- 1 | package com.kun.modulea.net; 2 | 3 | import com.kun.baselib.base.BaseResponse; 4 | 5 | import io.reactivex.Flowable; 6 | import retrofit2.http.GET; 7 | import retrofit2.http.Query; 8 | 9 | /** 10 | * Created by kun on 2017/8/14. 11 | */ 12 | 13 | public interface AmoduleApi { 14 | @GET("open/api/weather/json.shtml?") 15 | Flowable> getWeather(@Query("city") String city); 16 | } 17 | -------------------------------------------------------------------------------- /moduleb/src/main/java/com/kun/moduleb/ModuleB.java: -------------------------------------------------------------------------------- 1 | package com.kun.moduleb; 2 | 3 | import android.util.Log; 4 | 5 | import com.kun.baselib.base.ApplicationImpl; 6 | import com.kun.baselib.base.BaseApplication; 7 | 8 | /** 9 | * @author kun 10 | * @date 2017/12/11 11 | */ 12 | 13 | public class ModuleB implements ApplicationImpl { 14 | @Override 15 | public void onCreate(BaseApplication application) { 16 | Log.i("aaa","BModule"); 17 | } 18 | } 19 | -------------------------------------------------------------------------------- /moduleb/src/main/java/com/kun/moduleb/net/BmoduleApi.java: -------------------------------------------------------------------------------- 1 | package com.kun.moduleb.net; 2 | 3 | import com.kun.baselib.base.BaseResponse; 4 | 5 | import io.reactivex.Flowable; 6 | import retrofit2.http.GET; 7 | import retrofit2.http.Query; 8 | 9 | /** 10 | * Created by kun on 2017/8/14. 11 | */ 12 | 13 | public interface BmoduleApi { 14 | @GET("open/api/weather/json.shtml?") 15 | Flowable> getWeather(@Query("city") String city); 16 | } 17 | -------------------------------------------------------------------------------- /modulea/src/main/java/com/kun/modulea/dagger/AmoduleModule.java: -------------------------------------------------------------------------------- 1 | package com.kun.modulea.dagger; 2 | 3 | import com.kun.baselib.dagger.PerActivity; 4 | import com.kun.modulea.net.AmoduleApi; 5 | 6 | import dagger.Module; 7 | import dagger.Provides; 8 | import retrofit2.Retrofit; 9 | 10 | @Module 11 | public class AmoduleModule { 12 | @PerActivity 13 | @Provides 14 | AmoduleApi providesNetApi(Retrofit retrofit) { 15 | return retrofit.create(AmoduleApi.class); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /moduleb/src/main/java/com/kun/moduleb/dagger/BmoduleModule.java: -------------------------------------------------------------------------------- 1 | package com.kun.moduleb.dagger; 2 | 3 | import com.kun.baselib.dagger.PerActivity; 4 | import com.kun.moduleb.net.BmoduleApi; 5 | 6 | import dagger.Module; 7 | import dagger.Provides; 8 | import retrofit2.Retrofit; 9 | 10 | @Module 11 | public class BmoduleModule { 12 | @PerActivity 13 | @Provides 14 | BmoduleApi providesNetApi(Retrofit retrofit) { 15 | return retrofit.create(BmoduleApi.class); 16 | } 17 | 18 | } 19 | -------------------------------------------------------------------------------- /baselib/src/test/java/com/kun/baselib/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.kun.baselib; 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 | } -------------------------------------------------------------------------------- /modulea/src/test/java/com/kun/modulea/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.kun.modulea; 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 | } -------------------------------------------------------------------------------- /moduleb/src/test/java/com/kun/moduleb/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.kun.moduleb; 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 | } -------------------------------------------------------------------------------- /config.gradle: -------------------------------------------------------------------------------- 1 | // Top-level build file where you can add configuration options common to all sub-projects/modules. 2 | ext{ 3 | 4 | android = [ 5 | compileSdkVersion: 26, 6 | buildToolsVersion: "27.0.1", 7 | minSdkVersion : 14, 8 | targetSdkVersion : 25 9 | ] 10 | dependencies = [ 11 | dagger : "2.11", 12 | arouter: "1.1.4", 13 | butterknife : "8.6.0" 14 | ] 15 | 16 | //Version 17 | supportLibrary = "27.0.2" 18 | } -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 3 | 4 | 12 | 13 | -------------------------------------------------------------------------------- /app/src/test/java/com/kun/componentjava/ExampleUnitTest.java: -------------------------------------------------------------------------------- 1 | package com.kun.componentjava; 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 | } -------------------------------------------------------------------------------- /modulea/src/main/java/com/kun/modulea/dagger/AmoduleComponent.java: -------------------------------------------------------------------------------- 1 | package com.kun.modulea.dagger; 2 | 3 | import com.kun.baselib.dagger.AppComponent; 4 | import com.kun.baselib.dagger.PerActivity; 5 | import com.kun.modulea.atest.ATestActivity; 6 | 7 | import dagger.Component; 8 | 9 | /** 10 | * @author kun 11 | * @date 2017/12/7 12 | */ 13 | 14 | @PerActivity 15 | @Component(dependencies = AppComponent.class,modules = {AmoduleModule.class}) 16 | public interface AmoduleComponent { 17 | void inject(ATestActivity aTestActivity); 18 | } 19 | -------------------------------------------------------------------------------- /moduleb/src/main/java/com/kun/moduleb/dagger/BmoduleComponent.java: -------------------------------------------------------------------------------- 1 | package com.kun.moduleb.dagger; 2 | 3 | import com.kun.baselib.dagger.AppComponent; 4 | import com.kun.baselib.dagger.PerActivity; 5 | import com.kun.moduleb.btest.BTestActivity; 6 | 7 | import dagger.Component; 8 | 9 | /** 10 | * @author kun 11 | * @date 2017/12/7 12 | */ 13 | 14 | @PerActivity 15 | @Component(dependencies = AppComponent.class,modules = {BmoduleModule.class}) 16 | public interface BmoduleComponent { 17 | void inject(BTestActivity bTestActivity); 18 | } 19 | -------------------------------------------------------------------------------- /baselib/src/main/res/anim/activity_start_in_scale.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 12 | 16 | -------------------------------------------------------------------------------- /moduleb/src/main/res/layout/activity_btest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 12 | 13 | -------------------------------------------------------------------------------- /modulea/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 5 | 6 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | -------------------------------------------------------------------------------- /.idea/runConfigurations.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/kun/baselib/dagger/AppComponent.java: -------------------------------------------------------------------------------- 1 | package com.kun.baselib.dagger; 2 | 3 | 4 | import com.kun.baselib.base.BaseApplication; 5 | import com.kun.baselib.base.BaseDataCache; 6 | 7 | import javax.inject.Singleton; 8 | 9 | import dagger.Component; 10 | import retrofit2.Retrofit; 11 | 12 | /** 13 | * Created by kun on 16/10/10 14 | */ 15 | 16 | @Singleton 17 | @Component(modules = {AppModule.class, NetModule.class}) 18 | public interface AppComponent { 19 | Retrofit provideRetrofit(); 20 | 21 | BaseApplication providesApplication(); 22 | 23 | BaseDataCache provideDataCache(); 24 | } 25 | -------------------------------------------------------------------------------- /baselib/src/main/java/com/kun/baselib/base/BaseDataCache.java: -------------------------------------------------------------------------------- 1 | package com.kun.baselib.base; 2 | 3 | /** 4 | * Created by kun on 2017/8/17. 5 | */ 6 | 7 | public class BaseDataCache { 8 | /** 9 | * 这里可以存储缓存信息,如用户session等 10 | */ 11 | private static BaseDataCache instance; 12 | 13 | public static BaseDataCache getInstance() { 14 | if (instance == null) { 15 | synchronized (BaseDataCache.class) { 16 | if (instance == null) { 17 | instance = new BaseDataCache(); 18 | } 19 | } 20 | } 21 | return instance; 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | -------------------------------------------------------------------------------- /baselib/src/main/res/layout/view_input.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | 13 | 14 | 19 | -------------------------------------------------------------------------------- /modulea/src/main/res/layout/activity_atest.xml: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 |