这是本文档旧的修订版!


嵌入式linux系统通常需要根据目标设备所需的接口和软件包做适当的裁减和定制,来生成可运行在目标设备上的稳定而小巧的Linux系统固件。这主要是因为不同的设备会有不同的接口需求,没有必要做一套大而全的系统和预装不必要的软件和驱动。就像网关设备没必要集成音视频接口和多媒体播放器,而对于需要人机交互的仪器仪表来说图形化的显示界面是必不可少的,因此系统开发的目的是通过为不同设备定制不同的内核和文件系统镜像,减少不必要的软件包和驱动支持,以便让目标系统能更加稳定可靠地运行。

要进行DEY系统开发,首先您需要有一台安装有Linux的操作系统的电脑,我们推荐您安装64bit的Ubuntu20.04(或Ubuntu 22.04)等Yocto支持的系统。通常不建议在Windows下安装个Linux虚拟机这样的方式来搭建DEY开发环境,这是因为以Yocto的方式编译定制的Linux比较耗资源和时间。如果需要保留电脑上的Windows,可以在电脑上安装双启动操作系统,进行DEY开发编译时在Linux环境下进行。最好是使用一台专用的系统开发服务器,通过远程ssh登陆的方式来进行相关的系统开发。

为了确保Yocto开发环境能正常工作,用于开发的电脑配置需要至少需要8G以上的内存,200G以上的硬盘空间。通常建议选配四核以上的CPU以加快编译速度。

有许多磁盘工具都可以用来制作U盘启动的安装盘,包括一些开源免费的软件,比如Rufus和UNetbootin,LinuxLive USB Creator等等。 以Rufus为例,为了更快完成启动盘制作,能常采用DD的模式来把镜像写入到U盘中。

制作好U盘启动的Ubuntu安装盘,您还需要配置你的电脑BIOS使其支持从U盘启动。现在比较新的电脑一般都默认支持,并且开机时,都有一个启动选项按钮,比如HP的电脑是F9,如果您不清楚,可以进入BIOS查询或是网上搜索一下你的笔记本品牌的开机启动方式按钮。

在开机时选择从U盘启动,就可以按界面提示一步一步完成Ubuntu操作系统的安装。

安装完成后,您还可以选择安装一些常用的软件包,比如中文支持和tftp服务器等,如果您有兴趣,请参考:ubuntu常用软件安装配置

安装软件前,请先进入root模式,安装所需的依赖包,如果您是

$ sudo apt update
$ sudo apt install curl gawk wget git-core diffstat unzip texinfo gcc-multilib g++-multilib build-essential chrpath socat cpio python python3 python3-pip python3-pexpect libsdl1.2-dev xterm libncurses5-dev libncursesw5-dev lzop
DEY 4.0以上需要更多的一些包,可以使用下面命令检查额外的一些包是否安装
$ sudo apt install gawk wget git diffstat unzip texinfo gcc build-essential chrpath socat cpio python3 python3-pip python3-pexpect xz-utils debianutils iputils-ping python3-git python3-jinja2 libegl1-mesa libsdl1.2-dev pylint3 xterm python3-subunit mesa-common-dev zstd liblz4-tool

原则上,采用最新版本全新安装的ubuntu系统,上述的包已经足够。如果您的电脑是很早以前就安装好的,内核较旧且没有怎么更新过,有可能还需要再加装一些软件包,以防止系统不断更新后出现编译出错的情况。比如

旧版14.04所需的linux硬件增强包安装

旧版14.04所需的linux硬件增强包安装

Ubuntu 16.04和14.04的包名有所不同,请根据你的系统版本操作: Ubuntu 14.04:

$ sudo apt install linux-hwe-generic-trusty

Ubuntu 16.04 (一般默认自带):

$ sudo apt install linux-generic-hwe-16.04 

Yocto开发方式依赖于通过网络下载所需的开源软件包源码,由于Linux中许多上游的开源软件包托管在被GFW和谐掉的服务器上,因此如果办公环境能够翻墙最为方便。由于国家政策的原因已经不太好购买翻墙路由器。有条件的用户,也可以用境外的云服务器来自己搭建VPN来实现翻墙。如果您有境外的服务器,需要协助安装VPN,请联系。

如果没有条件翻墙,目前中国区也提供了国内安装和编译的方法,请继续阅读按下面的方法来安装或编译DEY。

