KotlinAndroid项目实战

从实战出发巩固Kotlin知识,本项目使用组件化 + MVP + Retrofit + RxKotlin + Dagger2实现的一款用Kotlin语言编写的影视类应用。

github地址

先看效果图

首页模块

音乐模块

电视直播,相声模块

项目结构

Common为公共库,主要包含一些基类和常用的工具类,Provider依赖于Common,是模块真正依赖的库。其中业务模块包括:Home,Music,User,Player。每个业务模块对应一个Module。主模块APP和业务模块都依赖Provider,主模块APP在开发阶段不再依赖具体的业务模块,彻底隔离业务模块之间的耦合。业务模块统一实现Provider中定义的接口,暴露需要提供的服务。

说明

common.gradle三方依赖库和版本管理,统一放在该文件中。
and_res_guard.gradle:微信开源工具AndResGuard资源文件"混淆"配置文件。

Android打包那些事

libbase.gradle:多Module build文件公共部分抽取。
releaseinfo.gradle:版本发布文档自动维护脚本

Gradle实战

PluginSwitch:插件项目

如何使用Android Studio开发Gradle插件

实现了两个功能:

  • 1.自动切换library和Application

如果gradle.properties中配置了isRunAlone=true,也就是能够独立运行,那么点击运行按钮可以选择该模块自动运行,无需在build.gradle文件中配置。如果运行的是主module,不管其依赖的module是否可以独立运行,插件自动设置为library。实现真正的自动切换。

//不需要再通过变量来控制了
if(isHomeModule.toBoolean()){
    apply plugin: 'com.android.library'
}else{
    apply plugin: 'com.android.application'
}
//省略资源目录的配置

效果图

  • 2.主Module在开发时不依赖业务模块,只要在运行打包时才依赖,彻底避免业务模块之间的耦合

通过在build.gradle配置,通过字节码插桩来实现的。

combuild {
    applicationName = 'com.gfd.home.app.HomeApplication'
    isRegisterAuto = false
}

主module依赖其他模块配置在该目录下的gradle.properties中配置:
debugComponent=Home,Crosstalk,Music,Player //debug时依赖的
compileComponent=Home,Crosstalk,Music,Player //release时依赖的

不需要在build.gradle中依赖了
api project(':Home')
api project(':Music')
......

这样主Module在开发时不再依赖具体的业务模块,只是使用业务模块提供的服务,所以业务模块需要实现Provider模块定义的接口,提供具体的业务。

interface IApplicationLoad {

    /** 组件加载*/
    fun registered()

    /** 组件卸载*/
    fun unregistered()
}

定义Music模块提供的服务
interface MusicService {

    fun getMusicFragment(): BaseFragment

}
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值