SlideShare a Scribd company logo
Getting Started with coding for
Jolla Sailfish OS
Artem Marchenko
@AgileArtem
29.03.2014, Tampere, Finland
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Today
• Quick start on emulator
– And how to run on device
• Structure of the build process and artifacts
• Packaging for app store
• Troubleshooting / debugging
• Support channels and further questions
29.03.14
@AgileArtem
http://www.codingsubmarine.com
QUICK START
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Preparing SDK
1. Get Python (project renaming script will need it)
2. Install SDK https://sailfishos.org/develop.html
3. Run its Updater ( Help -> Start Updater)
4. Get HelloWorld Pro from
https://github.com/amarchen/helloworld-pro-
sailfish and open it (you need a project for Updating
part of SDK)
– Configure for all available platforms
5. Rename project into harbour-my-great-app via
rename-to-my-project.py
6. Start Mer build machine (can take a couple of clicks)
7. Install more updates via Sailfish OS tab
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Starting app on emulator
• Set i486
platform as
active
• Deploy as
RPM
• Run
subproject src
29.03.14
Start emulator and app
29.03.14
Running tests on emulator
• Run
/usr/share/tst-
harbour-my-
great-
app/runTestsOnD
evice.sh
– As README.md says
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Connecting device
• https://sailfishos.org/develop-firstapp-article.html covers it
well
– Works fine on WiFi
– Couldn’t make it work via USB
29.03.14
@AgileArtemhttp://www.codingsubmarine.co
m
Then run on device
• Same as on
emulator
• Just don’t
forget to
select
armv7
platform
29.03.14
Continue in QML
29.03.14
@AgileArtem
http://www.codingsubmarine.com
STRUCTURE OF THE BUILD PROCESS
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Project directories
Your PC
Mer build
machine
Jolla device/
emulator
/Users/artem/
projects/great-app/
/home/mersdk/
projects/great-app/
/home/mersdk/
projects/build-great-
app-MerSDK.../
/home/deploy/
installroot/usr/share/
harbour-great-app/...
/home/deploy/
installroot/usr/bin/
harbour-great-app
/usr/bin/harbour-
great-app
/usr/share/harbour-
great-app/...
Same dir
Compile
INSTALLS
phase of
qmake build
Default comes from
~/mersdk/targets/Sailfish.../usr/
share/qt5/mkspecs/
features/sailfishapp.prf
RPM
package
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Building-packaging
harbour-great-
app.yaml
gstreamer-devel
libresourceqt5
sailfishapp
Build-time
dependencies
libsailfishapp
Runtime
dependencies
/usr/bin/harbour-great-app
/usr/share/icons/...
/usr/share/harbour-great-app/..
Files in main
package
harbour-great-
app-tests
subpackage
/usr/bin/tst-harbour-great-app
/usr/share/tst-harbour-great-app/...
harbour-great-
app-fake
subpackage
Garbage other packages
don't need
great-app.pro
source files
resources
harbour-great-
app.spec
Extra detais
Tell we are not
requiring/providing
anything not allowed
Pass QMake vars
E.g. version number
Or dir with platform-specific
resources
for bundling into app
/home/deploy/installroot/
usr/bin/harbour-great-app
...
on Mer build machine
INSTALLS
harbour-great-app-0.1-1.armv7hl.rpm
harbour-great-app-test-0.1-1.armv7hl.rpm
harbour-great-app-fake-0.1-1.armv7hl.rpm
RPM packaging
To App Store!
29.03.14
@AgileArtem
http://www.codingsubmarine.com
PACKAGING FOR APP STORE
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Build RPM package
1. Choose ARMV7
platform
2. *Clean* not to package
i486 binaries
3. Deploy RPM
Validate
Submit to harbour
• http://harbour.jolla.com
• Icon templates can be found at
https://sailfishos.org/apps_icons.html
– As mentioned in README.md
• You’ll need screenshots
– Use Screenshot or SailshotMe app on device
– Upload to Dropbox via Sailbox app
29.03.14
@AgileArtem
http://www.codingsubmarine.com
TROUBLESHOOTING DEPLOYMENTS
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Troubleshooting failed deployments
and not runnable apps
• Examine the content of the Mer machine and
emulator directories. And device too if you need
• Is covered well at https://sailfishos.org/develop-
faq.html
• Mer: ssh -p 2222 -i
~/SailfishOS/vmshare/ssh/private_ke
ys/engine/root root@localhost
• Emulator: ssh -p 2223 -i
~/SailfishOS/vmshare/ssh/private_ke
ys/SailfishOS_Emulator/root
root@localhost
• Real device: ssh nemo@192.168.1.38
– Address and password from the Developer Settings
on device
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Debugging
• C++ debugging doesn’t work from IDE
• If you comfortable with GDB, it is supposed to
work
• Rumors tell that QML debugging does
– I failed to get it working
• Use logging
• Use automated tests
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Getting support and further questions
• IRC: #sailfishos on freenode
(irc.freenode.net)
• devel-subscribe@lists.sailfishos.org
• This slideset –
http://www.codingsubmarine.com/tag/class/
@AgileArtem on twitter
29.03.14
@AgileArtem
http://www.codingsubmarine.com
Artem needs help
• I want to make a Telegram client, help me
understand what the biz model for it could be
like
– And for a collaboration of several authors?
• Push @JollaHQ to communicate more about
business opportunities for small devs
• Contribute to HelloWorld Pro, Log4Qt Demo
• Try my apps in Jolla app store and review
them (Flashlight, Quick Launcher)
29.03.14
@AgileArtem
http://www.codingsubmarine.com