完成上述准备工作后,就可以安装repo了,DEY项目托管在github上,采用repo工具来管理软件包的升级和更新。而repo是谷歌开发的git管理工具,因此repo的官方安装方法需要翻墙。目前国内已有repo镜像可以直接使用,你可以用下面方法来获取国内可用的repo.

 如果您在root终端里,请先退出,将来使用repo也无需用root权限,普通用户就可以
  下载repo并移到PATH包含的路径
$ curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o repo
$ chmod +x repo
$ sudo mv repo /usr/local/bin/
指定REPO_URL为国内源
$ nano ~/.bashrc
  在该文件末尾加上一行
  export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'
  然后CTRL+O保存后,按CTRL+X退出,执行下面命令使之生效
$ source ~/.bashrc
  这样,以后在登录用户下,就可以直接使用repo了

如果可以翻墙,也可以用官方repo的下载方法,点击展开查看详情

如果可以翻墙,也可以用官方repo的下载方法,点击展开查看详情

如果你已经用了国内repo源,请略过,除非您想用Google官方的repo源,请确定您已经翻墙
Repo的下载地址经常变动,但总可以到Google的android开发下载页面找到对的地址,如果Repo下载地址有变,请到http://source.android.com/source/downloading.html查找正确的URL。
#我们将直接下载到/usr/local/bin,请确保是root权取
在普通用户终端窗口执行下面命令,以便在有root权限:
$ sudo -H byobu    
下载repo 
#curl -o /usr/local/bin/repo http://commondatastorage.googleapis.com/git-repo-downloads/repo
#chmod a+x /usr/local/bin/repo

接下来就可以去下载DEY, 请在普通用户权限下操作,将来DEY只需用登录用户的权限,注意把命令中的robin换成您电脑的用户名:

新建一个DEY源码目录

进一步操作前,需要退出root,因为yocto的项目编译不推荐用root,而是用你的用户名,在上面创建dey安装目录时我们已经把该目录提定给自己登录系统时的用户。 如果您还是root的终端,请先执行退出root权限的会话终端,切换到普通用户的会话窗口。

exit

安装前,先根据所需的DEY版本准备一个安装目录

$ sudo install -o robin -g robin -d /usr/local/dey-4.0
  (请用您的用户名替代robin)
(或者,我们在同一台电脑上要安装不同版本的dey,也可以多一级目录,甚至可以指定小版本号以明确您 同步的是哪个版本,比如dey 3.0的代号gatesgarth,最后一次更新是dey-3.2-r3.1。
$ sudo install -o robin -g robin -d /usr/local/dey/dey-3.2-r3.1
)

上面命令中,我们新建了一个dey-4.0的目录,DEY有不同的版本支持不同的内核版本和硬件平台,您可以到 https://github.com/digi-embedded/dey-manifest/ 查看当前所支持的分支和tags列出的版本号,最新的DEY 4.0版本代号kirkstone。

$ git config --global user.email "you@xxx.com"    (用您常用的邮箱或是您在github上帐号所用的邮箱替代)
$ git config --global user.name "youname"           (取一个自己的用户名)
$ cd /usr/local/dey-4.0
$ repo init -u https://github.com/digi-embedded/dey-manifest.git -b kirkstone
$ repo sync --no-repo-verify 或是 repo sync -j4 --no-repo-verify
上述命令每次官方有更新时,repo sync能保持和官方同步。大部分场景,您是用这种方法和官方保持一致。在一些深度定制的特殊情况,您不再参考Digi的开发板主要器件和用料,而要在某一版本号上继续开发BSP额外的分支,不和官方一致的情况下,您也可以用指定的版本号,以便回溯,比如DEY2.6的代号是thud,它最后一次更新后版本号是DEY2.6-r3.1,下面这个命令将只同步您到DEY2.6-r3.1版本
$ repo init -u https://github.com/digi-embedded/dey-manifest.git -b refs/tags/2.6-r3.1
$ repo sync -j4 --no-repo-verify
    (如果您的电脑是双核的,请用-j2或是不用-j4这个参数,或是只用repo sync命令)

