Qt für iOS

Qt für iOS ermöglicht die Entwicklung von Anwendungen für Apples iPhone und iPad sowie für den Apple Vision Pro.

Um mit Qt für iOS zu entwickeln, folgen Sie der Anleitung "Erste Schritte" und erkunden Sie dann Beispiele für iOS und verwandte Themen.

Unterstützte Konfigurationen

Die folgenden Versionen der Build-Umgebung und Laufzeit-Zielplattform werden von Qt 6.8 unterstützt.

Build-UmgebungZielplattformArchitektur
Xcode 15 (iOS 17 SDK) oder höheriOS 16 oder höher (einschließlich iOS 18)armv8, arm64

Hinweis: Apples Vorwärtskompatibilitätsversprechen für iOS stellt im Allgemeinen sicher, dass Qt-Anwendungen auch auf neuen Betriebssystemversionen gut laufen. Eventuell auftretende Probleme werden gemäß den Qt-Verzweigungs- und Supportrichtlinien priorisiert und geplant. Unterstützung für neue Betriebssystemfunktionen ist in der Regel nicht in Patch-Versionen enthalten.

Zielgeräte für die automatisierten Tests
GerätOS-VersionArchitekturFormfaktor
iPhone 12iOS 17armv8 (arm64)Mobil
iPhone 11iOS 17armv8 (arm64)Mobil
iPad Pro, 3. GenerationiOS 17armv8 (arm64)Tablet
iPad, 6. GenerationiOS 17armv8 (arm64)Tablette

Build-Umgebung

Die Build-Umgebung für iOS wird von der Apple-Anwendung Xcode bereitgestellt, die sowohl die Toolchain (Compiler, Linker und andere Tools) als auch das iOS-Plattform-SDK (Header und Bibliotheken) enthält, gegen das Sie bauen und linken. Zusammen definieren sie, wie Ihre Anwendung erstellt wird.

Apple empfiehlt im Allgemeinen (und im Fall des App Store ist dies sogar vorgeschrieben), dass Anwendungen mit dem neuesten verfügbaren SDK erstellt werden, daher sollten Sie immer das neueste Xcode von Apple verwenden. Dies kann ein Upgrade der macOS-Version Ihres Systems erfordern, da neue Xcode-Versionen möglicherweise nicht auf älteren macOS-Versionen laufen.

Hinweis: Die iOS-Build-Umgebung wird immer vollständig durch die Xcode-Version (seine Toolchain und SDKs) definiert, die Sie verwenden - nicht durch die Version von macOS, auf der Sie Xcode ausführen.

Abmelden von Verhaltensänderungen

Eine Einschränkung bei der Verwendung der neuesten Xcode-Version und des neuesten SDKs zum Erstellen Ihrer Anwendung besteht darin, dass die iOS-System-Frameworks manchmal entscheiden, ob Verhaltensänderungen auf der Grundlage des SDKs, mit dem Sie Ihre Anwendung erstellt haben, aktiviert werden sollen oder nicht.

Mit dieser Technik kann Apple sicherstellen, dass Binärdateien, die mit älteren SDKs erstellt wurden, auch unter neueren iOS-Versionen ohne Regressionen ausgeführt werden können.

Als beispielsweise der dunkle Modus in macOS 10.14 Mojave eingeführt wurde, behandelte macOS nur Anwendungen, die mit dem 10.14 SDK erstellt wurden, als Unterstützung für den dunklen Modus und ließ Anwendungen, die mit früheren SDKs erstellt wurden, mit dem Standardaussehen des hellen Modus.

Die Erstellung mit einer älteren Xcode-Version und einem älteren SDK ist eine Möglichkeit, solche Verhaltensänderungen zu umgehen, aber es ist eine Notlösung und sollte nur angewendet werden, wenn Ihre Anwendung keine andere Möglichkeit hat, das Problem zu umgehen.

Zielplattformen

Bei der Entwicklung für iOS wird eine Technik namens " Weak Linking" verwendet, die es Ihnen ermöglicht, Ihre Anwendung mit den Headern und Bibliotheken des neuesten Plattform-SDK zu entwickeln, während Ihre Anwendung gleichzeitig auf iOS-Versionen bereitgestellt werden kann, die niedriger als die SDK-Version sind. Wenn die Binärdatei auf einer iOS-Version ausgeführt wird, die niedriger ist als das SDK, mit dem sie erstellt wurde, prüft Qt zur Laufzeit, ob eine Plattformfunktion verfügbar ist, bevor sie verwendet wird.