More Related Content

What's hot

Remote Management of Embedded Android Devices
Remote Management of Embedded Android DevicesRemote Management of Embedded Android Devices
Remote Management of Embedded Android Devices
VIA Embedded
 
Marketplace atlascampeurope2012final
Marketplace atlascampeurope2012finalMarketplace atlascampeurope2012final
Marketplace atlascampeurope2012finalAtlassian
 
Android Overview
Android OverviewAndroid Overview
Android Overview
Jussi Pohjolainen
 
Installing And Configuring Java Me Tools
Installing And Configuring Java Me ToolsInstalling And Configuring Java Me Tools
Installing And Configuring Java Me ToolsJussi Pohjolainen
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvm
dfages
 
Water usage-visualization-tutorial
Water usage-visualization-tutorialWater usage-visualization-tutorial
Water usage-visualization-tutorial
Waternomics
 
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed TamanJavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaDayUA
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Ryan Baxter
 
Flash Platform for Devices
Flash Platform for DevicesFlash Platform for Devices
Flash Platform for DevicesSerge Jespers
 
Firefox os
Firefox osFirefox os
Firefox os
Nivin Thomas
 
Multi-OS Engine Technology Overview
Multi-OS Engine Technology OverviewMulti-OS Engine Technology Overview
Multi-OS Engine Technology Overview
Karthiyayini Chinnaswamy
 
Introduction to LIFF (LINE Front-End Framework)
Introduction to LIFF (LINE Front-End Framework)Introduction to LIFF (LINE Front-End Framework)
Introduction to LIFF (LINE Front-End Framework)
LINE Corporation
 
Android
Android Android
Android
Ravina Bhavsar
 
SAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous IntegrationSAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous Integration
Peter Muessig
 
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Asaf Saar
 
Introdução Ionic Framework - Meetup SP
Introdução Ionic Framework - Meetup SPIntrodução Ionic Framework - Meetup SP
Introdução Ionic Framework - Meetup SP
Livio Alves, MBA
 
VLC
VLCVLC
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phonesFlash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
biskero
 

What's hot (20)

Remote Management of Embedded Android Devices
Remote Management of Embedded Android DevicesRemote Management of Embedded Android Devices
Remote Management of Embedded Android Devices
 
Marketplace atlascampeurope2012final
Marketplace atlascampeurope2012finalMarketplace atlascampeurope2012final
Marketplace atlascampeurope2012final
 
Android Overview
Android OverviewAndroid Overview
Android Overview
 
Installing And Configuring Java Me Tools
Installing And Configuring Java Me ToolsInstalling And Configuring Java Me Tools
Installing And Configuring Java Me Tools
 