注意,官方的版本代号永远都指向DEY-m.n的最新版本,您如果在后续使用中,用repo sync更新DEY安装目录,在DEY的安装目录下的source/meta-digi/README.md里,可以查到最后更新对应的版本信息,从而您可以知道当前使用的DEY版本号。我们建议您在做系统开发时,可以在项目文件夹前使用该版本号,或是在备份镜像时,备份到对应的版本号文件夹下,这样您就不需要从启动信息中了解所用镜像的版本号。

在同一台电脑上可以安装多个版本,对于不同的大版本号(dey2.0/2.2/2.4/2.6等),一般可安装在不同的目录下以方便编译测试不同的版本。Digi会维护每个已经发行的版本(包括小版本号和大版本号),所以如果您在已经在某个版本上成熟开发应用,也无需使用最新的大版本。

DEY1.6等早期版本的安装方法

DEY1.6等早期版本的安装方法

CC28平台只支持早期的DEY1.6版本,如果需要安装该版本,则对应的安装URL有所不同,请参考下述命令。

$ sudo install -o robin -g robin -d /usr/local/dey1.6
$ repo init -u https://github.com/digidotcom/dey-manifest.git -b refs/tags/1.6.9
$ repo sync -j4 --no-repo-verify

我们推荐您使用repo工具来安装DEY,这样您能比较方便地获取最新的DEY版本。如果访问国内repo源不便时,又不能通过翻墙下载repo的时候,您也可以参照下面方法安装指定的DEY版本。

如有需要,请点开查看

如有需要,请点开查看

压缩包解压直接安装

请到下面链接下载指定版本的压缩包
DEY 2.6下载:http://dey-mirror.eccee.com/dey-2.6r22.tar.bz2


解压安装能让您快速安装和编译测试DEY,但它没有和官方的发布保持更新,所以为了取得更新版本和更好的管理维护,建议用repo的方式来安装。
下载好DEY压缩包文件后,用下面命令解压到/usr/local文件夹中

cd /usr/local/
sudo tar -jxvf dey-2.6r22.tar.bz2 -C /usr/local
sudo chown -R myuserid:myuserid /usr/local/dey-2.6   注意这里的myuserid替换成你的用户名

这样就安装好了DEY 2.6-r2.2。 为了正常编译,您还需下载编译过程生成的downloads目录,并解压到你的项目文件夹,以便不翻墙能编译通过。这个downloads压缩包近9G,分为两个压缩文件:x00,x01。

x00下载: http://dey-mirror.eccee.com/x00
x01下载:http://dey-mirror.eccee.com/x01
请在Linux主机上保存,然后用下面命令合并
cat x* > dey26-cc6ul-downlods.tar.gz
tar zxvf dey26-cc6ul-downloads.tar.gz
请到下面链接下载指定版本的压缩包
DEY 2.4下载:http://dey-mirror.eccee.com/dey2.4r2.tar.bz2

解压安装能让您快速安装和编译测试DEY,但它没有和官方的发布保持更新,所以为了取得更新版本和更好的管理维护,建议用repo的方式来安装。 下载好DEY压缩包文件后,用下面命令解压到/usr/local文件夹中

cd /usr/local/
sudo tar -jxvf dey2.4r2.tar.bz2 -C /usr/local
sudo chown -R myuserid:myuserid /usr/local/dey-2.4   注意这里的myuserid替换成你的用户名

这样就安装好了DEY 2.4r2。 为了正常编译,您还需下载编译过程生成的downloads目录,并解压到你的项目文件夹,以便不翻墙能编译通过。这个downloads压缩包近11G。

本地编译所需downloads压缩包下载: http://dey-mirror.eccee.com/dey24r2downloads.tar.bz2

请在Linux主机上保存,然后用下面命令合并
tar jxvf dey24r2downloads.tar.bz2

注意这个downloads的位置默认在你的项目文件夹内,你也可以在项目配置中更改为上一级目录,如果您在配置文件conf/local.conf中更改了下载文件夹位置 ,需要保证解开的downloads与之相符。
docker安装

Git安装

还有一种方式是用ECCEEgit来安装DEY。在国内repo工具无法下载的时候,git下载成为一个获取最新DEY的渠道。ECCEE git服务器是免费安全的企业版本控制管理平台,通过ECCEE git服务,您可以为企业搭建一个私密的git服务器,它和github的区别在于,github只能托管免费开源的代码,私密的需要付费并且费用很贵,而Eccee git目前能接受免费的私密git服务托管,为您企业内部的团队协作和版本控制提供简单和高效的平台。详细用法请参考ecceegit介绍。 您只需注册Ecceegit服务,就可以直接用git来colone一个DEY本地库。

