Skip to content

依赖和配置

xiaojinzi123 edited this page Nov 12, 2019 · 23 revisions

视频讲解

特殊说明

  • app 模块在项目中既是一个壳工程也是一个业务模块.这点务必注意
  • App 会包含其他所有的业务模块
  • 而一般工程中会有一个 "BaseModule" 的基础业务模块,每一个业务模块都会依赖 "BaseModule"

依赖

下面所有的 <version> 请替换成最新的版本号,不包含v
比如上面最新的为 v1.0,那么版本号就是 1.0

(工程)Project 级别的 build.gradle 中添加 maven 地址:

maven { url 'https://jitpack.io' }

在基础业务模块 BaseModule 或者每一个业务模块中添加依赖:

api 'com.github.xiaojinzi123.Component:component-impl:<version>'

或者 RxJava2的实现

api 'com.github.xiaojinzi123.Component:component-impl-rx:<version>'

rx版本可以轻易的让你的路由和服务发现功能结合RxJava,引用 rx 库请自行在项目依赖 RxJava2

配置每一个业务组件(包括app)

配置每一个业务组件的 Host 名称

下面配置的 HOST 的值可以是随便的一个名字,你只要保证每一个 Module 的名称是唯一的就可以了.
不一定和 Module 名称一样

defaultConfig {
        ......
        javaCompileOptions {
            annotationProcessorOptions {
                // 配置业务模块的模块名称
                arguments = ["HOST": "这里替换成你起的模块名"]
            }
        }
    }

配置每一个模块的 模块Application(生命周期)

点我配置,您也可以跳过本步骤

每个业务组件中添加注解驱动器

annotationProcessor "com.github.xiaojinzi123.Component:component-compiler:<version>"
// 如果是 kotlin 模块请使用如下的代码
// kapt "com.github.xiaojinzi123.Component:component-compiler:<version>"

壳工程 AppApplication 配置如下

// 初始化
Component.init(this, BuildConfig.DEBUG);
// 如果你依赖了 rx 版本,需要配置这句代码,否则删除这句
RxErrorIgnoreUtil.ignoreError(); 
// 注册其他业务模块,注册的字符串是上面各个业务模块配置在 build.gradle 中的 HOST
ModuleManager.getInstance().registerArr("component1","component2","user","help");
if (BuildConfig.DEBUG) {
      // 框架还带有检查重复的路由和重复的拦截器等功能,在 `debug` 的时候开启它
      ModuleManager.getInstance().check();
}

混淆配置

# 小金子组件化框架 不要警告
-dontwarn com.xiaojinzi.component.**
# 所有本包下面的类和接口都不混淆
-keep class com.xiaojinzi.component.** {*;}
-keep interface com.xiaojinzi.component.** {*;}
# 这两条是让路由 Api 不混淆
-keep @com.xiaojinzi.component.anno.router.RouterApiAnno interface * {*;}
-keep class **.**RouterApiGenerated {*;}
# 几个用户自定义或者自动生成到其他包下的应该不混淆
-keep class * implements com.xiaojinzi.component.impl.RouterInterceptor{*;}
-keep class * implements com.xiaojinzi.component.application.IComponentApplication{*;}
-keep class * implements com.xiaojinzi.component.support.Inject{*;}
You can’t perform that action at this time.