Droidcon uk2012 androvm
Droidcon uk2012 androvmDroidcon uk2012 androvm
Droidcon uk2012 androvm
 
Water usage-visualization-tutorial
Water usage-visualization-tutorialWater usage-visualization-tutorial
Water usage-visualization-tutorial
 
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed TamanJavaFX 8 everywhere; write once run anywhere by Mohamed Taman
JavaFX 8 everywhere; write once run anywhere by Mohamed Taman
 
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...Lotusphere 2011  Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
Lotusphere 2011 Jmp103 - Jumpstart Your "Jedi Plug-in Development Skills" wi...
 
Flash Platform for Devices
Flash Platform for DevicesFlash Platform for Devices
Flash Platform for Devices
 
Firefox os
Firefox osFirefox os
Firefox os
 
Multi-OS Engine Technology Overview
Multi-OS Engine Technology OverviewMulti-OS Engine Technology Overview
Multi-OS Engine Technology Overview
 
Introduction to LIFF (LINE Front-End Framework)
Introduction to LIFF (LINE Front-End Framework)Introduction to LIFF (LINE Front-End Framework)
Introduction to LIFF (LINE Front-End Framework)
 
Android
Android Android
Android
 
SAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous IntegrationSAPUI5/OpenUI5 - Continuous Integration
SAPUI5/OpenUI5 - Continuous Integration
 
Android session-1-sajib
Android session-1-sajibAndroid session-1-sajib
Android session-1-sajib
 
Windows & Mac OS X
Windows & Mac OS XWindows & Mac OS X
Windows & Mac OS X
 
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...Appium - Reality check on the world’s leading Open Source Framework for Mobil...
Appium - Reality check on the world’s leading Open Source Framework for Mobil...
 
Introdução Ionic Framework - Meetup SP
Introdução Ionic Framework - Meetup SPIntrodução Ionic Framework - Meetup SP
Introdução Ionic Framework - Meetup SP
 
VLC
VLCVLC
VLC
 
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phonesFlash Lite, un’occasione da 1.3 Miliardi di mobile phones
Flash Lite, un’occasione da 1.3 Miliardi di mobile phones
 

Similar to Getting started with coding for Jolla Sailfish OS. 29 Mar 2014, Tampere, Finland

Solum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALMSolum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALM
devkulkarni
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Bruno Borges
 
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summitSolum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
devkulkarni
 
Fastlane
FastlaneFastlane
Fastlane
Warren Lin
 
AppCatalyst and Photon OS
AppCatalyst and Photon OSAppCatalyst and Photon OS
AppCatalyst and Photon OS
Juan Manuel Rey
 
Operating Docker
Operating DockerOperating Docker
Operating Docker
Jen Andre
 
Docker - A lightweight Virtualization Platform for Developers
Docker - A lightweight Virtualization Platform for DevelopersDocker - A lightweight Virtualization Platform for Developers
Docker - A lightweight Virtualization Platform for Developers
RapidValue
 
6applets And Graphics
6applets And Graphics6applets And Graphics
6applets And GraphicsAdil Jafri
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
Victor Zhang
 
Highly available nodejs
Highly available nodejsHighly available nodejs
Highly available nodejs
pfremm
 
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
camunda services GmbH
 
App sec in the time of docker containers
App sec in the time of docker containersApp sec in the time of docker containers
App sec in the time of docker containers
Akash Mahajan
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
OpenShift Origin
 
AEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly toolsAEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly tools
Ashokkumar T A
 
Building a low cost hack lab
Building a low cost hack labBuilding a low cost hack lab
Building a low cost hack lab
Joe McCray
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
Vivek Krishnakumar
 
Performance Load Cache
Performance Load CachePerformance Load Cache
Performance Load Cache
Altan Khendup
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
Mandi Walls
 
Orangescrum In App Chat Add-on User Manual
Orangescrum In App Chat Add-on User ManualOrangescrum In App Chat Add-on User Manual
Orangescrum In App Chat Add-on User Manual
Orangescrum
 

Similar to Getting started with coding for Jolla Sailfish OS. 29 Mar 2014, Tampere, Finland (20)