DEY 2.6的地址为: ssh:git@gitlab.eccee.com:11022/digirobin/dey-2.6.git 以dey 2.2为例,完整的步骤请参考下述命令: <code> 在你的用户名下,下面的robin请改为你的用户ID sudo install -o robin -g robin -d /usr/local/dey cd /usr/local/dey git clone http://gitlab.eccee.com:11080/digirobin/dey-2.6.git 或是,如果您有相应的Ecceegit帐号,用SSH检出 git clone ssh:git@gitlab.eccee.com:11022/digirobin/dey-2.6.git 相应地,当创建项目时,请source这个对应路径/usr/local/dey/dey2.6/mkproject.sh

</code>

安装好 DEY的开发平台,就可以创建项目了 在meta-digi-arm中定义的可用平台包括:
* ConnectCore 6 SBC, ccimx6sbc (支持DEY1.6,2.0,2.2以上的版本)
* ConnectCore 6UL SBC, ccim6ulsbc (支持DEY2.2以上的版本)
* ConnectCard for i.MX28, ccardimx28js (支持DEY1.6)

初始化项目和环境变量配置,可以用 mkproject.sh脚本,另外bitbake 不能用root编译,所以如果你是 root,还需要切换用户。 确保从root状态退出,然后

#mkdir -p /home/robin/dey-workspace/ccimx6ulsbc   (请把robin改成你的Linux系统的用户名)
#cd /home/robin/dey-workspace/ccimx6ulsbc
#source /usr/local/dey2.6/mkproject.sh -l  (列出该版本支持的平台)
#source /usr/local/dey2.6/mkproject.sh -p ccimx6ulsbc
(如果你的安装目录有多级,比如是/usr/local/dey/dey-morty时,相应地是source这个dey-morty路径的mkproject.sh)

上面命令会跳出license agreement,用任意键阅读完,按y接受license agreement,相关脚本就开始初始化项目,并生成conf目录和配置文件
bblayers.conf:可用的配置层在这里配置
local.conf:仅对本项目有用的本地可配置的变量在这里定义

mkproject.sh脚本会在当前的终端窗口中配置好编译环境。它也在项目根目录中创建一个 dey-setup-environment脚本,重启动或是关闭session后可以通过source它来在新窗口中为已经存在的项目设置编译环境。

新建好项目或是在终端中source已有项目的dey-setup-environment脚本后,就会提示您可以直接编译项目的镜像了。

注意,当DEY版本有更新,如果你要用新版本,则在更新完sync后,需要擦除 tmp和 sstate-cache目录,以便用新版本重新编译。

DEY默认的配置就足以编译生成适合开发套件上运行的镜像,首次试用,您也可以跳过本步骤,直接参考下一小节编译项目并生成镜像来编译生成可烧入cc6ul的固件。不过建议还是要更改一下local.conf的默认下载目录和指定一下国内源码镜像源,以便不同项目在编译时可以用之前bitbake编译时已经下载的源。

要进行编译选项设置和文件系统定制,可以通过修改conf/local.conf来配置项目,包括:

  • 指定编译时的下载目录

DEY在编译时会从互联网下载所需对应版本的软件包,主要是linux和bsp的源码包,默认是下载到项目文件夹下的downloads目录。当你有多个项目时,重复下载相同的软件包会占用太多的硬盘空间,建议更改默认的下载位置。默认是#DL_DIR ?= “${TOPDIR}/downloads”,这里需要去掉注释,指向项目文件夹的上级目录的downloads。这样不同的项目都可以用之前下载的软件包,减少编译时间和硬盘占用的空间。

DL_DIR ?= "${TOPDIR}/../downloads"
  • 指定编译时的源码镜像

由于编译时会从互联网下载软件包,一些上游软件源托管在谷歌服务器等国内被墙的站点,当源码无法获取时,会导致编译失败。如果没有翻墙的条件,那么为项目指定一个软件包的镜像下载站点是个不错的选择。你可以指定为本机的目录,也可以是网络的镜像源。Digi中国为客户提供一个国内镜像网址:dey-mirror.eccee.com,可以配置在local.conf中直接使用。 您也可以下载整个源码压缩包,解压到上面到默认下载位置,对于DL_DIR指定目录中已经存在的软件包,编译器会自动略过而无需下载。

