RapidDvpt项目持续集成 采用谷歌 AppArchitecture 作为实践,借助微博api快速迭代客户端。
- 设计模式:MVVM
- 依赖注入:Dagger2
- 网络处理:Retrofit + Rxjava2
- 数据库管理:Room
- 最上层-壳App,集成(component组件1,component组件2...)
- 组件层-component(component组件xxx)
- 组件服务层-componentservice(提供组件公用服务)
- 组件依赖层-这部分是同底层lib抽离独立,专门处理组件间业务交互所提供的依赖工具
- basiclib-基础sdk(包含第三方开源库+私有工具类)
- basicres-基础资源(处理公用的基础资源)
- 组件依赖层-这部分是同底层lib抽离独立,专门处理组件间业务交互所提供的依赖工具
- 组件服务层-componentservice(提供组件公用服务)
- 组件层-component(component组件xxx)
优秀文章链接
- 第三方依赖统一管理 配置dependencies.gradle,里面统一配置依赖版本及公用变量定义。
- 模块资源命名冲突 在每一个子模块的build.gradle加上对应资源文件标识符resourcePrefix "xxx_"前缀,建议xxx以模块名命名即可。
- App模块通过buildWithOtherModule动态build其他模块,module模块通过buildModule打开是否作为module使用。
- 开源库的代码隔离设计(待补充)
-
Scope
的实践 -
@Module 有两个注解元素 include subcomponents include:其他module类 subcomponent:子component中的module类
-
@Component 只能获取到Component暴露出来的对象,比如dependencies一个BaseComponent,如果BaseComponent没有显示申明暴露对象,则无法获取得到
-
@Subcomponents,则效果和dependencies一样,则是BaseComponent
-
inject(X x),为x提供依赖
-
Dagger2多module实践
-
DaggerComponent为主壳app注入
-
AppComponent为主module注入
- Dagger2(官方)
- Android and Dagger 2.10 AndroidInjector
- Dagger2进阶必备技能
- Dependency injection with Dagger 2 - Custom scopes
- Dependency injection with Dagger 2 - the API
构建环境 ubuntu14 + Jenkins 软件版本 JDK1.8 + Gradle4.1 + Androidsdk 使用Gradle脚本打包githubs项目,打包成功之后Email通知
- 下载jenkinis.war包,
java -jar jenkins.war --httpPort=<yourPort>
指定端口运行Jenkins。 - 下载JDK1.8,Gradle,Androidsdk,配置环境变量。
打开编辑配置文件
添加一下变量到配置文件
vim /etc/profile
#set gradle export GRADLE_HOME=/root/workspace/gradle/gradle-4.1 export PATH=${PATH}:${GRADLE_HOME}/bin #set androidsdk export ANDROID_HOME=/root/workspace/android/sdk/android-sdk export PATH=${PATH}:${ANDROID_HOME}/tools export PATH=${PATH}:${ANDROID_HOME}/platforms-tools #set jdk export JAVA_HOME=/root/workspace/java/jdk1.8.0_151 export CLASSPATH=.:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$PATH 当前会话配置生效
source /etc/profile
文章参考 Ubuntu jenkins搭建 Ubuntu下jenkins+gradle+Android自动打包 编译时替换资源 - Android重叠包与资源合并一见 Android Studio Gradle实践之多渠道自动化打包+版本号管理
九宫格 https://jaeger.itscoder.com/android/2016/03/06/nine-grid-iamge-view-libaray.html
Storing Java objects other than primitive types in Room Database https://medium.com/@amit.bhandari/storing-java-objects-other-than-primitive-types-in-room-database-11e45f4f6d22