Intro to PhoneGap
Intro to PhoneGapIntro to PhoneGap
Intro to PhoneGap
 
Solum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALMSolum - OpenStack PaaS / ALM
Solum - OpenStack PaaS / ALM
 
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na NuvemTecnologias Oracle em Docker Containers On-premise e na Nuvem
Tecnologias Oracle em Docker Containers On-premise e na Nuvem
 
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summitSolum - OpenStack PaaS / ALM - Austin OpenStack summit
Solum - OpenStack PaaS / ALM - Austin OpenStack summit
 
Fastlane
FastlaneFastlane
Fastlane
 
AppCatalyst and Photon OS
AppCatalyst and Photon OSAppCatalyst and Photon OS
AppCatalyst and Photon OS
 
Operating Docker
Operating DockerOperating Docker
Operating Docker
 
Docker - A lightweight Virtualization Platform for Developers
Docker - A lightweight Virtualization Platform for DevelopersDocker - A lightweight Virtualization Platform for Developers
Docker - A lightweight Virtualization Platform for Developers
 
6applets And Graphics
6applets And Graphics6applets And Graphics
6applets And Graphics
 
OpenStack Murano introduction
OpenStack Murano introductionOpenStack Murano introduction
OpenStack Murano introduction
 
Highly available nodejs
Highly available nodejsHighly available nodejs
Highly available nodejs
 
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
Webinar - A Developer's Quick Start Guide to Open Source Process Automation U...
 
App sec in the time of docker containers
App sec in the time of docker containersApp sec in the time of docker containers
App sec in the time of docker containers
 
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
Extending OpenShift Origin: Build Your Own Cartridge with Bill DeCoste of Red...
 
AEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly toolsAEM - A Collection of developer friendly tools
AEM - A Collection of developer friendly tools
 
Building a low cost hack lab
Building a low cost hack labBuilding a low cost hack lab
Building a low cost hack lab
 
Tutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer WorkshopTutorial 1: Your First Science App - Araport Developer Workshop
Tutorial 1: Your First Science App - Araport Developer Workshop
 
Performance Load Cache
Performance Load CachePerformance Load Cache
Performance Load Cache
 
Habitat Overview
Habitat OverviewHabitat Overview
Habitat Overview
 
Orangescrum In App Chat Add-on User Manual
Orangescrum In App Chat Add-on User ManualOrangescrum In App Chat Add-on User Manual
Orangescrum In App Chat Add-on User Manual
 

More from Artem Marchenko

One code Web, iOS, Android
One code Web, iOS, AndroidOne code Web, iOS, Android
One code Web, iOS, Android
Artem Marchenko
 
Test driving-qml
Test driving-qmlTest driving-qml
Test driving-qml
Artem Marchenko
 
Test driving QML
Test driving QMLTest driving QML
Test driving QML
Artem Marchenko
 
Misapplied Scrum pattern
Misapplied Scrum patternMisapplied Scrum pattern
Misapplied Scrum pattern
Artem Marchenko
 
Effective Software Development for the 21st century
Effective Software Development for the 21st centuryEffective Software Development for the 21st century
Effective Software Development for the 21st century
Artem Marchenko
 

More from Artem Marchenko (6)

One code Web, iOS, Android
One code Web, iOS, AndroidOne code Web, iOS, Android
One code Web, iOS, Android
 
Test driving-qml
Test driving-qmlTest driving-qml
Test driving-qml
 
Test driving-qml
Test driving-qmlTest driving-qml
Test driving-qml
 
Test driving QML
Test driving QMLTest driving QML
Test driving QML
 
Misapplied Scrum pattern
Misapplied Scrum patternMisapplied Scrum pattern
Misapplied Scrum pattern
 
Effective Software Development for the 21st century
Effective Software Development for the 21st centuryEffective Software Development for the 21st century
Effective Software Development for the 21st century
 

Recently uploaded

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
Rakesh Kumar R
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
Neo4j
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
pavan998932
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
Adele Miller
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
Shane Coughlan
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
timtebeek1
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Crescat
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
Google
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
rickgrimesss22
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
Philip Schwarz
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
TheSMSPoint
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
Hornet Dynamics
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Neo4j
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
mz5nrf0n
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
Deuglo Infosystem Pvt Ltd
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
Ayan Halder
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
Aftab Hussain
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
Drona Infotech
 

