业务包加载

原理介绍

将不同的业务包加载到相应的Device的详细实现流程如下图所示。

图1 Device启动时业务包加载流程
  1. Host启动时启动客户自定义实现的daemon进程,监控Device侧消息。
  2. Device启动时,拉起客户自定义实现的client进程,client进程通过HDC连接到Host侧的客户daemon进程,并通知Host daemon进程Device已启动。
  3. Host侧的daemon进程接收到Device已启动的消息后,通过HDC文件传输功能把相应的业务包拷贝到Device,并通知Device侧的client进程进行业务包的安装和启动。
  4. Device侧client进程收到业务包安装消息后,进行业务包安装操作。

    首先进行业务包的解密和签名校验(可选,用户根据需要自行实现业务包的解密/签名校验),然后解压业务包,执行安装脚本进行安装,安装成功后执行启动脚本启动业务进程。

  5. Device侧业务包安装完成后,通知Host侧daemon进程完成业务包的安装操作。

开发步骤

  1. 业务包开发。

    建议按照业务包中目录结构进行业务包的文件部署,包含库文件、可执行文件、安装脚本、卸载脚本以及业务进程启动脚本。

  2. Host侧daemon进程开发。

    用户自定义实现Host侧的daemon进程,daemon进程需要包含如下功能:

    • 通过HDC接收Device侧client进程发送的消息,并获取发送消息的Device ID。
    • 当接收到Device侧client进程发送的Device已启动消息后,能够根据Device ID将业务包通过HDC的文件传输功能加载到Device侧;然后通知Device侧client进程进行业务包的安装。

    详细代码示例请参见HDC样例

  3. 将Daemon进程启动脚本写入Host操作系统的启动脚本,实现Host启动时自动启动Daemon进程。

    参考方法如下:

    1. 在Host侧操作系统的/etc/init.d目录下创建一个Shell脚本,例如命名为Daemon_init.sh。
    2. 在Daemon_init.sh中写入Daemon进程的启动命令。
    3. 为Daemon_init.sh脚本添加可执行权限。

    以上步骤即可以实现Deamon进程的开机启动。

  4. Device侧client进程开发。

    用户自定义实现Device侧client进程,client进程需要包含如下功能:

    • 通过HDC连接Host侧daemon进程,并发消息到daemon进程,并能接收Host侧daemon进程发送的消息。

      功能实现代码示例可参见HDC样例

    • 进行业务包的解密、签名校验(可选,用户根据需要自行实现业务包的解密/签名校验)。
    • 调用业务包的安装脚本进行业务包的安装。
    • 安装完成后,启动业务进程。

    Client进程开发完成后,需要将其打包到Device侧文件系统中,文件系统的修改方法请参见定制文件系统

  5. 将client进程启动脚本写入Device系统启动脚本,实现Device启动时自动启动client进程。

    您可以将client进程启动命令写入Device系统的rcS启动脚本中(/etc/rc.d/init.d/rcS文件)。

    rcS文件需要通过修改Device侧文件系统的方式进行修改,文件系统的修改方法请参见定制文件系统