Android SDK 简介

  github地址点这里

  Chameleon android SDK 是 Chameleon 整体框架的一部分,主要任务是完成 Chameleon JsBundle 在 android 端的本地渲染。SDK 底层采用 weex 作为渲染引擎,同时扩展一些一般工程通用的基础能力,如缓存能力、降级能力等。

1. 项目结构

项目一级目录结构如下:

|+ app SDK使用示例
|+ cmlsdk SDK接入层,抽象 Chameleon 引擎能力、实现通用扩展能力
|+ cmlweex 包装 weex 渲染引擎
|+ cmlweb 包装 web 渲染引擎
|+ js-bundle-mgr 实现 js bundle 预加载、缓存
|+ rich-text-component 富文本组件
|+ sdk-image 图片选择、图片拍摄组件
|+ sdk-location 位置组件

cmlsdk 模块单独拿出来看下目录结构:

|- cmlsdk
    |+ adapter 定义了扩展能力的接口以及默认实现,无默认实现的能力需要第三方项目根据自己的实际业务需求去实现
    |+ bridge 定义了 js 和 native 通信的接口,实现协议相关的处理能力,以及实现了协议层使用入口
    |+ bundle js bundle 相关定义,目前只有一个类用来描述 js bundle 相关信息
    |+ common 通用能力的基础封装类
    |+ container 渲染容器的抽象能力定义
    |+ extend Chameleon 提供的一些能力
    |+ module 扩展能力管理,收集 sdk 默认提供的以及第三方用户自己实现的 module,根据 bridge 层指令执行具体某个 module 的某个 method
    |+ utils 工具类集合
    |+ widget 自定义的widget,目前只有一个 title bar,用做 webview 渲染容器的action bar
    |- CmlBaseLifecycle 生命周期的接口定义
    |- CmlConstant 常量定义
    |- CmlEngine Chameleon SDK 使用入口
    |- CmlEnvironment 运行环境和运行参数配置入口、扩展能力设置入口
    |- CmlInstanceManage 页面运行实例的管理类,每一个容器实例运行时,其对应的Instance会注册到这里
    |- ICmlEngine 引擎的抽象接口
    |- ICmlInstance 容器实例抽象接口
    |- ICmlActivityInstance 全屏容器实例抽象接口
    |- ICmlViewInstance 视图容器实例抽象接口

项目整体架构如下图所示:

image

2. Chameleon 使用

Chameleon android SDK 的使用步骤如下:

  • 引用 Chameleon 及工程需要的相关类库
  • 在项目中初始化 Chameleon SDK
  • 加载 JS Bundle

详细的使用方式可以参看手把手系列之《变色龙SDK使用范例》,建议先看使用范例再阅读其他章节。

如果需要自定义自己的 adapter,参看《Adapter的使用》一节。如果需要扩展module,参看《Module的使用》一节。

3. 基础类说明

3.1 CmlEngine

此类是 Chameleon/kəˈmiːlɪən/ SDK 的入口类,提供基本的初始化入口和 Chameleon容器的调起能力。具体包含以下能力

  • SDK 初始化入口
  • 调起渲染容器
  • 初始化预加载列表
  • 注册扩展module

3.2 CmlEnvironment

CmlEnvironment 主要提供了开发期间需要的一些能力,如

  • 调试开关
  • 降级开关
  • 缓存开关

以及一些常量的定义,如

  • 预加载的最大缓存
  • 运行时的最大缓存

adapter 设置和获取,详情参看《Adapter的使用》一节

  • 各种能力的自定义实现配置入口

4. 富文本组件

富文本是Chameleon里唯一一个默认注册的组件,主要有以下内容

 |
 |-richinfo     主要是富文本需要定义的协议、点击事件的回调等
 |-utils    工具类,主要是加载assets下默认的字体
 |-CmlRichTextComponent     继承与与CmlComponent的富文本组件
 |-CmlRichTextEngine     富文本入口类,

richinfo

  • CmlClickSpanListener:富文本点击事件回调
  • CmlCustomTypefaceSpan:加载自定义字体
  • CmlRichInfo:富文本协议及实现
  • CmlRichInfoSpan:配合CmlRichInfo显示富文本文字,可直接设置给TextView

utils

  • CmlFontUtil:主要就是加载自定义字体,如assets下fonts包下的Barlow-Medium.ttf字体

相关链接

results matching ""

    No results matching ""