SlideShare ist ein Scribd-Unternehmen logo
1 von 20
Downloaden Sie, um offline zu lesen
How to Build QML App for webOS
and Qt Creator webOS Plugin
Yunkwan Kim
yunkwan.kim@lge.com
LG Electronics
Contents
• App Development on webOS Open Source Edition
• Built-in QML App
• External QML app with QtCreator webOS plugin
How to Build QML App for webOS and Qt Creator webOS Plugin 2
App Development on webOS OSE
• Target Device : Raspberry Pi (RPi) 3 Model B / 4
– Use OpenEmbedded build of Yocto Project
• Support three type of app with different deploy location
• Development manners as location
– Built-in app : OE build
– External app : SDK tools to build and deploy
Built-in app
External app
Web app
QML app
Native app
Application type Deploy location
How to Build QML App for webOS and Qt Creator webOS Plugin 3
QML App Development
• QML apps are executed within application containers which wrap the Qt QML
engine.
• webOS QML plugins for QML applications
– qml-webos-bridge: A bridge to the Luna Bus, which allows QML apps to call luna-based
webOS services.
– qml-webos-framework : Provides window components such as WebOSWindow.
– qml-webos-components: Contains miscellaneous QML components.
• PmLog, PmTrace, … and FpsCounter.
※ Luna Bus, also called LS2, is a system bus used by webOS OSE as the IPC mechanism used between components in webOS.
How to Build QML App for webOS and Qt Creator webOS Plugin 4
How to Build QML App for webOS and Qt Creator webOS Plugin 5
Built-in QML App
• Built-in QML App Development Workflow
Implement
• Writing QML app co
de(main.qml)
Configure
• Configuring app me
tadata
(appinfo.json)
• Configuring the qm
ake project
(.pro)
Build
• Writing a recipe on
Yocto build
• Configuring local so
urce directory
• Building the app
Run
• Installing
• Running
• Verifying the app fu
nctionality
Deploy
• Adding app to build
recipe
• Building image
• Flashing image
Built-in QML App (cont.)
• QML App sample : com.example.app.qml
How to Build QML App for webOS and Qt Creator webOS Plugin 6
(click)
Implement
import QtQuick 2.4
import WebOSServices 1.0
import Eos.Window 0.1
import PmLog 1.0
WebOSWindow {
appId: "com.example.app.qml"
title: "QML app“
...
Service {
id: systemService
appId: "com.example.app.qml"
function getTime() {
call("luna://com.webos.service.systemservice","/clock/getTime","{}")
}
onResponse: {
var jsonObject = JSON.parse(payload);
pmLog.info("GETTIME", {"utc": jsonObject.utc});
mainText.text = "UTC : " + jsonObject.utc
}}
PmLog {
id: pmLog
context: "QMLApp"
Directory Structure main.qml
How to Build QML App for webOS and Qt Creator webOS Plugin 7
Configure
{
"id": "com.example.app.qml",
"version": "1.0.0",
"vendor": "My Company",
"type": "qml",
"main": "main.qml",
"title": "QML App",
"icon": "icon.png",
"requiredPermissions" : ["time"]
}
appinfo.json com.example.app.qml.pro
TEMPLATE = aux
!load(webos-variables):error("Cannot load webos-variables.prf")
# install
defined(WEBOS_INSTALL_WEBOS_APPLICATIONSDIR, var) {
INSTALL_APPDIR = 
$$WEBOS_INSTALL_WEBOS_APPLICATIONSDIR/com.example.app.qml
target.path = $$INSTALL_APPDIR
appinfo.path = $$INSTALL_APPDIR
appinfo.files = appinfo.json
base.path = $$INSTALL_APPDIR
base.files = main.qml
icon.path = $$INSTALL_APPDIR
icon.files = icon.png
INSTALLS += target appinfo base icon
}
- requiredPermissions :
Specify the group to which the external
service’s method called by the app belongs.
How to Build QML App for webOS and Qt Creator webOS Plugin 8
Build
Recipe File webos-local.conf
build-webos$ source oe-init-build-env
build-webos$ bitbake com.example.app.qml
INHERIT += "externalsrc"
PRJ_DIR = "/home/project/com.example.app.qml/"
EXTERNALSRC_pn-com.example.app.qml = "${PRJ_DIR}"
EXTERNALSRC_BUILD_pn-com.example.app.qml = "${PRJ_DIR}/build/"
PR_append_pn-com.example.app.qml =".local0"
• To build a component that is located on the local system, you must
specify the directory information
${PRJ_DIR}/oe-workdir/deploy-ipks/raspberrypi3/
com.example.app.qml_1.0.0-r0.local0_raspberrypi3.ipk
Location of output package
SUMMARY = "QML App"
SECTION = "webos/apps"
DEPENDS = "qtbase qtdeclarative "
DEPENDS += "qt-features-webos pmloglib"
RDEPENDS_${PN} += "qml-webos-framework"
RDEPENDS_${PN} += "qml-webos-bridge"
WEBOS_VERSION="1.0.0"
PR = "r0"
inherit webos_qmake5
inherit webos_submissions
inherit webos_app
FILES_${PN} += "${webos_applicationsdir}"
Build and packaging
How to Build QML App for webOS and Qt Creator webOS Plugin 9
Run and Verify
• Copy com.example.app.qml_1.0.0-r0.local0_raspberrypi3.ipk to target
• opkg install, reboot
• Launch the app on Launcher
root@raspberrypi3:/# luna-send -i -f
luna://com.webos.service.applicationmanager/running '{}'
{
"subscribed": true,
"running": [
{
"id": "com.example.app.qml",
"webprocessid": "",
"defaultWindowType": "card",
"appType": "native_qml",
"processId": "2779"
}
],
"returnValue": true
}
Launch using luna command
How to Build QML App for webOS and Qt Creator webOS Plugin 10
Deploy to image
...
RDEPENDS_${PN} = " 
activitymanager 
audiod 
...
com.example.app.qml 
…
build-webos/BUILD/deploy/images/raspberrypi3/webos-image-raspberrypi3-master-yyyymmddhhmmss.rpi-sdimg
build-webos$ source oe-init-build-env
build-webos$ bitbake webos-image
Location of output package
Build image
• Add QML app to the package recipe file : packagegroup-webos-extended.bb
Update image recipe
How to Build QML App for webOS and Qt Creator webOS Plugin 11
External QML app with QtCreator webOS plugin
• Qt Creator webOS Plugin
• webOS SDK toolchain set from ‘populate_sdk’
• webOS CLI
• Packaging, installation, launching
• Templates
• QML only ( .qml )
• Hybrid app ( .qml + .cpp)
• Debugging QML application
• Launching via qml-runner-dev
Host
Qt Creator
webOS plugin
webOS
SDK
CLITemplates
Target
webOS OSE
Luna command
qml-runner
How to Build QML App for webOS and Qt Creator webOS Plugin 12
How to Build QML App for webOS and Qt Creator webOS Plugin 13
External QML app with QtCreator webOS plugin (cont.)
• QML App Development Workflow with QtCreator
Setting
Options
• Set path and
update Kits
Implement
• Create project
• Writing QML ap
p code
(main.qml)
Configure
• Configuring ap
p metadata
(appinfo.json)
Build Run
• packaging the a
pp
• Installing
• Running / Debu
gging
Deploy
• Writing a recipe
on Yocto build
• Adding app to b
uild recipe
• Building image
• Flashing image
Setting Options
• Set webOS SDK path
– Generated by ‘populate_sdk’ build
• Set CLI path
– Used for device management,
package, install and launch
• Correct setting make auto-
detected configs
– Devices, Qt Version, Compiler,
debugger and Kit
How to Build QML App for webOS and Qt Creator webOS Plugin 14
Setting Options (cont.)
• webOS Device
– Add Auto-detected webOS devices
– Available to access using
ssh and CLI tools
How to Build QML App for webOS and Qt Creator webOS Plugin 15
Setting Options (cont.)
• Kit for webOS target
– Configs and Environment for
webOS SDK target build
How to Build QML App for webOS and Qt Creator webOS Plugin 16
How to Build QML App for webOS and Qt Creator webOS Plugin 17
Project Creation using templates
• webOS QML/Qt application
• QML only ( .qml )
• Hybrid app ( .qml + .cpp)
• Native (.cpp)
• webOS Device templates wizard
– Location
– Kits
– Summary
Run Configurations
• Deployment using CLI
• Run
– ares-launch : CLI tool
– qml-runner : QML application
launcher in webOS
– qml-runner-dev : enabled debug
How to Build QML App for webOS and Qt Creator webOS Plugin 18
How to Build QML App for webOS and Qt Creator webOS Plugin 19
Debugging
• Start debugging of
Qml-Runner-Dev
• QML debugging
available
– Inspector
– Breakpoint
– QML Debugger Console
Summary
• Introduce QML application development for webOS OSE
– https://www.webosose.org
• Different workflow to deploy location
– Built-in
• Build and package : OE build
• Deploy : copying file and opkg
– External
• Build and package : CLI tools
• Deploy : CLI tool
• Future plan
– Support Built-in app development
– webOS plugin will be available in https://github.com/webosose
– Support QmlLive for webOS
How to Build QML App for webOS and Qt Creator webOS Plugin 20

Weitere ähnliche Inhalte

Was ist angesagt?

Angular Libraries & NPM
 Angular Libraries & NPM Angular Libraries & NPM
Angular Libraries & NPMKnoldus Inc.
 
What Is An SDK?
What Is An SDK?What Is An SDK?
What Is An SDK?CleverTap
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafThymeleaf
 
Typescript Fundamentals
Typescript FundamentalsTypescript Fundamentals
Typescript FundamentalsSunny Sharma
 
02. decreto supremo nº 184 2008-ef
02. decreto supremo nº 184 2008-ef02. decreto supremo nº 184 2008-ef
02. decreto supremo nº 184 2008-efTio Julio Moreno
 
Using the WordPress REST API and Gatsby.js
Using the WordPress REST API and Gatsby.jsUsing the WordPress REST API and Gatsby.js
Using the WordPress REST API and Gatsby.jsIndigo Tree Digital
 
Selenium interview-questions-freshers
Selenium interview-questions-freshersSelenium interview-questions-freshers
Selenium interview-questions-freshersNaga Mani
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScriptNascenia IT
 
Selenium WebDriver with C#
Selenium WebDriver with C#Selenium WebDriver with C#
Selenium WebDriver with C#srivinayak
 
Jetpack compose
Jetpack composeJetpack compose
Jetpack composeLutasLin
 
Let's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptLet's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptMathieu Savy
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Javaamaankhan
 
Deep dive into Xtext scoping local and global scopes explained
Deep dive into Xtext scoping local and global scopes explainedDeep dive into Xtext scoping local and global scopes explained
Deep dive into Xtext scoping local and global scopes explainedHolger Schill
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java worldAshok Kumar
 

Was ist angesagt? (20)

Angular Libraries & NPM
 Angular Libraries & NPM Angular Libraries & NPM
Angular Libraries & NPM
 
Angular 14.pptx
Angular 14.pptxAngular 14.pptx
Angular 14.pptx
 
What Is An SDK?
What Is An SDK?What Is An SDK?
What Is An SDK?
 
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with ThymeleafSpring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
Spring I/O 2012: Natural Templating in Spring MVC with Thymeleaf
 
Typescript Fundamentals
Typescript FundamentalsTypescript Fundamentals
Typescript Fundamentals
 
XSLT
XSLTXSLT
XSLT
 
02. decreto supremo nº 184 2008-ef
02. decreto supremo nº 184 2008-ef02. decreto supremo nº 184 2008-ef
02. decreto supremo nº 184 2008-ef
 
Using the WordPress REST API and Gatsby.js
Using the WordPress REST API and Gatsby.jsUsing the WordPress REST API and Gatsby.js
Using the WordPress REST API and Gatsby.js
 
Introduction to Selenium Web Driver
Introduction to Selenium Web DriverIntroduction to Selenium Web Driver
Introduction to Selenium Web Driver
 
Selenium interview-questions-freshers
Selenium interview-questions-freshersSelenium interview-questions-freshers
Selenium interview-questions-freshers
 
Qt 5 - C++ and Widgets
Qt 5 - C++ and WidgetsQt 5 - C++ and Widgets
Qt 5 - C++ and Widgets
 
Advanced JavaScript
Advanced JavaScriptAdvanced JavaScript
Advanced JavaScript
 
Selenium WebDriver with C#
Selenium WebDriver with C#Selenium WebDriver with C#
Selenium WebDriver with C#
 
Jetpack compose
Jetpack composeJetpack compose
Jetpack compose
 
Let's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScriptLet's discover React and Redux with TypeScript
Let's discover React and Redux with TypeScript
 
xUnit
xUnitxUnit
xUnit
 
Android Application Development Using Java
Android Application Development Using JavaAndroid Application Development Using Java
Android Application Development Using Java
 
JQuery UI
JQuery UIJQuery UI
JQuery UI
 
Deep dive into Xtext scoping local and global scopes explained
Deep dive into Xtext scoping local and global scopes explainedDeep dive into Xtext scoping local and global scopes explained
Deep dive into Xtext scoping local and global scopes explained
 
Jenkins for java world
Jenkins for java worldJenkins for java world
Jenkins for java world
 

Ähnlich wie Qtws19 how-to-build-qml-app-for-webos

Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote ConferenceHamida Rebai Trabelsi
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Patrick Chanezon
 
Build containerized application using Docker and Azure.pdf
Build containerized application using Docker and Azure.pdfBuild containerized application using Docker and Azure.pdf
Build containerized application using Docker and Azure.pdfHamida Rebai Trabelsi
 
Hybrid app development frameworks
Hybrid app development frameworksHybrid app development frameworks
Hybrid app development frameworksSquash Apps Pvt Ltd
 
ACDKOCHI19 - CI / CD using AWS Developer Tools
ACDKOCHI19 - CI / CD using AWS Developer ToolsACDKOCHI19 - CI / CD using AWS Developer Tools
ACDKOCHI19 - CI / CD using AWS Developer ToolsAWS User Group Kochi
 
SoapUI Training in Bangalore
SoapUI Training in BangaloreSoapUI Training in Bangalore
SoapUI Training in BangaloreTIB Academy
 
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...Neven Cvetković
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .netIbon Landa
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...Jérôme Petazzoni
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryQAware GmbH
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.jsmattpardee
 
Best Practices with WSO2 Developer Studio
Best Practices with WSO2 Developer Studio Best Practices with WSO2 Developer Studio
Best Practices with WSO2 Developer Studio WSO2
 
CI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopCI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopBhuvaneswari Subramani
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti
 
Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMartinSotirov
 
Containers as a Service with Docker
Containers as a Service with DockerContainers as a Service with Docker
Containers as a Service with DockerDocker, Inc.
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Patrick Chanezon
 
The App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxThe App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxNebulaworks
 

Ähnlich wie Qtws19 how-to-build-qml-app-for-webos (20)

Rome .NET Conference 2024 - Remote Conference
Rome .NET Conference 2024  - Remote ConferenceRome .NET Conference 2024  - Remote Conference
Rome .NET Conference 2024 - Remote Conference
 
Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016Docker Container As A Service - JAX 2016
Docker Container As A Service - JAX 2016
 
0507 057 01 98 * Adana Klima Tamir Servisi
0507 057 01 98 * Adana Klima Tamir Servisi0507 057 01 98 * Adana Klima Tamir Servisi
0507 057 01 98 * Adana Klima Tamir Servisi
 
Build containerized application using Docker and Azure.pdf
Build containerized application using Docker and Azure.pdfBuild containerized application using Docker and Azure.pdf
Build containerized application using Docker and Azure.pdf
 
Hybrid app development frameworks
Hybrid app development frameworksHybrid app development frameworks
Hybrid app development frameworks
 
ACDKOCHI19 - CI / CD using AWS Developer Tools
ACDKOCHI19 - CI / CD using AWS Developer ToolsACDKOCHI19 - CI / CD using AWS Developer Tools
ACDKOCHI19 - CI / CD using AWS Developer Tools
 
SoapUI Training in Bangalore
SoapUI Training in BangaloreSoapUI Training in Bangalore
SoapUI Training in Bangalore
 
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
Cloud Foundry Summit Europe 2018 - Deveveloper Experience with Cloud Foundry ...
 
Open source and cross platform .net
Open source and cross platform .netOpen source and cross platform .net
Open source and cross platform .net
 
From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...From development environments to production deployments with Docker, Compose,...
From development environments to production deployments with Docker, Compose,...
 
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud FoundryCloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
Cloud Platforms "demystified": Docker, Kubernetes, Knative & Cloud Foundry
 
Building production-quality apps with Node.js
Building production-quality apps with Node.jsBuilding production-quality apps with Node.js
Building production-quality apps with Node.js
 
Best Practices with WSO2 Developer Studio
Best Practices with WSO2 Developer Studio Best Practices with WSO2 Developer Studio
Best Practices with WSO2 Developer Studio
 
CI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online WorkshopCI CD using AWS Developer Tools Online Workshop
CI CD using AWS Developer Tools Online Workshop
 
Mihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate EverythingMihai Criveti - PyCon Ireland - Automate Everything
Mihai Criveti - PyCon Ireland - Automate Everything
 
Mobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to NativeMobile Vue.js – From PWA to Native
Mobile Vue.js – From PWA to Native
 
Containers as a Service with Docker
Containers as a Service with DockerContainers as a Service with Docker
Containers as a Service with Docker
 
Docker Container As A Service - March 2016
Docker Container As A Service - March 2016Docker Container As A Service - March 2016
Docker Container As A Service - March 2016
 
The App Developer's Kubernetes Toolbox
The App Developer's Kubernetes ToolboxThe App Developer's Kubernetes Toolbox
The App Developer's Kubernetes Toolbox
 
JavaScript on the Desktop
JavaScript on the DesktopJavaScript on the Desktop
JavaScript on the Desktop
 

Kürzlich hochgeladen

Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationWave PLM
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfsteffenkarlsson2
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfDeskTrack
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...Alluxio, Inc.
 
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024Primacy Infotech
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Soroosh Khodami
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Andreas Granig
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMarkus Moeller
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabbereGrabber
 
10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdfkalichargn70th171
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Henry Schreiner
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMok TH
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAlluxio, Inc.
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfFurqanuddin10
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfmbmh111980
 
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...OnePlan Solutions
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersEmilyJiang23
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...rajkumar669520
 

Kürzlich hochgeladen (20)

AI Hackathon.pptx
AI                        Hackathon.pptxAI                        Hackathon.pptx
AI Hackathon.pptx
 
Crafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM IntegrationCrafting the Perfect Measurement Sheet with PLM Integration
Crafting the Perfect Measurement Sheet with PLM Integration
 
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdfStrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
StrimziCon 2024 - Transition to Apache Kafka on Kubernetes with Strimzi.pdf
 
Workforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdfWorkforce Efficiency with Employee Time Tracking Software.pdf
Workforce Efficiency with Employee Time Tracking Software.pdf
 
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
AI/ML Infra Meetup | Improve Speed and GPU Utilization for Model Training & S...
 
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
Odoo vs Shopify: Why Odoo is Best for Ecommerce Website Builder in 2024
 
Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024Secure Software Ecosystem Teqnation 2024
Secure Software Ecosystem Teqnation 2024
 
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024Automate your OpenSIPS config tests - OpenSIPS Summit 2024
Automate your OpenSIPS config tests - OpenSIPS Summit 2024
 
Microsoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdfMicrosoft365_Dev_Security_2024_05_16.pdf
Microsoft365_Dev_Security_2024_05_16.pdf
 
How to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabberHow to install and activate eGrabber JobGrabber
How to install and activate eGrabber JobGrabber
 
10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf10 Essential Software Testing Tools You Need to Know About.pdf
10 Essential Software Testing Tools You Need to Know About.pdf
 
Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024Modern binary build systems - PyCon 2024
Modern binary build systems - PyCon 2024
 
Malaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptxMalaysia E-Invoice digital signature docpptx
Malaysia E-Invoice digital signature docpptx
 
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAGAI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
AI/ML Infra Meetup | Reducing Prefill for LLM Serving in RAG
 
CompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdfCompTIA Security+ (Study Notes) for cs.pdf
CompTIA Security+ (Study Notes) for cs.pdf
 
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdfMastering Windows 7 A Comprehensive Guide for Power Users .pdf
Mastering Windows 7 A Comprehensive Guide for Power Users .pdf
 
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
Optimizing Operations by Aligning Resources with Strategic Objectives Using O...
 
What need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java DevelopersWhat need to be mastered as AI-Powered Java Developers
What need to be mastered as AI-Powered Java Developers
 
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
Facemoji Keyboard released its 2023 State of Emoji report, outlining the most...
 
Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024Top Mobile App Development Companies 2024
Top Mobile App Development Companies 2024
 

Qtws19 how-to-build-qml-app-for-webos

  • 1. How to Build QML App for webOS and Qt Creator webOS Plugin Yunkwan Kim yunkwan.kim@lge.com LG Electronics
  • 2. Contents • App Development on webOS Open Source Edition • Built-in QML App • External QML app with QtCreator webOS plugin How to Build QML App for webOS and Qt Creator webOS Plugin 2
  • 3. App Development on webOS OSE • Target Device : Raspberry Pi (RPi) 3 Model B / 4 – Use OpenEmbedded build of Yocto Project • Support three type of app with different deploy location • Development manners as location – Built-in app : OE build – External app : SDK tools to build and deploy Built-in app External app Web app QML app Native app Application type Deploy location How to Build QML App for webOS and Qt Creator webOS Plugin 3
  • 4. QML App Development • QML apps are executed within application containers which wrap the Qt QML engine. • webOS QML plugins for QML applications – qml-webos-bridge: A bridge to the Luna Bus, which allows QML apps to call luna-based webOS services. – qml-webos-framework : Provides window components such as WebOSWindow. – qml-webos-components: Contains miscellaneous QML components. • PmLog, PmTrace, … and FpsCounter. ※ Luna Bus, also called LS2, is a system bus used by webOS OSE as the IPC mechanism used between components in webOS. How to Build QML App for webOS and Qt Creator webOS Plugin 4
  • 5. How to Build QML App for webOS and Qt Creator webOS Plugin 5 Built-in QML App • Built-in QML App Development Workflow Implement • Writing QML app co de(main.qml) Configure • Configuring app me tadata (appinfo.json) • Configuring the qm ake project (.pro) Build • Writing a recipe on Yocto build • Configuring local so urce directory • Building the app Run • Installing • Running • Verifying the app fu nctionality Deploy • Adding app to build recipe • Building image • Flashing image
  • 6. Built-in QML App (cont.) • QML App sample : com.example.app.qml How to Build QML App for webOS and Qt Creator webOS Plugin 6 (click)
  • 7. Implement import QtQuick 2.4 import WebOSServices 1.0 import Eos.Window 0.1 import PmLog 1.0 WebOSWindow { appId: "com.example.app.qml" title: "QML app“ ... Service { id: systemService appId: "com.example.app.qml" function getTime() { call("luna://com.webos.service.systemservice","/clock/getTime","{}") } onResponse: { var jsonObject = JSON.parse(payload); pmLog.info("GETTIME", {"utc": jsonObject.utc}); mainText.text = "UTC : " + jsonObject.utc }} PmLog { id: pmLog context: "QMLApp" Directory Structure main.qml How to Build QML App for webOS and Qt Creator webOS Plugin 7
  • 8. Configure { "id": "com.example.app.qml", "version": "1.0.0", "vendor": "My Company", "type": "qml", "main": "main.qml", "title": "QML App", "icon": "icon.png", "requiredPermissions" : ["time"] } appinfo.json com.example.app.qml.pro TEMPLATE = aux !load(webos-variables):error("Cannot load webos-variables.prf") # install defined(WEBOS_INSTALL_WEBOS_APPLICATIONSDIR, var) { INSTALL_APPDIR = $$WEBOS_INSTALL_WEBOS_APPLICATIONSDIR/com.example.app.qml target.path = $$INSTALL_APPDIR appinfo.path = $$INSTALL_APPDIR appinfo.files = appinfo.json base.path = $$INSTALL_APPDIR base.files = main.qml icon.path = $$INSTALL_APPDIR icon.files = icon.png INSTALLS += target appinfo base icon } - requiredPermissions : Specify the group to which the external service’s method called by the app belongs. How to Build QML App for webOS and Qt Creator webOS Plugin 8
  • 9. Build Recipe File webos-local.conf build-webos$ source oe-init-build-env build-webos$ bitbake com.example.app.qml INHERIT += "externalsrc" PRJ_DIR = "/home/project/com.example.app.qml/" EXTERNALSRC_pn-com.example.app.qml = "${PRJ_DIR}" EXTERNALSRC_BUILD_pn-com.example.app.qml = "${PRJ_DIR}/build/" PR_append_pn-com.example.app.qml =".local0" • To build a component that is located on the local system, you must specify the directory information ${PRJ_DIR}/oe-workdir/deploy-ipks/raspberrypi3/ com.example.app.qml_1.0.0-r0.local0_raspberrypi3.ipk Location of output package SUMMARY = "QML App" SECTION = "webos/apps" DEPENDS = "qtbase qtdeclarative " DEPENDS += "qt-features-webos pmloglib" RDEPENDS_${PN} += "qml-webos-framework" RDEPENDS_${PN} += "qml-webos-bridge" WEBOS_VERSION="1.0.0" PR = "r0" inherit webos_qmake5 inherit webos_submissions inherit webos_app FILES_${PN} += "${webos_applicationsdir}" Build and packaging How to Build QML App for webOS and Qt Creator webOS Plugin 9
  • 10. Run and Verify • Copy com.example.app.qml_1.0.0-r0.local0_raspberrypi3.ipk to target • opkg install, reboot • Launch the app on Launcher root@raspberrypi3:/# luna-send -i -f luna://com.webos.service.applicationmanager/running '{}' { "subscribed": true, "running": [ { "id": "com.example.app.qml", "webprocessid": "", "defaultWindowType": "card", "appType": "native_qml", "processId": "2779" } ], "returnValue": true } Launch using luna command How to Build QML App for webOS and Qt Creator webOS Plugin 10
  • 11. Deploy to image ... RDEPENDS_${PN} = " activitymanager audiod ... com.example.app.qml … build-webos/BUILD/deploy/images/raspberrypi3/webos-image-raspberrypi3-master-yyyymmddhhmmss.rpi-sdimg build-webos$ source oe-init-build-env build-webos$ bitbake webos-image Location of output package Build image • Add QML app to the package recipe file : packagegroup-webos-extended.bb Update image recipe How to Build QML App for webOS and Qt Creator webOS Plugin 11
  • 12. External QML app with QtCreator webOS plugin • Qt Creator webOS Plugin • webOS SDK toolchain set from ‘populate_sdk’ • webOS CLI • Packaging, installation, launching • Templates • QML only ( .qml ) • Hybrid app ( .qml + .cpp) • Debugging QML application • Launching via qml-runner-dev Host Qt Creator webOS plugin webOS SDK CLITemplates Target webOS OSE Luna command qml-runner How to Build QML App for webOS and Qt Creator webOS Plugin 12
  • 13. How to Build QML App for webOS and Qt Creator webOS Plugin 13 External QML app with QtCreator webOS plugin (cont.) • QML App Development Workflow with QtCreator Setting Options • Set path and update Kits Implement • Create project • Writing QML ap p code (main.qml) Configure • Configuring ap p metadata (appinfo.json) Build Run • packaging the a pp • Installing • Running / Debu gging Deploy • Writing a recipe on Yocto build • Adding app to b uild recipe • Building image • Flashing image
  • 14. Setting Options • Set webOS SDK path – Generated by ‘populate_sdk’ build • Set CLI path – Used for device management, package, install and launch • Correct setting make auto- detected configs – Devices, Qt Version, Compiler, debugger and Kit How to Build QML App for webOS and Qt Creator webOS Plugin 14
  • 15. Setting Options (cont.) • webOS Device – Add Auto-detected webOS devices – Available to access using ssh and CLI tools How to Build QML App for webOS and Qt Creator webOS Plugin 15
  • 16. Setting Options (cont.) • Kit for webOS target – Configs and Environment for webOS SDK target build How to Build QML App for webOS and Qt Creator webOS Plugin 16
  • 17. How to Build QML App for webOS and Qt Creator webOS Plugin 17 Project Creation using templates • webOS QML/Qt application • QML only ( .qml ) • Hybrid app ( .qml + .cpp) • Native (.cpp) • webOS Device templates wizard – Location – Kits – Summary
  • 18. Run Configurations • Deployment using CLI • Run – ares-launch : CLI tool – qml-runner : QML application launcher in webOS – qml-runner-dev : enabled debug How to Build QML App for webOS and Qt Creator webOS Plugin 18
  • 19. How to Build QML App for webOS and Qt Creator webOS Plugin 19 Debugging • Start debugging of Qml-Runner-Dev • QML debugging available – Inspector – Breakpoint – QML Debugger Console
  • 20. Summary • Introduce QML application development for webOS OSE – https://www.webosose.org • Different workflow to deploy location – Built-in • Build and package : OE build • Deploy : copying file and opkg – External • Build and package : CLI tools • Deploy : CLI tool • Future plan – Support Built-in app development – webOS plugin will be available in https://github.com/webosose – Support QmlLive for webOS How to Build QML App for webOS and Qt Creator webOS Plugin 20