From Fedora Project Wiki

No edit summary
mNo edit summary
 
(28 intermediate revisions by the same user not shown)
Line 1: Line 1:
'''Qt development on Fedora Linux''' raises questions, what can be done on Fedora Linux and what else is needed and how it can be used when using Linux desktop?
'''Qt development on Fedora Linux''' raises questions, what can be done on Fedora Linux and what else is needed and how it can be used when using Linux desktop?
= Development mode =
There are three main development modes: Widget, Quick and Python.
'''Qt Widget''' based development is the original (since 1995-05-20), OOP (Object Oriented Programming) and C++ way of Qt programming.
'''Qt Quick''' and its '''QML''' (''Qt Modeling Language'')  was introduced (2010) as easier and quicker way to create user interfaces. ''A QML document is, similarly to HTML, a description of an hierarchical object tree. The code structure looks very similar to a definition of a JSON object. QML objects can be styled, similarly to CSS, and JavaScript code can be inlined to handle assertive aspects. If you're familar with front-end web developement you'll grasp QML in no time.''<ref name='ccqt'>[https://www.cleanqt.io/blog/crash-course-in-qt-for-c%2B%2B-developers,-part-6 Crash course in Qt for C++ developers] referenced: 2019-04-24</ref> - so the Qt Widget programming is the traditional programming where code is written in C++ and compiled to binary, Qt Quick + QML was created to get vast amount of web-developers involved to Qt-developement.
'''Qt for Python''' provides both of these worlds, both programming methods can be used in Python language and in less tedious format without compiling the source code.
* [https://doc.qt.io/qt-5/qtwidgets-index.html doc.qt.io - C++/Widget applications]
* [https://doc.qt.io/qt-5/qmlapplications.html doc.qt.io - QML applications]
* [https://doc.qt.io/qtforpython/tutorials/qmlapp/qmlapplication.html doc.qt.io - QML application in Python]
* [[Qt4py|Qt for Python]]
= Desktop =
Desktop development is straightforward with Fedora Linux, all needed packages exist in standard repositories and main toolchain is available.
= Mobile =


<html>
<html>
Line 5: Line 24:
</html>
</html>


== Development mode: C++ vs QML ==
Qt for Python currently (2019-04) '''is not  supported on iPhone nor Android''' target devices.
=== What are the differences ===
=== Can real targets connecfted via USB-cable be launched from Fedora Linux? ===


== Google Android toolchain: ==
 
== Google Android toolchain: Android Studio ==
Android SDK, NDK (native development kit, C/C++), Java (Linux OpenJDK can be used).
Android SDK, NDK (native development kit, C/C++), Java (Linux OpenJDK can be used).


=== Where it can be downloaded ===
=== Android Studio download ===


* [https://doc.qt.io/qt-5/android-getting-started.html Getting Started with Qt for Android]
* [https://doc.qt.io/qt-5/android-getting-started.html Getting Started with Qt for Android]


== Apple iOS toolchain: XCode ==
Development for iOS devices is done using Apple '''Xcode''' IDE. To use it, the '''Apple developer account''' and iOS Developer Program '''certificate''' is needed and received from Apple when joining to the developer program. Certificate is used to install application to a device.
The current Mac OS X relase is '''High Sierra 10.13.6'''  (2019-05-20).
* [https://doc.qt.io/qtcreator/creator-developing-ios.html doc.qt.io - Creator developing iOS]
=== Xcode download ===
Mac OS X installation ISO-image download requires existing Mac OS X installation that came with Apple laptop.
* [https://developer.apple.com/programs/ developer.apple.com - Programs overview]
** [https://developer.apple.com/programs/enroll/ developer.apple.com - enroll] actual steps to get started.
=== Xcode on Fedora Linux ===
Xcode runts on Mac OS X operating system that is based on BSD variant. Its binaries and hence Xcode '''does not run directly on Linux'''. However, OS X can be run inside virtual machine like VirtualBox that runs on local Fedora desktop.
=== Xcode on shared Mac Server ===
Apple used to manufacture physical hardware servers and Mac OS X server operating system for them. Since then they stopped both and these days Mac OS X runs on x86_64 hardware and has its ''plus'' edition has server features that can be installed on Intel x86_64 hardware.
=== Xcode on cloud server ===
There are service providers that rent servers running Mac OS X and provide remote access to it. That might be a feasible solution for most, for some with strict source code privacy, it might be challenging to get proper NDA contract.
* [https://macincloud.com/ macincloud.com]
== Hardware targets via USB ==
'''Locally'''? No idea.
'''Remotely to Windows or Mac OSX''': In theory yes. Fedora's RDP client [http://www.freerdp.com/ FreeRDP] supports [https://github.com/FreeRDP/FreeRDP/wiki/USB-Redirection USB-port redirection over IP] and some devices like USB-cameras and smartcard readers are reported to work (2019 beginning). However, the forwarding appers to be device specific and '''Android- and iOS-phones are not supported'''.


== Apple iOS toolchain: XCode ==
Few notes:
=== Where it can be downloaded ===
* Fedora's freerdp package needs to be recompiled with -DCHANNEL_URBDRC_CLIENT=ON setting (that is off by default in spec) and reinstalled:
=== Licensing ===
xfreerdp /buildconfig
=== Can Xcode be run on Fedora Linux? ===
list of [https://github.com/FreeRDP/FreeRDP/wiki/Build-Options build options].
=== Can Xcode be run on shared Mac Server? ===
* In order to work on Windows host must be enabled:
** processor in server must support Streaming SIMD Extensions 2 (SSE2) run: '''dxdiag'''
** [https://techcommunity.microsoft.com/t5/Enterprise-Mobility-Security/Introducing-Microsoft-RemoteFX-USB-Redirection-Part-1/ba-p/247035 MS: RemoteFX USB Redirection]
** [https://github.com/FreeRDP/FreeRDP/wiki/RemoteFX freerdp - RemoteFX]
** run '''gpedit.msc''' as an Administrator
** Group Policy  '''Computer Configuration''', '''Administrative Templates''', '''Windows Components''', '''Remote Desktop Services''', '''Remote Desktop Connection Client''', '''RemoteFX USB Device Redirection''': Allow Admnistrator and users
** run '''cmd''', '''gpupdate /force''' as an Administrator
** reboot
 
Examples at Linux side:
/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:auto
redirect all devices that are connected after session connection.
 
 
# lsusb
Bus 002 Device 009: ID 05ac:12a8 Apple, Inc. iPhone5/5C/5S/6
.
.
 
/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:id,dev:05ac:12a8
usb redirection and redirect device 05ac:12a8 (id in lsusb listing).
 
/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:dbg,id,dev:05ac:12a8
same as before with debugging.
 
Messages like:
[WARN][com.freerdp.channels.urbdrc.client] - bus:0 dev:0 not exist in udevman
should be harmless.


Currently this apparently does not work from Fedora desktop to Windows.


== See also ==
= See also =
* [[Qt4py|Qt for Python]]
* [[Qt4py|Qt for Python]]


= References =
<references/>


== External links ==
= External links =
* [https://www.qt.io/ qt.io - The Qt Company]
* [https://www.qt.io/ qt.io - The Qt Company]
* [https://doc.qt.io/Qt-5/linux.html doc.qt.io - Qt for Linux/X11]
* [https://doc.qt.io/Qt-5/linux.html doc.qt.io - Qt for Linux/X11]
Line 35: Line 113:
* [https://doc.qt.io/qtcreator/qt-creator-accelbubble-example.html doc.qt.io - Creating a Mobile Application]
* [https://doc.qt.io/qtcreator/qt-creator-accelbubble-example.html doc.qt.io - Creating a Mobile Application]


 
[[Category:Development]]
[[Category:Qt]]
[[Category:Qt]]

Latest revision as of 08:33, 25 April 2019

Qt development on Fedora Linux raises questions, what can be done on Fedora Linux and what else is needed and how it can be used when using Linux desktop?

Development mode

There are three main development modes: Widget, Quick and Python.

Qt Widget based development is the original (since 1995-05-20), OOP (Object Oriented Programming) and C++ way of Qt programming.

Qt Quick and its QML (Qt Modeling Language) was introduced (2010) as easier and quicker way to create user interfaces. A QML document is, similarly to HTML, a description of an hierarchical object tree. The code structure looks very similar to a definition of a JSON object. QML objects can be styled, similarly to CSS, and JavaScript code can be inlined to handle assertive aspects. If you're familar with front-end web developement you'll grasp QML in no time.[1] - so the Qt Widget programming is the traditional programming where code is written in C++ and compiled to binary, Qt Quick + QML was created to get vast amount of web-developers involved to Qt-developement.

Qt for Python provides both of these worlds, both programming methods can be used in Python language and in less tedious format without compiling the source code.

Desktop

Desktop development is straightforward with Fedora Linux, all needed packages exist in standard repositories and main toolchain is available.

Mobile

<html> <iframe width="560" height="315" src="https://www.youtube.com/embed/WFGRr0DV3oM" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </html>

Qt for Python currently (2019-04) is not supported on iPhone nor Android target devices.


Google Android toolchain: Android Studio

Android SDK, NDK (native development kit, C/C++), Java (Linux OpenJDK can be used).

Android Studio download

Apple iOS toolchain: XCode

Development for iOS devices is done using Apple Xcode IDE. To use it, the Apple developer account and iOS Developer Program certificate is needed and received from Apple when joining to the developer program. Certificate is used to install application to a device.

The current Mac OS X relase is High Sierra 10.13.6 (2019-05-20).

Xcode download

Mac OS X installation ISO-image download requires existing Mac OS X installation that came with Apple laptop.

Xcode on Fedora Linux

Xcode runts on Mac OS X operating system that is based on BSD variant. Its binaries and hence Xcode does not run directly on Linux. However, OS X can be run inside virtual machine like VirtualBox that runs on local Fedora desktop.

Xcode on shared Mac Server

Apple used to manufacture physical hardware servers and Mac OS X server operating system for them. Since then they stopped both and these days Mac OS X runs on x86_64 hardware and has its plus edition has server features that can be installed on Intel x86_64 hardware.

Xcode on cloud server

There are service providers that rent servers running Mac OS X and provide remote access to it. That might be a feasible solution for most, for some with strict source code privacy, it might be challenging to get proper NDA contract.

Hardware targets via USB

Locally? No idea.

Remotely to Windows or Mac OSX: In theory yes. Fedora's RDP client FreeRDP supports USB-port redirection over IP and some devices like USB-cameras and smartcard readers are reported to work (2019 beginning). However, the forwarding appers to be device specific and Android- and iOS-phones are not supported.

Few notes:

  • Fedora's freerdp package needs to be recompiled with -DCHANNEL_URBDRC_CLIENT=ON setting (that is off by default in spec) and reinstalled:
xfreerdp /buildconfig

list of build options.

  • In order to work on Windows host must be enabled:
    • processor in server must support Streaming SIMD Extensions 2 (SSE2) run: dxdiag
    • MS: RemoteFX USB Redirection
    • freerdp - RemoteFX
    • run gpedit.msc as an Administrator
    • Group Policy Computer Configuration, Administrative Templates, Windows Components, Remote Desktop Services, Remote Desktop Connection Client, RemoteFX USB Device Redirection: Allow Admnistrator and users
    • run cmd, gpupdate /force as an Administrator
    • reboot

Examples at Linux side:

/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:auto

redirect all devices that are connected after session connection.


# lsusb
Bus 002 Device 009: ID 05ac:12a8 Apple, Inc. iPhone5/5C/5S/6
.
.
/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:id,dev:05ac:12a8

usb redirection and redirect device 05ac:12a8 (id in lsusb listing).

/usr/bin/xfreerdp /u:John\ Doe  /v:server.example.com /usb:dbg,id,dev:05ac:12a8

same as before with debugging.

Messages like:

[WARN][com.freerdp.channels.urbdrc.client] - bus:0 dev:0 not exist in udevman

should be harmless.

Currently this apparently does not work from Fedora desktop to Windows.

See also

References

External links