通常地,首次编译,您需要通过镜像源来在编译过程中生成downloads内的软件包。我们在后面也会提供另一种无需编译的方法,那就是直接下载打包好的downloads压缩包。 要指定软件包镜像源,在conf/local.conf中指定下面这些参数,以DEY 2.6为例:

SOURCE_MIRROR_URL ?= "http://dey-mirror.eccee.com:1080/bitbake-downloads"
INHERIT += "own-mirrors"
  • 默认的网络参数定制(etc/network/interfaces)

DEY允许您通过conf/local.conf文件为目标镜像配置默认的网络参数,也就是定制目标系统中的/etc/network/interfaces文件。 默认的配置如下:

ETH0_STATIC_IP ?= "192.168.42.30”
ETH1_STATIC_IP ?= "192.168.44.30" (if applicable)
WLAN0_STATIC_IP ?= "192.168.43.30" (if applicable)

对于有线网络,指定静态IP相关配置如下:

ETHn_STATIC_IP = "<ip address>"
ETHn_STATIC_NETMASK = "<netmask>"
ETHn_STATIC_GATEWAY = "<gateway ip address>"
ETHn_STATIC_DNS = "<dns server ip address>"

其中,n为0或1,取决于您的平台支持的网口个数。 同样地,对于无线网络指定静态IP:

WLAN0_STATIC_IP = "<ip address>"
WLAN0_STATIC_NETMASK = "<netmask>"
WLAN0_STATIC_GATEWAY = "<gateway ip address>"
WLAN0_STATIC_DNS = "<dns server ip address>"

如果是启用DHCP,则用下面配置

ETHn_MODE = "dhcp"
WLAN0_MODE = "dhcp"
  • 向目标镜像添加软件包

比如要添加strace,注意下面软件包名称前有空格

IMAGE_INSTALL_append = " strace"
  • 向目标镜像添加特性

DEY引入一些特性来简化系统定制,可以启用或关闭相关的特性来实现特定的功能组,这会批量添加所需功能的软件包。

EXTRA_IMAGE_FEATURES = "<feature-name>"

相关特性列表:

  *  dey-audio: Adds audio support to a platform.   
    * dey-gstreamer: Adds the gstreamer framework to a platform.
    * dey-network: Adds network applications and tools. You can configure some of the network applications in your conf/local.conf by doing:
    * dey-wireless: Includes wireless applications and drivers.
    * dey-bluetooth: Adds Bluetooth support.
    * dey-debug: Adds DEY debugging applications as memwatch and fbtest.
    * dey-examples: Adds DEY example applications.
    * dey-qt: Adds QT support. This feature is added by default in dey-image-graphical images.
  • 高级定制

文件系统定制进阶,可以参考DEY文件系统定制 当需要进一步定制系统时,建议创建一个新的layer, DEY中包含一个meta-custom的layer作为例子。您的meta-custom可以: *包含新的recipes,比如添加新的应用程序或新文件到文件系统中
*修改其它layer中现有的recipes,这可以通过添加一个.bbappend的recipe.也可以用来修改现有文件系统中的文件。
*创建新的目标镜像
*创建新的设备配置
*为您平台提供默认的内核配置或配置片段

参考资料 Yocto项目组有很好的系统开发相关文档供参考: * Yocto Project Board Support Package (BSP) Developer's Guide * Yocto Project Linux Kernel Development Manual * Yocto Project Development Manual * Yocto Project Reference Manual

要编译DEY镜像,在您的项目文件夹内使用下面bitbake命令

CC6或CC6UL用下面命令编译
bitbake dey-image-qt

旧版DEY 1.6的固件编译方法

旧版DEY 1.6的固件编译方法

而CC28在DEY1.6中的编译镜像命令是 bitbake dey-image-graphical

默认地,这将编译一个基于X11视窗并带QT库支持的镜像。编译时间根据电脑配置不同而略有不同,使用较新的高配置电脑,编译时间仍可能长达6个小时以上。因此,建议您在执行这个命令时做好让电脑整夜编译的准备。

如果只需要编译基于framebuffer并带QT库支持的镜像,需要在配置文件conf/local.conf中添加一条:

DISTRO_FEATURES_remove = "x11"

