All Projects → luckybilly → Cc

luckybilly / Cc

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

Programming Languages

java
68154 projects - #9 most used programming language
groovy
2714 projects
javascript
184084 projects - #8 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to Cc

Component
🔥🔥🔥A powerful componentized framework.一个强大、100% 兼容、支持 AndroidX、支持 Kotlin并且灵活的组件化框架
Stars: ✭ 2,434 (-36.99%)
Mutual labels:  android-architecture, component, componentization
android-kick-start-modular
Android Kick Start Project Template Framework FrogoBox || Admob, MVVM Archictecture || Clean Architecture Modularization
Stars: ✭ 16 (-99.59%)
Mutual labels:  android-architecture, architecture-components
Jimu
一种简单有效的android组件化方案,支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能。
Stars: ✭ 2,355 (-39.04%)
Mutual labels:  android-architecture, android-component
KTAndroidArchitecture
A Kotlin android architecture with Google Architecture Components
Stars: ✭ 33 (-99.15%)
Mutual labels:  android-architecture, architecture-components
Androidmvvm
Android MVVM sample
Stars: ✭ 130 (-96.63%)
Mutual labels:  android-architecture, architecture-components
Armscomponent
📦 A complete android componentization solution, powered by MVPArms (MVPArms 官方快速组件化方案).
Stars: ✭ 1,664 (-56.92%)
Mutual labels:  android-architecture, android-component
Componentcornerstone
🐜🐜 一种全新的android组件化方案,无需下沉公用代码,无需采用路由等硬编码方式分发sdk,独立维护组件暴露的SDK/IMPL,打破官方模块循环且支持组件间互相调用SDK,支持集成组件调试/组件独立运行。A brand new android componentization solution, no need to sink public code, no need to use hard coding to distribute sdk, independent maintenance component exposed SDK / IMPL, break the official module loop and support the call between components The SDK supports integrated component debugging/components to run independently.
Stars: ✭ 207 (-94.64%)
Mutual labels:  android-architecture, component
drawer-with-bottom-navigation-architecture
Sample android kotlin project with both drawer and bottom navigation together
Stars: ✭ 42 (-98.91%)
Mutual labels:  android-architecture, architecture-components
Android-Clean-Architecture
🚀A basic sample android application to understand Clean Architecture in a very simple way and is written in Kotlin.
Stars: ✭ 39 (-98.99%)
Mutual labels:  android-architecture, architecture-components
BottomNavArchDemo
The demo project for Bottom Navigation with Navigation Architecture Components article
Stars: ✭ 53 (-98.63%)
Mutual labels:  android-architecture, architecture-components
Alfonz
Mr. Alfonz is here to help you build your Android app, make the development process easier and avoid boilerplate code.
Stars: ✭ 90 (-97.67%)
Mutual labels:  android-architecture, architecture-components
Clean Mvvm Archcomponents
👽 Android app consuming Star Wars API.Built with clean architecture ,MVVM pattern, Koin , Coroutines + Flows ,Architecture Components, Data Binding , Firebase , Unit/UI Tests ,Motion Layout
Stars: ✭ 285 (-92.62%)
Mutual labels:  android-architecture, architecture-components
News
A sample News 🗞 app built using Modern Android Development [Architecture Components, Coroutines, Retrofit, Room, Kotlin, Dagger]
Stars: ✭ 774 (-79.96%)
Mutual labels:  android-architecture, architecture-components
Coolweather
Weather App that uses Android best practices. Android Jetpack, clean architecture. Written in Kotlin
Stars: ✭ 154 (-96.01%)
Mutual labels:  android-architecture, architecture-components
Mvvmframe
🏰 MVVMFrame for Android 是一个基于Google官方推出的Architecture Components dependencies(现在叫JetPack){ Lifecycle,LiveData,ViewModel,Room } 构建的快速开发框架。有了MVVMFrame的加持,从此构建一个MVVM模式的项目变得快捷简单。
Stars: ✭ 218 (-94.36%)
Mutual labels:  architecture-components, component
Jbusdriver
这是去幼儿园的班车(滑稽
Stars: ✭ 2,056 (-46.78%)
Mutual labels:  cc, android-component
resaca
The right scope for View Models in Android Compose
Stars: ✭ 105 (-97.28%)
Mutual labels:  android-architecture, architecture-components
Daggerandroidmvvm
Demonstrates using Dagger 2.11+ in MVVM app with Android Architecture Components, Clean Architecture, RxJava
Stars: ✭ 255 (-93.4%)
Mutual labels:  android-architecture, architecture-components
Ddcomponentforandroid
一套完整有效的android组件化方案,支持组件的组件完全隔离、单独调试、集成调试、组件交互、UI跳转、动态加载卸载等功能
Stars: ✭ 3,281 (-15.07%)
Mutual labels:  android-architecture, android-component
Seaside
The framework for developing sophisticated web applications in Smalltalk.
Stars: ✭ 341 (-91.17%)
Mutual labels:  component

CC : ComponentCaller

CC是一套Android的组件化框架,由CC核心API类库和cc-register插件组成

模块 CC cc-register
当前最新版本 Download Download

华丽丽的文档

CC的特色

  • 一静一动,开发时运行2个app:
    • 静:主App (通过跨App的方式单组件App内的组件)
    • 动:单组件App (通过跨App的方式调用主App内的组件)
  • 支持渐进式组件化改造
    • 解耦只是过程,而不是前提

一句话介绍CC:

CC是一套基于组件总线的、支持渐进式改造的、支持跨进程调用的、完整的Android组件化框架

  • 基于组件总线:
    • 不同于市面上种类繁多的路由框架,CC采用了基于组件总线的架构,不依赖于路由(路由 VS 总线)
  • 支持渐进式改造:
    • 接入CC后可立即用以组件的方式开发新业务,可单独运行调试开发,通过跨app的方式调用项目中原有功能
    • 不需要修改项目中现有的代码,只需要新增一个IComponent接口的实现类(组件类)即可支持新组件的调用
    • 模块解耦不再是前提,将陡峭的组件化改造实施曲线拉平
  • 支持跨进程调用:
    • 支持应用内跨进程调用组件,支持跨app调用组件
    • 调用方式与同一个进程内的调用方式完全一致
    • 无需bindService、无需自定义AIDL,无需接口下沉
  • 完整:
    • CC框架下组件提供的服务可以是几乎所有功能,包括但不限于页面跳转、提供服务、获取数据、数据存储等
    • CC提供了配套插件cc-register,完成了自定义的组件类、全局拦截器类及json转换工具类的自动注册,
    • cc-register同时还提供了代码隔离、debug代码分离、组件单独调试等各种组件化开发过程中需要的功能

CC的设计灵感来源于服务端的服务化架构,将组件之间的关系拍平,不互相依赖但可以互相调用,不需要再管理复杂的依赖树。

了解业界开源的一些组件化方案:多个维度对比一些有代表性的开源android组件化开发方案

demo演示

demo下载(主工程,包含ComponentB之外的所有组件)

demo_component_b组件单独运行的App(Demo_B)下载

以上2个app用来演示组件打包在主app内和单独以app运行时的组件调用,都安装在手机上之后的运行效果如下图所示

目录结构

    - cc                            组件化框架基础库(主要)
    - cc-register                   CC框架配套的gradle插件(主要)
    - cc-settings-2.gradle          组件化开发构建脚本(主要)
    - demo                          demo主程序(调用其它组件,并演示了动态组件的使用)
    - demo_base                     demo公共库(base类、util类、公共Bean等)
    - demo_component_a              demo组件A
    - demo_component_b              demo组件B(上方提供下载的apk在打包时local.properties中添加了demo_component_b=true)
    - demo_component_jsbridge       demo组件(面向组件封装的jsBridge,并演示了如何进行跨进程组件调用)
    - demo_component_kt             demo组件(kotlin)
    - demo_interceptors             demo全局拦截器(如果有多个app并且拦截器不同,可以创建多个module给不同app使用)
    - cc-settings-demo.gradle       演示如何自定义配置文件,如:添加actionProcessor自动注册的配置
    - demo-debug.apk                demo安装包(包含demo/demo_component_a/demo_component_kt)
    - demo_component_b-debug.apk    demo组件B单独运行安装包

创建组件

创建一个组件很简单:只要创建一个IComponent接口的实现类,在onCall方法中实现组件暴露的服务即可

public class ComponentA implements IComponent {
  @Override
  public String getName() {
      //指定组件的名称
      return "ComponentA";
  }

  @Override
  public boolean onCall(CC cc) {
    //在此处将组件内部的服务暴露给外部调用
    //组件内部的逻辑与外部完全解耦
    String actionName = cc.getActionName();
    switch (actionName) {
      case "showActivity": //响应actionName为"showActivity"的组件调用
        //跳转到页面:ActivityA
        CCUtil.navigateTo(cc, ActivityA.class);
        //返回处理结果给调用方
        CC.sendCCResult(cc.getCallId(), CCResult.success());
        break;
      default:
        //其它actionName当前组件暂时不能响应,可以通过如下方式返回状态码为-12的CCResult给调用方
        CC.sendCCResult(cc.getCallId(), CCResult.errorUnsupportedActionName());
        break;
    }
    return false;
  }
}

调用组件

CC 使用简明的流式语法API,因此它允许你在一行代码搞定组件调用:

"CC"也是本框架主入口API类的类名,是由ComponentCaller缩写而来,其核心职能是:组件的调用者

CC.obtainBuilder("ComponentA")
  .setActionName("showActivity")
  .build()
  .call();

也可以这样

CC.obtainBuilder("ComponentA")
  .setActionName("showActivity")
  .build()
  .callAsync();

或者这样

CC.obtainBuilder("ComponentA")
  .setActionName("showActivity")
  .build()
  .callAsyncCallbackOnMainThread(new IComponentCallback() {
        @Override
        public void onResult(CC cc, CCResult result) {
          String toast = result.isSuccess() ? "success" : "failed";
          Toast.makeText(MainActivity.this, toast, Toast.LENGTH_SHORT).show();
        }
    });

开始使用

看文档看文档看文档

混淆配置

不需要额外的混淆配置

自动注册插件

CC专用版:cc-register,fork自AutoRegister,在自动注册的基础上添加了一些CC专用的业务

通用版:

源码:AutoRegister 原理:android扫描接口实现类并通过修改字节码自动生成注册表

版本更新日志

请点击:更新日志

遇到问题怎么办?

  • 先打开CC的日志开关,看完整的调用过程日志,这往往能帮助我们找到问题
CC.enableDebug(true);  //普通调试日志,会提示一些错误信息
CC.enableVerboseLog(true);  //组件调用的详细过程日志,用于跟踪整个调用过程
  • 文档
  • 看issue了解开源社区上其它小伙伴提出的问题及解答过程,很可能就有你现在遇到的问题
  • 提issue,如果以上还没有解决你的问题,请提一个issue,这很可能是个新的问题,提issue能帮助到后面遇到相同问题的朋友
  • 加下方的QQ群提问

QQ群

QQ群号:686844583

CC交流群

或者扫描下方二维码加群聊

image

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].