Theoretisch würde dies die Ausführung Ihrer Anwendung auf jeder einzelnen veröffentlichten iOS-Version ermöglichen, aber aus praktischen (und technischen) Gründen gibt es eine untere Grenze für diesen Bereich, bekannt als das Einsatzziel Ihrer Anwendung. Wenn die Binärdatei auf einer iOS-Version unterhalb des Deployment-Targets gestartet wird, gibt Qt eine Fehlermeldung aus und die Anwendung läuft nicht.

Qt drückt das Deployment Target über die Variablen CMAKE_OSX_DEPLOYMENT_TARGET oder QMAKE_MACOSX_DEPLOYMENT_TARGET Variablen, die standardmäßig auf das minimal unterstützte Einsatzziel für Qt gesetzt ist.

Sie müssen das Deployment-Target nur dann erhöhen, wenn Ihr eigener Code APIs verwendet, die in einer höheren iOS-Version als der Standardversion von Qt hinzugefügt wurden, und Sie keine @available Checks verwenden, um ihre Verwendung zur Laufzeit zu schützen.

So erhöhen Sie das Deployment-Target mit CMake:

set(CMAKE_OSX_DEPLOYMENT_TARGET "42.0")

oder mit qmake:

QMAKE_MACOSX_DEPLOYMENT_TARGET = 42.0

Hinweis: Sie sollten das Bereitstellungsziel nicht über den von Qt festgelegten Standardwert hinaus verringern. Dies wird wahrscheinlich zu Abstürzen zur Laufzeit führen, wenn die Binärdatei auf einer iOS-Version bereitgestellt wird, die niedriger ist als die von Qt erwartete Version.

Weitere Informationen zur SDK-basierten Entwicklung auf Apple-Plattformen finden Sie in der Entwicklerdokumentation von Apple.

Erste Anfänge

Installieren von Xcode

Xcode ist eine Voraussetzung für die Entwicklung mit Qt für iOS. Es kann aus dem App Store installiert oder von Apples Entwickler-Website heruntergeladen werden.

Nach der Installation führen Sie Xcode bitte einmal aus, damit es alle erforderlichen Abhängigkeiten installiert.

Überprüfen Sie dann, ob das System die richtige Xcode-Installation verwendet, indem Sie das Tool xcode-select verwenden.

$ xcode-select -print-path
/Applications/Xcode.app/Contents/Developer

Wenn die Ausgabe nicht den Erwartungen entspricht, wählen Sie die Xcode-Installation explizit aus.

$ sudo xcode-select --switch /Applications/Xcode.app

Für das Testen von Qt-Anwendungen im Simulator, der mit Xcode geliefert wird, ist dies alles, was Sie brauchen. Um jedoch Anwendungen auf einem physischen Gerät auszuführen und/oder Ihre Anwendungen im App Store zu veröffentlichen, müssen Sie dem Apple Developer Program beitreten und Entwicklerzertifikate und Bereitstellungsprofile einrichten.

Bevor Sie Qt-Anwendungen erstellen, sollten Sie testen, ob Xcode korrekt eingerichtet ist, indem Sie zum Beispiel eine der Standard-Xcode-Anwendungsvorlagen auf Ihrem Gerät ausführen.

Installieren oder Erstellen von Qt

Um Qt zu installieren oder zu erstellen, folgen Sie der allgemeinen Anleitung für die ersten Schritte mit Qt.

Erstellen von Anwendungen von der Kommandozeile aus

Verwenden Sie CMake oder qmake, um festzulegen, wie Ihre iOS-Anwendung gebaut werden soll. Sowohl CMake als auch qmake können eine xcodeproj Datei erzeugen, die dann über die Kommandozeile geladen und gebaut werden kann.

CMake verwenden

Das Skript qt-cmake in <Qt-dir>/<version>/ios/bin/ kümmert sich um das Einrichten der Toolchain und der korrekten Architekturen für Sie.

Verwendung des qt-cmake Skripts:

<Qt-dir>/<version>/ios/bin/qt-cmake <source-dir>

Unter Verwendung der generierten xcodeproj Datei können Sie entweder Xcode verwenden, um Ihre Anwendung zu erstellen, oder xcodebuild von der Befehlszeile aus ausführen. Um eine Liste der verfügbaren Ziele und Schemata für Ihre Anwendung zu erhalten, führen Sie den folgenden Befehl aus:

