一、新建文件夹并进入Alexa_hmi_demo
目录下
1 2 3 4 5 $ cd /home/pattenkuo/AGL/meta-agl-demo/recipes-demo-hmi $ mkdir Alexa_hmi_demo $ cd Alexa_hmi_demo
二、新建Alexa_hmi_demo.bb
文件和Alexa_hmi_demo
文件夹。
1 2 $ mkdir Alexa_hmi_demo $ vi Alexa_hmi_demo.bb
Alexa_hmi_demo.bb
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 SUMMARY = "AGL Reference Alexa_hmi_demo HMI application." DESCRIPTION = "This application provides the HMI part of the SmartDeviceLink (SDL). It uses Generic HMI provided by SDL project." SECTION = "apps" #LICENSE = "GPLv2" #LIC_FILES_CHKSUM = "file://COPYING;md5=947b2d60ca3872e172034438e9801200" LICENSE = "CLOSED" #LIC_FILES_CHKSUM = "" DEPENDS += "libqtappfw qtquickcontrols2 qtwebsockets qtbase qtwebview qtwebengine" DEPENDS += "virtual/libhomescreen qlibwindowmanager qtvirtualkeyboard" inherit qmake5 pkgconfig aglwgt systemd # Refer local subdirectory for now #SRCREV = "" #SRC_URI = "" SRC_URI += " \ file://*;subdir=git \ " PN="Alexa_hmi_demo" S = "${WORKDIR}/git" # Explicitly specify hmi content and runtime dependencies. do_install() { install -d ${D}/usr/share/${PN} cp -r -f ${WORKDIR}/git/Alexa_hmi/* ${D}/usr/share/${PN}/ } PATH_prepend = "${STAGING_DIR_NATIVE}${OE_QMAKE_PATH_QT_BINS}:"
三、进入Alexa_hmi_demo
目录下,并新建app
、package
、Alexa_hmi_demo
三个文件夹和Alexa_hmi_demo.pro
文件
1 2 3 4 5 $ cd Alexa_hmi_demo $ mkdir app package Alexa_hmi_demo $ vi Alexa_hmi_demo.pro
Alexa_hmi_demo.pro
文件内容如下所示:
1 2 3 4 TEMPLATE = subdirs SUBDIRS = app package package.depends += app
四、进入package
目录下,并新建config.xml
、package.pro
两个文件并把应用图标icon.svg
文件拖入,以下仅演示前两个文件内容,应用图标自己拖入:
1 2 3 4 5 $ cd package $ vi config.xml $ vi package.pro
config.xml
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?xml version="1.0" encoding="UTF-8"?> <widget xmlns="http://www.w3.org/ns/widgets" id="Alexa_hmi_demo" version="1.0"> <name>Alexa_hmi_demo</name> <icon src="icon.svg"/> <content src="bin/Alexa_hmi_demo" type="application/vnd.agl.native"/> <description>This is a Alexa_hmi demo application for homescreen</description> <author>junma</author> <license>APL 2.0</license> <feature name="urn:AGL:widget:required-api"> <param name="homescreen" value="ws" /> <param name="windowmanager" value="ws" /> </feature> <feature name="urn:AGL:widget:required-permission"> <param name="urn:AGL:permission::public:no-htdocs" value="required" /> </feature> </widget>
package.pro
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 DISTFILES = icon.svg config.xml copy_icon.target = $$OUT_PWD/root/icon.svg copy_icon.depends = $$_PRO_FILE_PWD_/icon.svg copy_icon.commands = $(COPY_FILE) \"$$replace(copy_icon.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_icon.target, /, $$QMAKE_DIR_SEP)\" QMAKE_EXTRA_TARGETS += copy_icon PRE_TARGETDEPS += $$copy_icon.target copy_config.target = $$OUT_PWD/root/config.xml copy_config.depends = $$_PRO_FILE_PWD_/config.xml copy_config.commands = $(COPY_FILE) \"$$replace(copy_config.depends, /, $$QMAKE_DIR_SEP)\" \"$$replace(copy_config.target, /, $$QMAKE_DIR_SEP)\" QMAKE_EXTRA_TARGETS += copy_config PRE_TARGETDEPS += $$copy_config.target wgt.target = package wgt.commands = wgtpkg-pack -f -o Alexa_hmi_demo.wgt root QMAKE_EXTRA_TARGETS += wgt deploy.files = Alexa_hmi_demo.wgt deploy.path = /usr/AGL/apps/autoinstall INSTALLS += deploy
五、进入app
目录下,并新建app.pri
、app.pro
、deployment.pri
、TestWebEngine.pri
四个文件:
1 2 3 4 5 6 $ cd ../app $ vi app.pri $ vi app.pro $ vi deployment.pri
app.pri
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 TEMPLATE = app QMAKE_LFLAGS += "-Wl,--hash-style=gnu -Wl,--as-needed" load(configure) qtCompileTest(libhomescreen) config_libhomescreen { CONFIG += link_pkgconfig PKGCONFIG += homescreen DEFINES += HAVE_LIBHOMESCREEN } DESTDIR = $${OUT_PWD}/../package/root/bin
app.pro
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 TARGET = Alexa_hmi_demo QT = quickcontrols2 websockets dbus qml quick webview webengine webenginewidgets SOURCES = main.cpp CONFIG += link_pkgconfig PKGCONFIG += libhomescreen qlibwindowmanager qtappfw RESOURCES += qml.qrc # Additional import path used to resolve QML modules in Qt Creator's code model QML_IMPORT_PATH = # Default rules for deployment. include(app.pri)
deployment.pri
文件内容如下所示:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 unix:!android { isEmpty(target.path) { qnx { target.path = /tmp/$${TARGET}/bin } else { target.path = /opt/$${TARGET}/bin } export(target.path) } INSTALLS += target } export(INSTALLS)
六、拖入你已写好的Qt项目三个文件main.cpp
、main.qml
、qml.qrc
到当前app
目录下,代码保密需要,这里不再演示文件内容。
七、把你的网页文件拖进与app
同级的Alexa_hmi_demo
文件夹下。
八、现在终于可以编译了!进入AGL下的build文件夹下,开始编译吧!
1 2 $ bitbake -c compile -f -v sdl-hmi-demo //如kernel是 “linux-renesas”
九、成功生成sdl-hmi-demo.wgt
安装包,到/home/pattenkuo/AGL/build/tmp/work/aarch64-agl-linux/Alexa_hmi_demo/hmi-demo/build/package
目录下可以看到。