本文介绍在Android中使用Doric的方式及常用API
项目引入
在项目根目录 build.gradle 中添加远程maven地址:
allprojects {
repositories {
......
mavenCentral()
}
}在app目录中的 build.gradle 中添加依赖:
dependencies {
......
// 请注意sdkVersion需>=当前项目中的doric js库版本
implementation "pub.doric:core:${sdkVersion}"
debugImplementation "pub.doric:devkit:${sdkVersion}"
}直接跳转到DoricActivity(装载JS Bundle为
assets/src/BUNDLE_NAME.js)Intent intent = new Intent(context, DoricActivity.class);
intent.putExtra("source", "assets://src/" + BUNDLE_NAME + ".js");
intent.putExtra("alias", BUNDLE_NAME);
context.startActivity(intent);
初始化
在应用启动阶段初始化 Doric:
import pub.doric.Doric; |
可选配置:
Doric.enablePerformance(true); |
如果业务有自定义插件或视图,需要在加载 Doric 页面前注册:
Doric.registerLibrary(new MyLibrary()); |
常用参数说明
本小节内容解释Doric SDK参数名词及意义。
source
标示JS bundle的来源,DoricJSLoader可根据source请求到JS bundle内容。
alias
用于标识Doric运行时,用于热重载调试。可为空。
extra
初始化DoricJS时传入的额外数据,在Panel中,可通过getInitData获取。为JSON格式的字符串。可传空。
示例:
intent.putExtra("extra", "{\"userId\":\"10001\"}"); |
JS 侧读取:
const initData = this.getInitData(); |
Doric容器
Doric容器可以接收Doric JS bundle并运行。
DoricActivity
Activity级别的Doric容器,经DoricActivity装载的Doric程序可绘制在整个Activity之上。
Intent intent = new Intent(context, DoricActivity.class); |
DoricFragment & DoricPanelFragment
Fragment级别的Doric容器,经DoricFragment装载的Doric程序可绘制在Fragment所处区域。
DoricFragment装载的Doric程序可在其内部进行不同DoricPanel间的跳转。
而DoricPanelFragment装载的Doric程序只能装载自身,不能进行跳转切换。
String source = "assets://src/" + BUNDLE_NAME + ".js"; |
DoricPanel
View级别的Doric容器,经DoricPanel装载的Doric程序可绘制在View所处区域。
|
doricPanel.config(bundleString, alias, extra); |
这里的bundleString为实际运行的JS内容,您可以通过DoricJSLoader获取。
如果 DoricPanel 所在 Context 是 LifecycleOwner,它会自动监听 ON_RESUME、ON_PAUSE、ON_DESTROY 并同步到 Doric 生命周期。否则需要宿主自行管理销毁时机。
Bundle装载 - DoricJSLoader
DoricJSLoader的作用是根据Source协议请求加载JS内容。
Doric内部实现了通过assets文件或http/https地址加载。
您也可以按如下注册自己的DoricJSLoader来实现自定义协议。
使用
Doric内置了两种协议实现
- Asset文件夹,source格式为
assets://xxxxxx - Http或Https协议,source格式即为http地址,
https://example.com/bundle.js
String source = "assets://src/HelloDoric.js"; |
注册自己的DoricJSLoader
您可以注册DoricJSLoader来实现对JS Bundle的自定义请求下载。
public interface IDoricJSLoader { |
实现接口
public class DoricHttpJSLoader implements IDoricJSLoader { |
注册生效
创建JSLoader的实例并在Doric中注册
Doric.addJSLoader(new DoricHttpJSLoader()); |
运行脚手架 Android 工程
通过 doric create 创建的项目可以直接运行:
$ npm run android |
该命令会执行:
- 在
android/下构建 debug APK。 - 使用
adb install -t -r安装。 - 查找主 Activity 并启动应用。
运行前请确认:
- 已设置
ANDROID_HOME或ANDROID_SDK_ROOT。 - 已连接 Android 设备或启动模拟器。
- 当前目录是 Doric 应用根目录。