25/12/2015

Hello Sailfish

Filed under: — cybrarian @ 9:27 pm

De programmeeromgeving voor Sailfish is geïnstalleerd. De eerste test is typisch “hello world”.

Start de programmeeromgeving (SailfishOS IDE in Qt Creator). Je krijgt een “welcome”-scherm met links “Nieuw project” en rechts “Open Project” (hier komen vanaf de volgende keer Recent gebruikte projecten te staan).
Kies voor SailfishOS mode, links in de lijst met iconen.
Melding: The MerSDK VM is not running. (start the virtual machine levert een foutmelding op “The virtual machine is running but not responding”).

Menu “File, New File or Project”.
Selecteer SailfishOS. “Choose…”
De plaats waar het project bewaard wordt en de naam worden gevraagd (deze mag geen spaties bevatten, maar een streepje – mag wel).
Kit Selection: Er zijn er twee zichtbaar:

  • MerSDK-SailfishOS-armv7hl (staat af): voor de Jolla phone (aan als je deze app inderdaad daar wil draaien)
  • MERSDK-SailfishOS-i486 (staat aan) voor de emulator.

Application Details: Geef samenvatting, versienummer en beschrijving. Bevestig.
Je krijgt een project overzicht, en de mogelijkheid om het als een subproject van een ander project in te stellen, en de mogelijkheid om broncode versie-systeem (version control) te gebruiken (zoals git). Kan je hier overslaan. “Finish”.

Er opent een editor scherm met een aantal stukken tekst vooraf ingezet; een aantal import statements, en een ApplicationWindow stukje met 4 lijnen code.

/* ... */
import QtQuick 2.0
import Sailfish.Silica 1.0
import "pages"

ApplicationWindow
{
initialPage: Component { FirstPage { } }
cover: Qt.resolvedUrl("cover/CoverPage.qml")
allowedOrientations: Orientation.All
_defaultPageOrientations: Orientation.All
}

Onder Open Documents zie je *:

  • CoverPage.qml
  • FirstPage.qml
  • HelloSailfish.qml
  • SecondPage.qml

(* beeld heeft andere projectnaam)
SailfishOS-FirstAppOpenDocuments

Onder Sources/src zie je HelloSailfish.cpp
Die bevat na wat includes de minimale code:
int main(int argc, char *argv[])
{
return SailfishApp::main(argc, argv);
}

Het HelloSailfish.qml bestand bevat een aantal imports en de ApplicationWindows, wat het hoogste niveau is in je app. Hier wordt de eerste pagina (eerste weergegeven scherm) vastgelegd, en ook de “cover” van je app, die getoond wordt als je app niet op vol scherm draait.

Problemen, foutmeldingen

Er is nog niet zoveel over Sailfish verschenen, maar een waardevolle bron is zeker deze pdf: https://github.com/hardcodes/developwithsailfishos. Geeft uitleg voor installatie van de programmeeromgeving op verschillende platformen (Linux, Mac, ..). Maar kijk zeker ook even door naar Know your tools, vanaf blz 42; daar vind je soms uitleg die kan helpen problemen op te lossen.

Enkele foutmeldingen:
Geen verbinding – key refused
Keys terug opgebouwd of ververst, virtual machine herstarten.
Geen groene “run” knop
Na Debug/Deploy – copy binaries – werkte de RUN knop wel.

Sailfish OS SDK programmeeromgeving en concepten

Filed under: — cybrarian @ 6:26 pm

Een terminologie-spiekbrief voor beginnende Sailfish-programmeurs.

I know it’s rather confusing at the beginning, but once you understand
the differences between Build engine, SB2 Target / Toolchain and
Emulator it should be clearer.

(Reto Zingg, Sailfish mailinglist, 6/8/2013)

Ik weet dat het nogal verwarrend is in het begin, maar eens je de verschillen verstaat tussen Build engine, SB2 Target / Toolchain en Emulator, zou het duidelijker moeten zijn.

Harbour Sailfish winkel Droogdok voor Sailfish apps; als je een zelfgemaakte app publiek wil maken kan je ze daar “publiceren” naar de Jolla Store. https://harbour.jolla.com/