同样的命令执行编译过程,这将会生成一个不带X11视窗系统的镜像。 如果连LCD液晶屏显示都不需要,可以编译一个不带屏显支持的固件镜像:

bitbake core-image-base

编译好的镜像可以在项目文件夹下/tmp/deploy/images/ccimx6sbc中找到,这个目录包括编译生成以下这些文件:

  • 启动镜像,扩展名为vfat,实际上它是一个FAT格式的分区镜像,包含了Linux内核和驱动设备树文件。
  • 不同格式后缀的根文件系统镜像,包括:
    • ext4,一个ext4格式的分区镜像,可以烧到eMMC和SD卡中
    • sdcard,用于创建从SD卡启动的完整SD卡镜像
    • tar.bz2,一个根文件系统压缩包,可用于设置远程NFS启动
    • manifest,一个文本文件列出所有编译的包
  • UBoot镜像,.imx后缀,可以烧入eMMC或SD卡
  • Linux内核镜像,.bin后缀,可以烧入到已有的FAT启动分区
  • Linux内核设备树镜像,.dtb后缀,可以烧入到已有的FAT启动分区

您可以用Uboot命令把镜像写入eMMC或SD卡,从内置的flash或是外置的SD卡启动,请参考Uboot使用手册或DEY固件更新-核心板刷写新固件的操作指南

编译过程中,DEY会根据配置文件去网上自动下载所需的软件包,在项目文件夹下有一个downloads目录,里面是编译过程自动下载的一些软件和库。

如果编译不成功,通常是因为网速原因或是因为不能翻墙导至下载不到一些软件包,可以从下面不翻墙编译方法中提供的网盘上下载downloads目录的压缩文件dey24r1downloads.tgz解压到项目文件夹中,重新执行bitbake命令即可。

直接下载downloads压缩包

通过指定DEY所需软件包国内镜像源,客户无需翻墙就能编译DEY镜像。
碰到国内镜像源下在维护无法访问时,而所需一些软件包托管在被GFW封杀的境外服务器上,则会导致编译不成功。这时,如果您无法翻墙,可以从网盘上下载downloads目录的压缩文件并解压到项目文件夹中,再进行编译即可。 DEY 3.0编译后生成的downloads目录的压缩包可从下面地址下载: http://dey-mirror.eccee.com:1080/bitbake-downloads/dey3-with-tc/

如果您使用peyoot/PVPN进行翻墙后编译,那么事先用这个downloads放置在配置文件指定的目录下,可以省去许多包的下载过程,节约时间和速度。

不联网编译DEY

DEY编译时需要联网,以便下载所需的源码包,甚至有脚本会检则是否连网,把它作为能正常编译的前提条件。 为了在不联网时也能进行编译,需要一些技巧。 我们在本机建立一个源码下载的镜像源,然后在项目中配置好,以便无需互联网接入也可以编译镜像。在local.conf中配置好本地源镜像,

SOURCE_MIRROR_URL ?= "file:///home/you/dey-workspace/your-download-dir/" (请填实际的下载目录名)    
INHERIT += "own-mirrors"
BB_GENERATE_MIRROR_TARBALLS = "1"

先编译一次,然后在local.conf中加上

BB_NO_NETWORK = "1" 

这样,这个项目无需联网也能正常编译了。

由于许多开源上游软件的版本号是自动检测的,因此在编译过程还会有联网动作检查版本,不联网编译需要一些技巧来避免这个过程的联网动作失败导致编译不能通过。

如果您还没阅读如何定制文件系统,请先阅读本章节,它会指导您如何添加软件包,移除软件包,甚至查询当前配置中可添加的软件包有哪些,以及如何添加第三方Layer来扩展更多可集成到文件系统中的软件包等。

我们在快速上手指南或是固件升级的文档中会用到一些U-Boot的操作命令和参数,有关flash分区和U-Boot更详细的说明,请参考:DEY中的U-Boot命令和系统启动过程

dey-all-in-one是Digi中国区推出的开源项目,它是一个集成式的DEY系统开发环境,将DEY源码和DEY客户项目集成在一起,可以支持DEY2.6,DEY3.0,支持在本地同步开发多个DEY项目,并用git的方式有效地进行版本控制和管理,极大简化编译结果的发布过程。

建议在初步了解DEY系统开发过程和方法后,利用dey-all-in-one来作为统一的开发平台。

请进一步阅读DEY应用程序开发