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

12/12/2015

Sailfish OS programmeeromgeving (installeren)

Filed under: — cybrarian @ 1:16 am

SailfishOS-QtCreator
Een van de interessantste Linux Distributies van het moment is SailfishOS. Ze draait op smartphones en tablets, en wordt standaard geïnstalleerd op de toestellen van Jolla.
Behalve dat je er met een speciale “compatibility” app ook (de meeste) Android apps op kan draaien, geeft SailfishOS je ook een volledige programmeeromgeving om zelf apps te ontwikkelen. Die is gebaseerd op QT, en bestaat voor Linux en andere platformen.

Je hebt eerst een virtuele smartphone nodig bij de ontwikkelomgeving, om je programma’s uit te proberen. Die kan je draaien dankzij een “Virtual Machine”. De vrije virtualisatieomgeving die je daarvoor gebruikt is “VirtualBox” (www.virtualbox.org).

Verder dus de ontwikkelomgeving of Software Development Kit: sailfishos.org/develop.
Er is een versie voor 32 bit en 64 bit; test wat je systeem antwoordt op :
getconf LONG_BIT
in een terminal. Op een Pentium kan dat bv “32” zijn, op de meeste recente computers zal het “64” zijn.
Gedetailleerde instructies vind je op dit installatie-artikel.

Het resultaat van de download is bv volgend bestand in je home map onder Downloads:
SailfishOSSDK-Beta-1511-Qt5-linux-64-offline.run
Dit is een “installer”, m.a.w. een installatie-programma. Om het uit te kunnen voeren moet je de rechten instellen (met een terminal, als gebruiker):
cd ~/Downloads
chmod +x SailfishOSSDK-Beta-1511-Qt5-linux-64-offline.run

Start daarna het installatieprogramma:

./SailfishOSSDK-Beta-1511-Qt5-linux-64-offline.run

en volg op de voorvermelde pagina onder “Common installation flow”.

De schermafdrukken houden een aantal bevestigingen in:

  • Setup/Welcome .. (Next)
  • Kies een map om de installatie te doen, standaard komt hij in ~/SailfishOS
  • beschikbaarheid enkel onder je eigen gebruiker (Next)
  • Kiezen van de onderdelen; standaard laten staan als je genoeg ruimte hebt (Next)
  • aanvaard de licenties (LGPL GPLv3 enz, en een SailfishOS licentie) (I accept, Next)
  • “Ready to install”, met een aanduiding van gebruikte ruimte, bv 3.64 GB (Install)
  • Installing SailfishOS SDK …. (Show Details geeft inzicht in wat allemaal gebeurt. Je ziet bv ook “MER Build Engine” voorbijkomen voor de compilatie van je code.)
  • Installation finished! (Next)
  • “Launch SailfishOS SDK now” staat aangevinkt, dus als je (Finish) klikt, start hij.

In je home directory komt dan deze struktuur:

SailfishOS-QtCreator-directory

Het bestand sdk-release bevat bv:

SDK_RELEASE=1511
SDK_RELEASE_CYCLE=Beta
SDK_CONFIG_DIR=SailfishBeta7
SDK_VENDOR=Jolla

Je kan updaten via het KDE (classic) menu /Development/More Programs/SDK-Maintenance:
Sailfish OS SDK Setup

Later starten gaat met ~/SailfishOS/bin/qtcreator of via een menu of je desktop.
(in opensuse via klassiek menu: Development/Integrated Environment/SailfishOS IDE)

Wat er gebeurt is dat Qt Creator opengaat, en je daarin ook al een SailfishOS icoon ziet staan (beetje vergelijkbaar met Eclipse/Android).
Vanuit Qt Creator zal verbinding gemaakt worden naar de MER Build Engine en de emulator (Virtual Machine). (*)

Vanuit de Qt Creator kan je ook met een druk op de knop een RPM maken om je app te verspreiden.

De Sailfish developer site raadt dan aan “Your First App” te volgen.

Of kijke je liever een filmpje? https://www.youtube.com/watch?feature=player_embedded&v=z3hMGNwObx8

Sailfish OS SDK: Mer not running

(*) Op opensuse (13.1 en tumbleweed) duikt momenteel een foutmelding op als je probeert de “mer” virtuele machine te starten. Er staat: “The MerSDK VM is not running”, “Start the virtual machine!” (link) en als je ze start komt er een melding dat ze niet reageert (“The ‘MerSDK’ VM is not ready”, en “The virtual machine is running but not responding”). Daarna terug de melding dat ze niet draait.

Upd:
Na een grote update krijg ik de melding: “You are not a member of the “vboxusers” group. Please add yourself to this group before starting VirtualBox. (…) ”
Yast, Security and Users, User and Group management: Kies gebruiker, edit/details; Additional groups: “vboxusers” aanklikken. Daarna staat in het overzicht in de kolom Groups bv “users, vboxusers”. Bevestigen/Yast afsluiten, gebruiker uitloggen en terug inloggen.

Upd:
Yast, Software, Virtualbox-Qt component geselecteerd

Powered by WordPress