xcodebuild -list -project <your-app>.xcodeproj

Führen Sie dann xcodebuild build aus und geben Sie die Details Ihrer Anwendung ein:

xcodebuild build -allowProvisioningUpdates -project <your-app>.xcodeproj -scheme <your-scheme> -configuration Debug -destination "generic/platform=iOS" -destination-timeout 1 ENABLE_ONLY_ACTIVE_RESOURCES=NO

Verwendung von qmake

Legen Sie zunächst fest, wie die Anwendung mit qmake erstellt werden soll. Verwenden Sie dann die generierte Datei xcodeproj, um die Anwendung zu erstellen, entweder in Xcode oder von der Kommandozeile aus.

qmake <your-app>.pro

qmake erstellt ein Wrapper-Makefile, das wiederum xcodebuild aufruft, sodass Sie make ausführen können, um Ihre Anwendung zu erstellen:

make -j8

Beachten Sie, dass Sie das Projekt neu importieren müssen, wenn sich sein Setup ändert, zum Beispiel wenn Sie Quelldateien hinzufügen oder entfernen.

Anpassen der Xcode Projekteinstellungen

Die Variable QMAKE_MAC_XCODE_SETTINGS qmake kann verwendet werden, um Xcode-Einstellungen anzupassen, z. B:

development_team.name = DEVELOPMENT_TEAM
development_team.value = <your-team-id>
QMAKE_MAC_XCODE_SETTINGS += development_team

Andere qmake-Variablen sind ebenfalls nützlich:

QMAKE_TARGET_BUNDLE_PREFIX = com.<your-company>
QMAKE_BUNDLE = <your-app>

Ausführen von Anwendungen in Xcode

Die von qmake und CMake erzeugten Xcode-Projekte unterstützen die Ausführung der Anwendung sowohl auf iOS-Geräten als auch im iOS-Simulator.

Hinweis: Da die Standardarchitektur der Qt für iOS Simulator-Bibliotheken x86_64 ist, muss die Anwendung unter Rosetta auf Apple Silicon Macs ausgeführt werden. Wenn die Rosetta-basierten Ausführungsziele nicht im Ausführungszielmenü von Xcode aufgeführt sind, können sie über das Menü Product > Destination > Destination Architectures aktiviert werden.

Erstellen und Ausführen von Anwendungen mit Qt Creator

Informationen zum Einrichten und Ausführen von Qt für iOS-Anwendungen finden Sie in der Dokumentation Qt Creator:

  • Qt Creator: Verbinden Sie iOS-Geräte.

Beachten Sie, dass dies immer noch eine funktionierende Xcode-Installation erfordert.

Beispiele für iOS

Unter Qt Creator können getestete Beispiele für iOS nachgeschlagen werden. Verwenden Sie das Schlüsselwort ios, um nach Beispielen im Willkommensmodus Qt Creator zu suchen. Beachten Sie, dass einige Beispiele eine eingeschränkte Funktionalität aufweisen können.

Eine Liste der Beispiele, von denen bekannt ist, dass sie auf iOS-Geräten funktionieren, finden Sie unter Qt for iOS Examples.

Die folgenden Themen bieten weitere Details zu Qt für iOS:

Verwendung von Objective-C-Code in Qt-Anwendungen

Clang, der Compiler, der für Anwendungen auf Apple-Plattformen verwendet wird, erlaubt das Mischen von C++- und Objective-C-Code. Um diesen Modus zu aktivieren, verwenden Sie die Erweiterung .mm für die entsprechenden Quelldateien und fügen Sie diese wie gewohnt zu Ihrem Projekt hinzu.

Mit CMake:

target_sources(myapp PRIVATE objc_code.mm)

Mit qmake:

SOURCES += objc_code.mm

Sie können dann Objective-C-Frameworks aus Apples Developer Library in Ihren Qt-Anwendungen verwenden.

Um Funktionalität für den Rest Ihrer Anwendung freizugeben, ohne alle Ihre Quelldateien umbenennen zu müssen, deklarieren Sie Hilfsfunktionen in einem Header und implementieren Sie die Funktionalität in einer Objective-C++ Quelldatei:

// objc_code.h
QString localizedHostName();

// objc_code.mm
#include <Foundation/NSHost.h>
QString localizedHostName()
{
    return QString::fromNSString(NSHost.currentHost.localizedName);
}

© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.