Recently uploaded (20)

Fundamentals of Programming and Language Processors
Fundamentals of Programming and Language ProcessorsFundamentals of Programming and Language Processors
Fundamentals of Programming and Language Processors
 
GraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph TechnologyGraphSummit Paris - The art of the possible with Graph Technology
GraphSummit Paris - The art of the possible with Graph Technology
 
What is Augmented Reality Image Tracking
What is Augmented Reality Image TrackingWhat is Augmented Reality Image Tracking
What is Augmented Reality Image Tracking
 
May Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdfMay Marketo Masterclass, London MUG May 22 2024.pdf
May Marketo Masterclass, London MUG May 22 2024.pdf
 
openEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain SecurityopenEuler Case Study - The Journey to Supply Chain Security
openEuler Case Study - The Journey to Supply Chain Security
 
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdfAutomated software refactoring with OpenRewrite and Generative AI.pptx.pdf
Automated software refactoring with OpenRewrite and Generative AI.pptx.pdf
 
Vitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdfVitthal Shirke Java Microservices Resume.pdf
Vitthal Shirke Java Microservices Resume.pdf
 
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
Introducing Crescat - Event Management Software for Venues, Festivals and Eve...
 
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI AppAI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
AI Fusion Buddy Review: Brand New, Groundbreaking Gemini-Powered AI App
 
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptxTop Features to Include in Your Winzo Clone App for Business Growth (4).pptx
Top Features to Include in Your Winzo Clone App for Business Growth (4).pptx
 
A Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of PassageA Sighting of filterA in Typelevel Rite of Passage
A Sighting of filterA in Typelevel Rite of Passage
 
Transform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR SolutionsTransform Your Communication with Cloud-Based IVR Solutions
Transform Your Communication with Cloud-Based IVR Solutions
 
E-commerce Application Development Company.pdf
E-commerce Application Development Company.pdfE-commerce Application Development Company.pdf
E-commerce Application Development Company.pdf
 
Atelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissancesAtelier - Innover avec l’IA Générative et les graphes de connaissances
Atelier - Innover avec l’IA Générative et les graphes de connaissances
 
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
在线购买加拿大英属哥伦比亚大学毕业证本科学位证书原版一模一样
 
Empowering Growth with Best Software Development Company in Noida - Deuglo
Empowering Growth with Best Software  Development Company in Noida - DeugloEmpowering Growth with Best Software  Development Company in Noida - Deuglo
Empowering Growth with Best Software Development Company in Noida - Deuglo
 
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket ManagementUtilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
Utilocate provides Smarter, Better, Faster, Safer Locate Ticket Management
 
Using Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional SafetyUsing Xen Hypervisor for Functional Safety
Using Xen Hypervisor for Functional Safety
 
Graspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code AnalysisGraspan: A Big Data System for Big Code Analysis
Graspan: A Big Data System for Big Code Analysis
 
Mobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona InfotechMobile App Development Company In Noida | Drona Infotech
Mobile App Development Company In Noida | Drona Infotech
 

