返回排行榜

luojilab/DDComponentForAndroid

Java

一套完整有效的android组件化方案,支持组件的组件完全隔离、单独调试、集成调试、组件交互、UI跳转、动态加载卸载等功能

android-architectureandroid-applicationandroid-componentandroid
Star 增长趋势
Star
3.3k
Forks
562
周增长
Issues
21
1k2k3k
2017年9月2020年8月2023年8月2026年7月
制品库Mavengit clone https://github.com/luojilab/DDComponentForAndroid.git
README

DDComponent

PRs Welcome License

实现功能:

  • 组件可以单独调试
  • 杜绝组件之前相互耦合,代码完全隔离,彻底解耦
  • 组件之间通过接口+实现的方式进行数据传输
  • 使用scheme和host路由的方式进行activity之间的跳转
  • 自动生成路由跳转路由表
  • 任意组件可以充当host,集成其他组件进行集成调试
  • 可以动态对已集成的组件进行加载和卸载
  • 支持kotlin组件

使用指南

1、主项目引用编译脚本

在根目录的gradle.properties文件中,增加属性:

mainmodulename=app

其中mainmodulename是项目中的host工程,一般为app

在根目录的build.gradle中增加配置

buildscript {
    dependencies {
        classpath 'com.luojilab.ddcomponent:build-gradle:1.2.0'
    }
}

为每个组件引入依赖库,如果项目中存在basiclib等基础库,可以统一交给basiclib引入

compile 'com.luojilab.ddcomponent:componentlib:1.3.0'

2、拆分组件为module工程

在每个组件的工程目录下新建文件gradle.properties文件,增加以下配置:

isRunAlone=true
debugComponent=sharecomponent
compileComponent=sharecomponent

上面三个属性分别对应是否单独调试、debug模式下依赖的组件,release模式下依赖的组件。具体使用方式请解释请参见上文第二篇文章

3、应用组件化编译脚本

在组件和host的build.gradle都增加配置:

apply plugin: 'com.dd.comgradle'

注意:不需要在引用com.android.application或者com.android.library

同时增加以下extension配置:

combuild {
    applicationName = 'com.luojilab.reader.runalone.application.ReaderApplication'
    isRegisterCompoAuto = true
}

组件注册还支持反射的方式,有关isRegisterCompoAuto的解释请参见上文第二篇文章

4、混淆

在混淆文件中增加如下配置

-keep interface * {
  <methods>;
}
-keep class com.luojilab.component.componentlib.** {*;}
-keep class com.luojilab.router.** {*;}
-keep class com.luojilab.gen.** {*;}
-keep class * implements com.luojilab.component.componentlib.router.ISyringe {*;}
-keep class * implements com.luojilab.component.componentlib.applicationlike.IApplicationLike {*;}

关于如何进行组件之间数据交互和UI跳转,请参看 Wiki

License

DDComponentForAndroid 使用的 MIT 协议,详细请参考 LICENSE

相关仓库
android/architecture-samples

A collection of samples to discuss and showcase different architectural tools and patterns for Android apps.

KotlinApache License 2.0android-architectureandroid
45.8k11.9k
android10/Android-CleanArchitecture

This is a sample app that is part of a series of blog posts I have written about how to architect an android application using Uncle Bob's clean architecture approach.

JavaMavenApache License 2.0android-cleanarchitecturearchitectural
15.5k3.3k
hehonghui/android-tech-frontier

【停止维护】一个定期翻译国外Android优质的技术、开源库、软件架构设计、测试等文章的开源项目

Apache License 2.0android-testingrxjava
blog.csdn.net/bboyfeiyu
10.6k3.3k
JessYanCoding/MVPArms

⚔️ A common architecture for Android applications developing based on MVP, integrates many open source projects, to make your developing quicker and easier (一个整合了大量主流开源项目高度可配置化的 Android MVP 快速集成框架).

JavaMavenApache License 2.0mvprxjava
10.2k2.4k
janishar/android-mvp-architecture

This repository contains a detailed sample app that implements MVP architecture using Dagger2, GreenDao, RxJava2, FastAndroidNetworking and PlaceholderView

JavaMavenApache License 2.0mvp-architecturedagger2
janisharali.com
4.4k1.2k
luckybilly/CC

业界首个支持渐进式组件化改造的Android组件化开源框架,支持跨进程调用。Componentize your android project gradually.

JavaMavenApache License 2.0ccandroid-architecture
luckybilly.github.io/CC-website/
4k631
bufferapp/android-clean-architecture-boilerplate

An android boilerplate project using clean architecture

KotlinMIT Licenseandroidandroid-application
3.7k511
Ivy-Apps/ivy-wallet

Ivy Wallet is an open-source money manager app for Android, no longer maintained. You can fork the code or download the final version from Google Play.

KotlinGNU General Public License v3.0kotlinjetpack-compose
play.google.com/store/apps/details
3.2k975
mxdldev/android-mvp-mvvm-flytour

🔥🔥🔥 FlyTour是Android MVVM+MVP+Dagger2+Retrofit+RxJava+组件化+插件组成的双编码架构+双工程架构+双语言Android应用开发框架,通过不断的升级迭代该框架已经有了十个不同的版本,5.0之前工程架构采用gradle配置实现组件化,5.0之后的工程架构采用VirtualAPK实现了插件化,5.0之前采用Java编码实现,5.0之后采用Kotlin编码实现,编码架构由MVVM和MVP组成,工程架构和编码架构及编码语言开发者可根据自己具体的项目实际需求去决定选择使用,该框架是Android组件化、Android插件化、Android MVP架构、Android MVVM架构的集大成者,帮助你快速的搭建自己的App项目开发框架,以便把主要的精力放在自己的项目的业务功能实现上,另外在长期的工作实践中总结整理大量的实用工具类在项目lib_common组件的util包当中方便大家调用。

JavaMavenApache License 2.0mvp-androidandroidmodule
menxindiaolong.blog.csdn.net/article/details/94975829
3.2k553
Blankj/AndroidStandardDevelop

:star2: Best practices in Android develop(final).

Apache License 2.0standardandroid-development
blankj.com/2017/03/08/android-standard-dev-final
3k581
janishar/android-mvvm-architecture

This repository contains a detailed sample app that implements MVVM architecture using Dagger2, Room, RxJava2, FastAndroidNetworking and PlaceholderView

JavaMavenApache License 2.0mvvmmvvm-architecture
janisharali.com
3k913
xiaojinzi123/Component

A powerful componentized framework.一个强大、100% 兼容、支持 AndroidX、支持 Kotlin并且灵活的组件化框架. 大家尽量用 纯 Kotlin 的 KComponent 呀!!!

JavaMavenApache License 2.0componentandroid
github.com/xiaojinzi123/Component/wiki/Component-%E5%92%8C-ARouter-%E6%AF%94%E8%BE%83
2.9k212