1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/luckybilly-CC

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 14 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 20:54 0bd0095

CC: ComponentCaller

CC — это набор компонентов для Android, который состоит из библиотеки классов ядра API CC и плагина cc-register.

Модуль CC cc-register
Последняя версия Download Download

Документ от 华丽丽

Особенности CC

  • Один статический, один динамический: во время разработки запускаются два приложения:
    • Статическое: основное приложение (через межкомпонентный доступ к компонентам в одном компоненте).
    • Динамическое: однокомпонентное приложение (вызов компонентов основного приложения через межкомпонентный доступ).
  • Поддержка постепенной компонентной модернизации.
    • Развязка — это процесс, а не предпосылка.

CC в двух словах

CC представляет собой основанный на шине компонентов, поддерживающий постепенную модернизацию и вызовы между процессами полный фреймворк для компонентного подхода в Android.

  • Основанный на шине компонентов:
    • В отличие от множества различных фреймворков маршрутизации, CC использует архитектуру на основе шины компонентов и не зависит от маршрутизации (маршрутизация VS шина).
  • Поддерживает постепенную модернизацию:
    • После интеграции с CC можно сразу использовать компонентный подход для разработки новых функций, отдельно запускать и отлаживать, вызывать существующие функции проекта через межкомпонентные вызовы.
    • Не нужно изменять существующий код проекта, просто добавьте класс реализации интерфейса IComponent (класс компонента), чтобы поддерживать вызовы новых компонентов.
    • Развязка модулей больше не является предпосылкой, она сглаживает кривую модернизации компонентов.
  • Вызовы между процессами:
    • Поддерживаются вызовы компонентов внутри процесса и между приложениями.
    • Способ вызова такой же, как и внутри одного процесса.
    • Нет необходимости в bindService, пользовательском AIDL или интерфейсе нижнего уровня.
  • Полный:
    • Услуги, предоставляемые компонентами в рамках CC, могут быть практически любыми, включая, но не ограничиваясь, навигацией по страницам, предоставлением услуг, получением данных, хранением данных и т. д.
    • CC предоставляет сопутствующий плагин cc-register, который автоматически регистрирует пользовательские классы компонентов, глобальные перехватчики и инструменты преобразования JSON.
    • cc-register также предоставляет функции изоляции кода, разделения отладочного кода, индивидуальной отладки компонентов и другие функции, необходимые для разработки компонентов.

Дизайн CC вдохновлён сервис-ориентированной архитектурой серверной стороны, которая выравнивает отношения между компонентами, не зависящими друг от друга, но способными вызывать друг друга без необходимости управлять сложной структурой зависимостей.

Ознакомьтесь с некоторыми открытыми проектами компонентного подхода: [Сравнение некоторых репрезентативных открытых проектов компонентного подхода Android][https://github.com/luckybilly/AndroidComponentizeLibs].

Демо

Скачать демо (основной проект, содержит все компоненты, кроме ComponentB)

Скачать demo_component_b (отдельное приложение для запуска компонента B, Demo_B)

После установки этих двух приложений на телефон вы можете увидеть эффект работы компонентов после запуска следующим образом:

Структура каталогов

- cc                            Компонентная основа фреймворка (основная)
- cc-register                   Сопутствующий плагин Gradle для CC (основной)
- cc-settings-2.gradle          Скрипт сборки для компонентной разработки (основной)
- demo                          Демонстрационное приложение (вызывает другие компоненты и демонстрирует использование динамических компонентов)
- demo_base                     Демонстрационная общая библиотека (базовые классы, утилиты, общие bean-компоненты и т.д.)
- demo_component_a              Демонстрационный компонент A
- demo_component_b              Демонстрационный компонент B (в local.properties добавлено demo_component_b=true при упаковке компонента B)
- demo_component_jsbridge       Компонентный мост JavaScript (если есть несколько приложений и разные перехватчики, можно создать несколько модулей для разных приложений)
- demo_component_kt             Компонент Kotlin
- demo_interceptors             Глобальный перехватчик (если существует несколько приложений, и перехватчики различаются, можно создавать несколько модулей для использования разными приложениями)
- cc-settings-demo.gradle       Демонстрация настройки, например, добавление конфигурации автоматического регистрационного действия процессора
- demo-debug.apk                Пакет установки демонстрационного приложения (содержит demo/demo_component_a/demo_component_kt)
- demo_component_b-debug.apk    Отдельный пакет установки компонента 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": // Отвечать на вызов действия с именем "showActivity"
        // Переход на страницу: ActivityA
        CCUtil.navigateTo(cc, ActivityA.class);
        // Вернуть результат обработки вызывающей стороне
        CC.sendCCResult(cc.getCallId(), CCResult.success());
        break;
      default:
        // Другие имена действий в настоящее время не могут отвечать на этот компонент, вы можете вернуть статус -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 ## Начало использования

Пожалуйста, ознакомьтесь с документацией.  
## Конфигурация запутывания

Дополнительная конфигурация запутывания не требуется.  
## Автоматическая регистрация плагина

Версия для CC: cc-register, форк AutoRegister. На основе автоматического регистра добавлены некоторые функции для CC.

Общая версия:

Исходный код: AutoRegister (https://github.com/luckybilly/AutoRegister).
Принцип работы: автоматическое создание регистрационного файла через сканирование интерфейса Android и изменение байт-кода (http://blog.csdn.net/cdecde111/article/details/78074692).  
## Журнал обновлений версий

См. раздел «Журнал обновлений» (https://luckybilly.github.io/CC-website/#/changelog).  
## Что делать при возникновении проблем?

 Сначала включите переключатель журнала CC, чтобы просмотреть полный журнал вызовов. Это часто помогает нам найти проблему.
```java
CC.enableDebug(true); // Обычный журнал отладки, который предоставляет некоторую информацию об ошибках.
CC.enableVerboseLog(true); // Подробный журнал процесса компонентов, используемый для отслеживания всего процесса вызова.

— Ознакомьтесь с документацией. — Изучите проблемы и решения других участников сообщества на GitHub (https://github.com/luckybilly/CC/issues). Возможно, у вас уже есть решение вашей проблемы. — Если проблема не решена, создайте новую задачу на GitHub (https://github.com/luckybilly/CC/issues/new). Вполне возможно, что это новая проблема, и её решение поможет другим пользователям в будущем. — Задайте вопрос в QQ-группе.

QQ-группа

Номер группы: 686844583.

Либо добавьте группу через веб-сайт (http://shang.qq.com/wpa/qunwpa?idkey=5fdd1171114b5a1eb80ea0be00b392c2e3e8ab6f278f182a07e959e80d4c9409), либо отсканируйте QR-код ниже.

image

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/luckybilly-CC.git
git@api.gitlife.ru:oschina-mirror/luckybilly-CC.git
oschina-mirror
luckybilly-CC
luckybilly-CC
master