Getting started with coding for Jolla Sailfish OS. 29 Mar 2014, Tampere, Finland

  • 1. Getting Started with coding for Jolla Sailfish OS Artem Marchenko @AgileArtem 29.03.2014, Tampere, Finland 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 2. Today • Quick start on emulator – And how to run on device • Structure of the build process and artifacts • Packaging for app store • Troubleshooting / debugging • Support channels and further questions 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 4. Preparing SDK 1. Get Python (project renaming script will need it) 2. Install SDK https://sailfishos.org/develop.html 3. Run its Updater ( Help -> Start Updater) 4. Get HelloWorld Pro from https://github.com/amarchen/helloworld-pro- sailfish and open it (you need a project for Updating part of SDK) – Configure for all available platforms 5. Rename project into harbour-my-great-app via rename-to-my-project.py 6. Start Mer build machine (can take a couple of clicks) 7. Install more updates via Sailfish OS tab 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 5. Starting app on emulator • Set i486 platform as active • Deploy as RPM • Run subproject src 29.03.14
  • 6. Start emulator and app 29.03.14
  • 7. Running tests on emulator • Run /usr/share/tst- harbour-my- great- app/runTestsOnD evice.sh – As README.md says 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 8. Connecting device • https://sailfishos.org/develop-firstapp-article.html covers it well – Works fine on WiFi – Couldn’t make it work via USB 29.03.14 @AgileArtemhttp://www.codingsubmarine.co m
  • 9. Then run on device • Same as on emulator • Just don’t forget to select armv7 platform 29.03.14
  • 11. STRUCTURE OF THE BUILD PROCESS 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 12. Project directories Your PC Mer build machine Jolla device/ emulator /Users/artem/ projects/great-app/ /home/mersdk/ projects/great-app/ /home/mersdk/ projects/build-great- app-MerSDK.../ /home/deploy/ installroot/usr/share/ harbour-great-app/... /home/deploy/ installroot/usr/bin/ harbour-great-app /usr/bin/harbour- great-app /usr/share/harbour- great-app/... Same dir Compile INSTALLS phase of qmake build Default comes from ~/mersdk/targets/Sailfish.../usr/ share/qt5/mkspecs/ features/sailfishapp.prf RPM package 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 13. Building-packaging harbour-great- app.yaml gstreamer-devel libresourceqt5 sailfishapp Build-time dependencies libsailfishapp Runtime dependencies /usr/bin/harbour-great-app /usr/share/icons/... /usr/share/harbour-great-app/.. Files in main package harbour-great- app-tests subpackage /usr/bin/tst-harbour-great-app /usr/share/tst-harbour-great-app/... harbour-great- app-fake subpackage Garbage other packages don't need great-app.pro source files resources harbour-great- app.spec Extra detais Tell we are not requiring/providing anything not allowed Pass QMake vars E.g. version number Or dir with platform-specific resources for bundling into app /home/deploy/installroot/ usr/bin/harbour-great-app ... on Mer build machine INSTALLS harbour-great-app-0.1-1.armv7hl.rpm harbour-great-app-test-0.1-1.armv7hl.rpm harbour-great-app-fake-0.1-1.armv7hl.rpm RPM packaging To App Store! 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 14. PACKAGING FOR APP STORE 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 15. Build RPM package 1. Choose ARMV7 platform 2. *Clean* not to package i486 binaries 3. Deploy RPM
  • 17. Submit to harbour • http://harbour.jolla.com • Icon templates can be found at https://sailfishos.org/apps_icons.html – As mentioned in README.md • You’ll need screenshots – Use Screenshot or SailshotMe app on device – Upload to Dropbox via Sailbox app 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 19. Troubleshooting failed deployments and not runnable apps • Examine the content of the Mer machine and emulator directories. And device too if you need • Is covered well at https://sailfishos.org/develop- faq.html • Mer: ssh -p 2222 -i ~/SailfishOS/vmshare/ssh/private_ke ys/engine/root root@localhost • Emulator: ssh -p 2223 -i ~/SailfishOS/vmshare/ssh/private_ke ys/SailfishOS_Emulator/root root@localhost • Real device: ssh nemo@192.168.1.38 – Address and password from the Developer Settings on device 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 20. Debugging • C++ debugging doesn’t work from IDE • If you comfortable with GDB, it is supposed to work • Rumors tell that QML debugging does – I failed to get it working • Use logging • Use automated tests 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 21. Getting support and further questions • IRC: #sailfishos on freenode (irc.freenode.net) • devel-subscribe@lists.sailfishos.org • This slideset – http://www.codingsubmarine.com/tag/class/ @AgileArtem on twitter 29.03.14 @AgileArtem http://www.codingsubmarine.com
  • 22. Artem needs help • I want to make a Telegram client, help me understand what the biz model for it could be like – And for a collaboration of several authors? • Push @JollaHQ to communicate more about business opportunities for small devs • Contribute to HelloWorld Pro, Log4Qt Demo • Try my apps in Jolla app store and review them (Flashlight, Quick Launcher) 29.03.14 @AgileArtem http://www.codingsubmarine.com