Sailfish Sailfish logobesturingssysteem (met een Linux basis) voor mobiele apparaten dat voorgeïnstalleerd is op Jolla smartphones en tablets.

Sailfish SDK Software Development Kit of ontwikkel/programmeeromgeving voor Sailfish. Is geen volledig eigen ontwikkelomgeving, maar gebruikt als basis Qt Creator.

Silica Sailfish Silica is een QML module; de componenten zijn onderdeel van de eigen gebruikersomgeving van Sailfish (UI – User Interface).

Qt Creator: LogoQtCreator programmeeromgeving van Qt. Kan gebruikt worden om Qt programma’s te ontwikkelen (voor bv KDE), maar mits plugins ook voor andere doelen, zoals apps voor SailfishOS (het systeem van de Jolla smartphones en tablets).http://www.qt.io/ide/

Virtual Machine: om een app voor Sailfish te proberen zonder dat je ze op een Sailfish toestel (bv Jolla) moet installeren, wordt een Virtueel toestel gebruikt: de computer waarop je werkt emuleert (maakt na in software) een Sailfish toestel. In de documentatie van Sailfish wordt daarvoor Virtualbox gebruikt.

Virtualbox VirtualBox_logo_64px een vrije virtualiseringssoftware (onder GNU-licentie), ontwikkeld door het Duitse Innotek GmbH, die (via Sun) op dit moment in handen is van Oracle. https://www.virtualbox.org/wiki/Downloads

Mer SailfishOS-Mer-Logo Project om een basissysteem voor mobiele apparaten te maken op basis van Linux + HTML5/QML/JS, met geschiedenis in MeeGo/Tizen/Qt/EFL. Non-profit. http://merproject.org/

Toolchain
: In Qt Creator/SailfishOS/Targets (MER-SDK control center) bij New target, krijg je de keuze uit twee toolchains:
– Mer-SB2-armv7hl
– Mer-SB2-i486
Zie ook Target

Emulator : maakt denkbeeldig toestel om programma op uit te proberen; zie Virtualbox

Kits
Een kit is een verzamelnaam voor de instellingen die allerlei onderdelen combineren en doen samenwerken: qmake, de compiler, het doelapparaat (target). Zoals je uit de targets kan verwachten zijn er twee kits: die voor de emulator op je pc, en die voor het eigenlijke toestel. De “Desktop” kit die standaard aanwezig is in de Qt Creator is niet van toepassing voor Sailfish, het heeft geen zin om hem te gebruiken.

Wayland : de grafische schil.

Build engine: zie SB2

Target binary daarmee wordt de gecompileerde app bedoeld (in de .pro bestanden: TARGET=NAME_OF_THEAPP)

sb2: bijgenaamd “scratchbox2”, dient voor “cross-compiling” in de merSDK. Bestaat uit sb2 commando en een aantal hulpbestanden sb2-*. Wordt aangeroepen door merssh (zichtbaar in de “top” processen bij het starten van qmake vanuit QtCreator).

SB2 Target: een target is een rootfs dat ontwikkelbestanden bevat als headers, libraries en programma’s. De beschikbare doelen van de scratchbox2 build engine zijn op te vragen door:

[mersdk@SailfishSDK ~]$ sb2-config -l
SailfishOS-armv7hl
SailfishOS-i486

De eerste SailfishOS-armv7hl maakt de gecompileerde binaire programma’s voor het echte apparaat, de tweede SailfishOS-i486-x86 voor de emulator (virtuele machine).

Met een parameter geef je aan welke target je wil gebruiken:

[mersdk@SailfishSDK ~]$ sb2 -t SailfishOS-armv7hl ...

Een standaard target kan je instellen met:

sb2-config -d SailfishOS-armv7hl

Bij-installeren (of checken) kan met de zypper tool (bekend van opensuse):
Zoek naar een bepaald pakket “package name”:

[mersdk@SailfishSDK ~]$ sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper search

Installeer het:

[mersdk@SailfishSDK ~]$ sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper install

Powered by WordPress