
ã¿ãªããããã«ã¡ã¯ïŒ ç§ãã¡ã®èšäºã§ãã§ã«ãåç¥ã®ããã«ãSmart Enginesã§ã¯èªèã«åãçµãã§ãããããããæ¡ä»¶ã§ã®èªèã«åªããŠããŸãã iOSãAndroidãWindowsãLinuxãMacOSãSolarisãªã©ã®äžè¬çãªãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ããã¹ãŠãµããŒãããŠããŸãã åœå ã¡ãŒã«ãŒã®Elbrusããã³AstraLinuxããµããŒãããŠããŸãã åœç€Ÿã®ã¢ã«ãŽãªãºã ã¯ãARMv7-v8ãAArch64ãx86ãx86_64ãSPARCãE2KãMIPSåãã«æé©åãããŠããŸãã
ãããã£ãŠããã·ã¢ã®ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã Sailfish Mobile OS RUSã®äººæ°ã®é«ãŸããèŠããšãããããç¡èŠããããšã¯ã§ããŸããã§ããã Sailfish Mobile OS RUSã¯ãäŒæ¥ãŠãŒã¶ãŒãæ¿åºæ©é¢ã®åé¡ã解決ããããã«åœå äŒæ¥ã®Open Mobile Platformã«ãã£ãŠéçºãããã¢ãã€ã«ããã€ã¹çšã®POSIXäºæãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãã 2018幎2æçŸåšããã·ã¢ã®ãœãããŠã§ã¢ã¬ãžã¹ããªã«å«ãŸããŠããå¯äžã®ã¢ãã€ã«ãªãã¬ãŒãã£ã³ã°ã·ã¹ãã ã§ãããAK1 / KS1ã¯ã©ã¹ã®FSBèªå®ã«åæ ŒããŠããŸãã
ãã®èšäºã§ã¯ã Smart IDReaderèªèã©ã€ãã©ãªïŒ Hieroglyphãã¯ãããžãŒïŒãSailfish OSã«ç§»æ€ããçµéšã«ã€ããŠèª¬æããŸãã ã³ãŒãããªã³ã¯ããããªãå«ãŸããŸãã ãã®èšäºã¯æè¡çã«æçã§ãããC ++ã¢ããªã±ãŒã·ã§ã³ãSailfish OSã«ç§»æ€ãã人ã®ããã®äžè¬çãªã¬ã€ããšããŠæçšã§ãã
Open Mobile Platform ïŒOMPïŒã®ååã§ããKirill ChuvilinãšAlexey Andreevããã¢ããªã±ãŒã·ã§ã³ã®éçºãšããã¹ããšãã¢ã³ã¹ãã¬ãŒã·ã§ã³çšã®2ã€ã®INOI R7ããã€ã¹ã®æäŸã«é¢ããçžè«ã«æè¬ããŠããŸãã
TL; DR-移æ€ã¯è¿ éãã€ç°¡åã§ããã åèšã§ãSailfish OS SDKãããŠã³ããŒããããŠããæåã®ãããªãæ®åœ±ãããŠããINOI R7ããã€ã¹äžã®ããã¥ã¡ã³ããèªèããããŸã§ãäœæ¥ã«1é±éãããããŸããã§ããïŒãããªã¯èšäºã®æåŸã«ãããŸãïŒã
ããŒã«ãããã®ã€ã³ã¹ããŒã«
æåã®ã¹ãããã¯ãSailfish OS SDKãã€ã³ã¹ããŒã«ããããšã§ããã å ¬åŒãµã€ãããã€ã³ã¹ããŒã«ããã±ãŒãžãããŠã³ããŒãã§ããŸãããããã«ç°¡åãªæ¹æ³ãéžæããAURããSDKãã€ã³ã¹ããŒã«ããŸãã-Arch LinuxãŠãŒã¶ãŒãªããžããªïŒSmart Engineéçºè ã®éã§æã人æ°ã®ããLinuxãã£ã¹ããªãã¥ãŒã·ã§ã³ïŒã§ããã€ãã®ããã«ããã¹ãŠã1ã€ã®ã³ãã³ãã§ã€ã³ã¹ããŒã«ãããŸãïŒ
yaourt -S sailfishos-sdk-bin
éçºããŒã«ã«ã¯ã次ã®3ã€ã®äž»èŠã³ã³ããŒãã³ããå«ãŸããŸãã
- ç°å¢ããã³ãã«ãã·ã¹ãã -ããã€ã¹ãŸãã¯ãšãã¥ã¬ãŒã¿çšã®ã¢ããªã±ãŒã·ã§ã³ããã«ãããããã®ã€ã³ã¹ããŒã«æžã¿ã³ã³ãã€ã©ããã³ã©ã€ãã©ãªãå«ãOracle VM VirtualBoxã€ã¡ãŒãžã
- SailfishOSãšãã¥ã¬ãŒã¿ãŒãä»ã®ã¢ãã€ã«ãã©ãããã©ãŒã ïŒiOSãAndroidãªã©ïŒã®ãšãã¥ã¬ãŒã¿ãŒã«äŒŒãŠããŸã
- IDE-ãã«ãã·ã¹ãã ãšã®å¯Ÿè©±ããµããŒãããããã€ã¹ãŸãã¯ãšãã¥ã¬ãŒã¿ãŒã§ããã°ã©ã ãå®è¡ããããã«å®æãããããç¥ãããQt Creatorã
ãã«ãä»®æ³ãã·ã³ãžã®æ¥ç¶ã¯SSHçµç±ã§ãã å¯äžã®åé¡ã¯ãä»®æ³ãã·ã³ãšIDEã«SDKãã€ã³ã¹ããŒã«ãããšãã«ãéçºè
ã®ã³ââã³ãã¥ãŒã¿ãŒã§æ¢ã«ä»ã®ç®çã«äœ¿çšãããŠããããŒã2222
ãããŒãã³ãŒããããŠããããšã§ãã VirtualBoxã§ã¯ããã®ããŒãã¯ããããããæ¹æ³ã§å€æŽãããŸãããIDEã§ã¯GUIããå€æŽããããšã¯ã§ããŸããã§ããã 幞ããªããšã«ã mersdk.xml
ããŒã«ã«èšå®ãã¡ã€ã«ã§å€æŽã§ããŸãã
<!-- ~/.config/SailfishOS-SDK/qtcreator/mersdk.xml --> <value type="QString" key="SshPort">2222</value>
ãã®åé¡ã解決ããåŸãCyrilã«å ±åãããŸããããä»åŸããŒã«ã«ãã®ä»ã®åé¡ã¯ãããŸããã§ããã
C ++èªèã³ã¢ãæ§ç¯ãã
ç§ãã¡ã®èªèãšã³ãžã³ã¯C ++ã§æžãããŠããããã®å ŽåãSailfish OSã«ç§»æ€ããããã®æãããªéžæã¯ãéçã©ã€ãã©ãªã®åœ¢ã§ã«ãŒãã«ãæ§ç¯ããããšã§ããã
ã©ã€ãã©ãªãæåã§ãã«ãããæ¹æ³ã«é¢ããçããæçãªããã¥ã¢ã«ã¯ãå ¬åŒããã¥ã¡ã³ãã®Sailfish OSããã±ãŒãžãæåã§ãã«ãããããŒãžã«ãããŸãã ãããããSSHãä»ããŠä»®æ³ãã·ã³ã«æ¥ç¶ããæ£ããã¢ãŒããã¯ãã£ã§éåžžã®ãã«ãã³ãã³ããåŒã³åºãã ãã§ããããšãæããã«ãªããŸããã ããã»ã¹ã段éçã«èª¬æããŸãã
- Sailfish OS Build Engineä»®æ³ãã·ã³ãèµ·åããŸãïŒååãªãããã¬ã¹ã¢ãŒãïŒ
ç§ãã¡ã¯ããã«æ¥ç¶ããŠããŸãïŒ
ssh -p 2222 -i /opt/SailfishOS/SDK/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost
ã¡ãªã¿ã«ãå€éšãŠãŒã¶ãŒã®ããŒã ãã£ã¬ã¯ããªã¯ãããã©ã«ãã§ã¯
/home/src1
ä»®æ³ãã·ã³ã§äœ¿çšã§ããŸãã
ãµããŒããããŠãããã©ââãããã©ãŒã ã®ãªã¹ããååŸããŸãã
[mersdk@SailfishSDK ~]$ sdk-assistant list Toolings: SailfishOS-2.1.3.7 Targets: SailfishOS-2.1.3.7-armv7hl # SailfishOS-2.1.3.7-i486 #
ãµã€ãã®äŸãšã¯ç°ãªãããã©ãããã©ãŒã åã«ã¯ããŒãžã§ã³çªå·ãå«ãŸããŠããå Žåãããããããèæ ®ããå¿ èŠããããŸãã ããã«ãããã€ã¹ïŒSailfishOS-2.1.3.7-armv7hlïŒã®ã¢ã»ã³ããªãå®è¡ãããŸããããšãã¥ã¬ãŒã¿ãŒã®å Žåãããã»ã¹å šäœã¯åæ§ã§ãã
å¿ èŠãªã¢ãŒããã¯ãã£ã®å Žåã
sb2
ïŒScratchbox2ïŒã³ãã³ãã«ãã£ãŠé©åãªç°å¢ãæäŸãããããããã¹ãŠãå®è¡ããå¿ èŠããããŸãã
sb2 -t SailfishOS-2.1.3.7-armv7hl <args....>
ã¢ã»ã³ããªã«å¿ èŠãªããã±ãŒãžãã€ã³ã¹ããŒã«ããŸãã ç§ãã¡ã®å Žåããããã¯CMakeãGCCãG ++ãããã³Zipã§ãã
sb2 -t SailfishOS-2.1.3.7-armv7hl -m sdk-install -R zypper in cmake gcc gcc-c++ zip
ãã«ããã©ã«ããŒãäœæããŠ
CMake
ãåŒã³åºããæ£ããCMAKE_SYSROOT
ãŠãã³ã³ãã€ã©ãŒãé©åãªå Žæã§æ€çŽ¢ãããããã«ããŸãã
mkdir build && cd build sb2 -t SailfishOS-2.1.3.7-armv7hl -m sdk-build cmake -DCMAKE_SYSROOT=/srv/mer/targets/SailfishOS-2.1.3.7-armv7hl ..
ãããžã§ã¯ãããŸãšããïŒ
sb2 -t SailfishOS-2.1.3.7-armv7hl -m sdk-build make install -j8
以äžã§ãïŒ ãããã£ãŠãSailfish OSã®ã¢ã»ã³ããªã¯ãå®éã«ã¯Linuxã®ã¢ã»ã³ããªãšå€ãããŸãããä»®æ³ãã·ã³ã«æ¥ç¶ããæ£ããç°å¢ã§ã³ãã³ããåŒã³åºãã ãã§ãã
Qtãããžã§ã¯ãã®äœæãšèšå®
ãããžã§ã¯ããäœæããããã»ã¹ã¯ç°¡åã§ãããããšãã°Habrahabrã®Sailfish OS ããã§èªãããšãã§ããŸãã ãã®åŸã¯ããã£ã1ã€ã®ããšãè¡ãå¿ èŠããããŸããã次ã®ããã«ãããããŒãã¡ã€ã«ãžã®ãã¹ãš.proãã¡ã€ã«ãžã®éçã©ã€ãã©ãªãè¿œå ããŸãã
INCLUDEPATH += /path/to/install.armv7-linux.release/include LIBS += -L/path/to/install.armv7-linux.release/lib \ -lsomeStaticLibrary \ -lanotherStaticLibrary
ãã®åŸãC ++èªèã«ãŒãã«ãåŒã³åºãããããžã§ã¯ããæ£åžžã«ã³ã³ãã€ã«ãããéå§ãããŸããã
QMLãšSailfish Silicaã䜿çšããGUIã®äœæ
Sailfish OSã®ã¢ããªã±ãŒã·ã§ã³GUIã¯ãC ++ããã³QMLã®Qtã䜿çšããŠèšè¿°ãããŠããŸããæšæºã®QtQuickã©ã€ãã©ãªãšç¹å¥ãªSailfish SIlicaã®äž¡æ¹ã䜿çšããŠããŸãã
ãããã®æè¡ã«é¢ããã»ãšãã©ãã¹ãŠã®å¿ èŠãªæ å ±ã¯ãå ¬åŒããã¥ã¡ã³ãã«èšèŒãããŠããŸãã ãã®ä»ã®äŸ¿å©ãªãªã³ã¯ã«ã¯ã Sailfish OS onHabréã®éçºããã è²ãšã€ã³ãã³ãã®ããŒãã·ãŒãã ã¢ã€ã³ã³ãšäž»èŠã³ã³ããŒãã³ã ãStepikã®ç¡æå ¥éã³ãŒã¹ãå«ãŸããŸãã
ã°ã©ãã£ãã¯ããªããã£ããæç»ããããã«ã Canvasãšãã®onPaint
ã¡ãœããã䜿çšããŸããã æ°Žå¹³ã¹ã¯ããŒã«ã«ããããã¥ã¡ã³ãã®éžæ-SlideshowViewïŒå®è£
äŸã«ã€ããŠã¯Alexeiã«æè¬ããŸãïŒã èªèçµæã®è¡šç€º-ListModelã䜿çšããSilicaListView ã
åºæ¬çãªGUIèŠçŽ ã®èšè¿°ã«å ããŠãå
¬åŒã®Qtããã¥ã¡ã³ãã®QMLãšC ++ã®çµ±åããŒãžã§éåžžã«ç°¡åãã€æ確ã«èª¬æãããŠããQMLã³ãŒãããC ++ã¯ã©ã¹ãåŒã³åºãæ¹æ³ãåŠã¶ããšãéèŠã§ãïŒC ++ã¯ã©ã¹ãäœæããC ++ã«ç»é²ããQMLã«ã€ã³ããŒãããŸãã C ++æ§é ãQMLã§ã©ããããããã®æãæçœãªæ¹æ³ã¯ã Q_GADGET
ã䜿çšããããšã§ããããã«æãããŸãã
ããã€ã¹ã®ã«ã¡ã©ãšã®çžäºäœçšïŒæ¢åµç§åŠç調æ»
ã«ã¡ã©APIãšé©åã«å¯Ÿè©±ããæ¹æ³ãç解ããããšã¯ããã¢ã¢ããªã±ãŒã·ã§ã³ã®éçºããã»ã¹å šäœã§å¯äžã®å°é£ã§ãããå¥ã®ç¹ã«å€ããŸãã
éåžžããªã¢ã«ã¿ã€ã ãããªã¹ããªãŒã èªèã©ã€ãã©ãªã䜿çšããã·ããªãªã¯æ¬¡ã®ãšããã§ãããŠãŒã¶ãŒãã«ã¡ã©ã®ãã¬ãã¥ãŒãèŠãŠããã®åã«ãªããžã§ã¯ãïŒããšãã°ãRFãã¹ããŒããŸãã¯éè¡ã«ãŒãïŒãä¿æããŠããéãã«ã¡ã©ããã®ãã¬ãŒã ã¯1ã€ãã€èªèã©ã€ãã©ãªã«å ¥ããèªèãããŸãã åæã«ãåãã¬ãŒã ã®èªèäžã«ãããã¥ã¡ã³ãã®å Žæããã®ãã£ãŒã«ããªã©ã«é¢ããäžéæ å ±ããŠãŒã¶ãŒã«è¡šç€ºãããŸãã ãããã£ãŠãã«ã¡ã©ãããã¬ãŒã ããã£ããã£ãããšåæã«ããŠãŒã¶ãŒã«ãã¬ãã¥ãŒã衚瀺ããå¿ èŠããããŸãã
ã«ã¡ã©ãäœæããŠQMLã§ãã¬ãã¥ãŒãããšãã質åã¯ãããŸããã§ããã ã«ã¡ã©ãäœæããŠVideoOutputã§åç §ããŸã ã
Camera { id: camera position: Camera.BackFace // ... } VideoOutput { anchors.fill: parent source: camera }
ã«ã¡ã©ããã®ãã¬ãŒã ãã€ã³ã¿ãŒã»ããããèªèã®ããã«C ++ã«è»¢éããæ¹æ³ãèŠã€ããããšã¯æ®ã£ãŠããŸãã
æåã®æ¹æ³ãšããŠãæšæºã®QVideoProbeãè©ŠããŸãããããã¯ãã«ã¡ã©ããã®ãã¬ãŒã ãåä¿¡ããããã«ç¹ã«ååšããŸãã ãã ãã probe.setSource(camera)
åŒã³åºãã¯false
è¿ãããã®åŸããã¬ãŒã ãã€ã³ã¿ãŒã»ããããããã«ã³ãŒã«ããã¯ã«äœãæ¥ãŸããã§ããã ã€ã³ã¿ãŒãããäžã®æ
å ±ããå€æãããšããã®åé¡ã¯Androidããã€ã¹ã«ãé¢é£ããŠãããSailfish OSçšã®QVideoProbeã®å®è£
ãåçŽã«äžè¶³ããŠããããšã瀺ããŠããå¯èœæ§ããããŸãã ãããããã«ä¿®æ£ãããããšãé¡ã£ãŠããŸãã
2çªç®ã®æ¹æ³ã¯ã QAbstractVideoSurfaceããã®ç¶æ¿ãšãèªèã®ããã«çä¿¡ãã¬ãŒã ãæž¡ãpresent(const QVideoFrame &frame)
ã¡ãœããpresent(const QVideoFrame &frame)
ã®å®è£
ã§ãã camera.setViewFinder(&videoSurface)
åŒã³åºããåŸcamera.setViewFinder(&videoSurface)
ãã¬ãŒã ãå°çãå§ãïŒNV21圢åŒïŒãã«ã¡ã©ã®åã§ããã¥ã¡ã³ããä¿æããŠããå Žåã§ãèªèãããŸãã...ããããVideoOutputã®ãã¬ãã¥ãŒãæ¶ãããŠãŒã¶ãŒã¯èªåã®ã«ã¡ã©ãäœãæ®åœ±ããŠããããèŠãããšãã§ããªããªããŸããã ãã®åé¡ãããã«è§£æ±ºããããšã¯ã§ããŸããã§ãããWMDã®ããªã«ãšã¢ã¬ã¯ã»ã€ãšãšãã«ã3çªç®ã®éžæè¢ãæ¢ãå§ããŸããã
幞ããªããšã«ãéå£çåªåã«ãã3çªç®ã®æ¹æ³ã¯éåžžã«è¿
éã«èŠã€ãããŸããã ããã¯ããã¬ãŒã åŠçæ©èœãå®è£
ããcreateFilterRunnable()
ã¡ãœããã䜿çšããŠcreateFilterRunnable()
ãäœæããQAbstractVideoFilterã®æã§ããããšãå€æããŸããã ãã®åŸãå®è£
ããããã£ã«ã¿ãŒãQMLã«è¿œå ããæ¢åã®VideoOutputã§åç
§ããå¿
èŠããããŸãã
RecognitionVideoFilter { id: recognitionVideoFilter // ... } VideoOutput { anchors.fill: parent source: camera filters: [ recognitionVideoFilter ] }
ã³ã³ãã€ã«ãéå§ã ãããªãã¬ãã¥ãŒããããŸãããããã§ããã¬ãŒã ã¯æ¥ãŸããã ãããŠçªç¶ãã·ãªã«ã¯å
±æããŸãã ã€ã³ãµã€ã㌠ãã£ã«ã¿ãããã€ã¹ã§æ©èœããããã«ã¯ã ãªã³ã¯ã§å©çšã§ããããšãå€æããQtMultimediaãã©ã°ã€ã³ãæŽæ°ããå¿
èŠããããšããæ
å ±ã ãã®åŸããã¹ãŠãæ©èœããŸãã-BGRA圢åŒã®ãã¬ãŒã ãã«ãŒãã«ã«å±ãå§ããŸããã 现éšQAbstractVideoSurface::run
é¢æ°ã¯ã«ã¡ã©ã®ãã¬ãã¥ãŒããããã¯ããŸãïŒãã£ã«ã¿ãŒã¯ãã¬ãŒã ã®å€æŽãæå³ãããããè«ççã§ãããèªã¿åããšèªèã®ã¿ãå¿
èŠã§ãïŒããããã£ãŠãã¹ã ãŒãºãªãã¬ãã¥ãŒã®ããã«ãããšãã°QtConcurrent :: run ïŒ...ïŒ
以äžã§ãïŒ ã¢ããªã±ãŒã·ã§ã³GUIãå®æãããããã«æ®ã£ãã ãã§ãé£ããã¯ãããŸããã§ããã
ãã«ã»ããã§éå¬ãããMobile World Congress 2018ã§ã®ãã¢ã³ã¹ãã¬ãŒã·ã§ã³ããã³ãã®ä»ã®ãããª
ä»å¹Žãåœç€Ÿã¯ãã«ã»ããã§éå¬ãããæ¯å¹ŽæäŸã®ã¢ãã€ã«ã¯ãŒã«ãã³ã³ã°ã¬ã¹2018ã§2床ç®ã®èªèæè¡ãçºè¡šããŸãããããã¯ããã®èŠæš¡ã§åã³ç§ãã¡ãé©ãããŸãã.205ãåœãã107,000人以äžã®èšªåè ã120,000å¹³æ¹ã¡ãŒãã«ã®ãããªãªã³ã«ãã2,400ã®äŒæ¥ã¹ã¿ã³ãã æšå¹Žåæ§ã圌女ã¯ç§ãã¡ã«éåžžã«ååããªå°è±¡ãäžããŸããã
ãã¡ãããSailfish OSã®æåã®éçºè ã§ãããã£ã³ã©ã³ãã®äŒç€ŸJollaã®ã¹ã¿ã³ãã§ãã¢ãæ«é²ãããããªãæ®åœ±ããŠVKontakteã°ã«ãŒãã«æçš¿ããOpen Mobile Platformã®ååã«ããã°ã©ã ããã©ã€ããã§èŠããããšãã§ããŸãã ã
ãããŠãããã«ããã°ã©ã ã®æåã®äœæ¥ããŒãžã§ã³ã®ãããªããããŸãïŒ
ä»ã®å€ãã®ã¹ããŒããšã³ãžã³ã®ãã¢ã¯ãYouTubeãã£ã³ãã«ã§èŠãããšãã§ããŸãã
ãããã«
ãã®èšäºã§ã¯ããã¢ã¢ããªã±ãŒã·ã§ã³ã®äœæãªã©ãSmart IDReaderèªèã©ã€ãã©ãªãSailfish OSã«ç§»æ€ããçµéšã«ã€ããŠèª¬æããŸããã é¢é£ããå ¬åŒææžã®éãšããŒã«ã®å質ã«é©ããŸããã ãã¡ãããæè¡çãªåé¡ãããã€ãçºçããŸããããããã«æåããããšãã§ããŸããã ç§ãã¡ã®çµéšãä»ã®äººã«åœ¹ç«ã€ããšãé¡ã£ãŠããŸãã