背景

由于威联通官方APP市场中可用的App数量比较少,有时需要自己进行打包安装。
这里要说明几点:

  1. 打包需要在威联通NAS上进行,不能通过自己的电脑进行。
  2. 需要能通过ssh连接上NAS服务器,下面称为命令行后台。
  3. 需要能登录威联通NAS UI页面后台,下面称为页面后台。

整个过程主要分为4个步骤:

  1. 下载安装QDK
  2. 创建要打包的App环境
  3. 配置要打包的App
  4. 打包

下载安装QDK

下载链接:http://wiki.qnap.com/wiki/QPKG_Development_Guidelines#Downloads
文件下载到本地,通过页面后台手动安装。

创建要打包的App环境

进入命令行后台

# 进入QDK的安装目录
cd `getcfg QDK Install_Path -f /etc/config/qpkg.conf` 
# 创建你要打包的APP,最后一个参数是APP的名字
qbuild --create-env MyQPKG
# 进入MyQPKG目录
cd MyQPKG/

配置要打包的App

MyQPKG/目录下,修改qpkg.cfg文件的内容

# 打开配置文件
vim qpkg.cfg
# 重点关注下面几个参数
# APP名称
QPKG_NAME="MyQPKG"
# APP版本
QPKG_VER="0.1"
# APP启动和停止时执行的脚本
QPKG_SERVICE_PROGRAM="MyQPKG.sh"

MyQPKG/shared目录下修改启动和停止脚本,脚本文件名是上面配置的也就是MyQPKG.sh,这里如果脚本不存在则创建一个。原理就是APP启动时通过脚本把服务启动,停止时把服务杀死。脚本内容如下

#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="MyQPKG"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
APACHE_ROOT=`/sbin/getcfg SHARE_DEF defWeb -d Qweb -f /etc/config/def_share.info`
export QNAP_QPKG=$QPKG_NAME

case "$1" in
  start)
    ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
    if [ "$ENABLED" != "TRUE" ]; then
        echo "$QPKG_NAME is disabled."
        exit 1
    fi
        # 这里时APP启动时执行的命令
        /bin/chmod -Rf 777 $QPKG_ROOT/*
	    cd $QPKG_ROOT
	    ./MyQPKG 2>&1 & disown
    ;;

  stop)
        # 这里时APP停止时执行的命令
        killall -9 MyQPKG
    ;;

  restart)
    $0 stop
    $0 start
    ;;

  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0

打包

将依赖文件放入对应的目录,shared/ 中存放平台无关的公共文件,arm-x09/ arm-x19/ arm-x31/ arm-x41(TS-x31+)/ x86/ x86_ce53xx/ x86_64/ 中存放对应平台下的可执行文件等。
比如App可执行文件是打包好的x86_64平台的MyQPKG二进制可执行文件,就把MyQPKG这个文件放到MyQPKG/x86_64/目录下面。

# 文件放好之后执行下面的命令进行打包
qbuild
# 查看打包后生成的文件
ls build/

MyQPKG/build/目录下生成的.qpkg后缀的文件,复制出来就可以通过页面后台手动安装了。