Заметки по платформе - iOS
Развёртывание
Разработка, сборка, запуск и отладка приложения Qt для iOS могут выполняться с помощью Qt Creator на macOS. Инструментарий предоставляется Xcode от Apple, а запуск qmake для проекта, предназначенного для iOS, также сгенерирует файл проекта Xcode (.xcodeproj) с начальными настройками приложения. Поскольку Qt Creator не предоставляет интерфейс для управления всеми настройками, специфичными для платформы iOS, иногда необходимо настраивать их непосредственно в Xcode. Проверка правильности конфигурации приложения особенно важна перед отправкой приложения на публикацию в App Store Apple.
Файлы списка свойств информации
Файл списка свойств информации (Info.plist) в iOS и macOS используется для настройки пакета приложения. Эти параметры конфигурации включают:
- Имя и идентификатор отображения приложения
- Необходимые возможности устройства
- Поддерживаемые ориентации пользовательского интерфейса
- Иконки и изображения запуска
Подробнее ознакомьтесь с документацией по файлу списка свойств информации в библиотеке разработчика iOS.
При выполнении qmake генерируется файл Info.plist с соответствующими значениями по умолчанию.
Рекомендуется заменить сгенерированный Info.plist своим собственным копированием, чтобы предотвратить его перезапись при следующем запуске qmake. Вы можете определить пользовательский список свойств информации с помощью переменной QMAKE_INFO_PLIST в файле .pro.
ios {
QMAKE_INFO_PLIST = ios/Info.plist
} Активные элементы приложения
Для файлов, которые не могут быть включены в ресурсы Qt, переменная qmake QMAKE_BUNDLE_DATA предоставляет способ указать набор файлов, которые должны быть скопированы в пакет приложения. Например:
ios {
fontFiles.files = fonts/*.ttf
fontFiles.path = fonts
QMAKE_BUNDLE_DATA += fontFiles
} Для графических ресурсов альтернативным способом является использование каталогов ресурсов в Xcode, которые могут быть добавлены аналогичным образом:
ios {
assets_catalogs.files = $$files($$PWD/*.xcassets)
QMAKE_BUNDLE_DATA += assets_catalogs
} Важно: ресурсы компилируются только если переменная .path не задана. Однако, можно копировать и компилировать каталоги рекурсивно.
Иконки
Иконки должны быть установлены в Info.plist и скопированы в пакет приложения. Xcode имеет специальную поддержку иконок, но при использовании Qt обычно лучше устанавливать их в файле .pro.
Для поддержки всех разрешений и устройств следует создать несколько изображений. Подробный список необходимых изображений доступен на странице Файлы иконок. Имя файла не имеет значения, но фактический размер пикселей важен. Требуется всего несколько иконок, особенно если вы не поддерживаете iOS 6.1 или более ранние версии. Однако, для поддержки как iPhone, так и iPad, и iOS 6.1 или более ранних версий, требуются следующие изображения:
- AppIcon29x29.png: 29 x 29
- AppIcon29x29@2x.png: 58 x 58
- AppIcon29x29@2x~ipad.png: 58 x 58
- AppIcon29x29~ipad.png: 29 x 29
- AppIcon40x40@2x.png: 80 x 80
- AppIcon40x40@2x~ipad.png: 80 x 80
- AppIcon40x40~ipad.png: 40 x 40
- AppIcon50x50@2x~ipad.png: 100 x 100
- AppIcon50x50~ipad.png: 50 x 50
- AppIcon57x57.png: 57 x 57
- AppIcon57x57@2x.png: 114 x 114
- AppIcon60x60@2x.png: 120 x 120
- AppIcon72x72@2x~ipad.png: 144 x 144
- AppIcon72x72~ipad.png: 72 x 72
- AppIcon76x76@2x~ipad.png: 152 x 152
- AppIcon76x76~ipad.png: 76 x 76
Эти файлы должны быть скопированы в пакет приложения, добавив в файл .pro фрагмент кода, подобный следующему:
ios {
ios_icon.files = $$files($$PWD/ios/AppIcon*.png)
QMAKE_BUNDLE_DATA += ios_icon
} Чтобы использовать иконки, имена файлов также должны быть указаны в Info.plist. Лучший способ — указать все файлы иконок, используя ключ CFBundleIconFiles. Версию, специфичную для iPad, можно указать, используя ключ CFBundleIcons~ipad, добавив в Info.plist фрагмент кода, подобный следующему:
<key>CFBundleIcons</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon29x29.png</string>
<string>AppIcon29x29@2x.png</string>
<string>AppIcon40x40@2x.png</string>
<string>AppIcon57x57.png</string>
<string>AppIcon57x57@2x.png</string>
<string>AppIcon60x60@2x.png</string>
</array>
</dict>
</dict>
<key>CFBundleIcons~ipad</key>
<dict>
<key>CFBundlePrimaryIcon</key>
<dict>
<key>CFBundleIconFiles</key>
<array>
<string>AppIcon29x29.png</string>
<string>AppIcon29x29@2x.png</string>
<string>AppIcon40x40@2x.png</string>
<string>AppIcon57x57.png</string>
<string>AppIcon57x57@2x.png</string>
<string>AppIcon60x60@2x.png</string>
<string>AppIcon29x29~ipad.png</string>
<string>AppIcon29x29@2x~ipad.png</string>
<string>AppIcon40x40~ipad.png</string>
<string>AppIcon40x40@2x~ipad.png</string>
<string>AppIcon50x50~ipad.png</string>
<string>AppIcon50x50@2x~ipad.png</string>
<string>AppIcon72x72~ipad.png</string>
<string>AppIcon72x72@2x~ipad.png</string>
<string>AppIcon76x76~ipad.png</string>
<string>AppIcon76x76@2x~ipad.png</string>
</array>
</dict>
</dict> Это гарантирует, что соответствующие файлы будут скопированы в нужное место, и правильные иконки будут использоваться в соответствии с требованиями App Store Apple. Распределения ad-hoc также должны включать следующие имена файлов в пакет приложения для визуализации приложения в iTunes:
- iTunesArtwork 512x512
- iTunesArtwork@2x 1024x1024
Изображения запуска
Как и иконки, изображения запуска представляют собой изображения, которые необходимо скопировать в пакет приложения и ключи, которые необходимо установить в Info.plist.
Для поддержки iPhone 6 необходимо предоставить файл запуска (файл .xib для интерфейса проектирования или файл макета). Дополнительную информацию см. в документации по изображениям запуска. Предположим, что вы назвали файл запуска Launch.xib, его можно добавить в Info.plist следующим образом:
<key>UILaunchStoryboardName</key> <string>Launch</string>
Можно использовать изображения запуска (файлы PNG), как описано ниже, для поддержки iPhone 6, но это не рекомендуется. Qmake генерирует по умолчанию LaunchScreen.xib, поэтому лучше использовать другое имя для пользовательского экрана запуска, чтобы избежать конфликтов.
Начиная с iOS 7, изображения запуска определяются с помощью ключа UILaunchImages. Для поддержки этих устройств вам необходимо подготовить следующие изображения:
- LaunchImage-iOS7-568h@2x.png: 640 x 1136
- LaunchImage-iOS7-Landscape.png: 1024 x 768
- LaunchImage-iOS7-Landscape@2x.png: 2048 x 1536
- LaunchImage-iOS7-Portrait.png: 768 x 1024
- LaunchImage-iOS7-Portrait@2x.png: 1536 x 2048
- LaunchImage-iOS7@2x.png: 640 x 960
Изображения можно добавить в Info.plist следующим образом:
<key>UILaunchImages</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
</array>
<key>UILaunchImages~ipad</key>
<array>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7-Landscape</string>
<key>UILaunchImageOrientation</key>
<string>Landscape</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7-Portrait</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{768, 1024}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 568}</string>
</dict>
<dict>
<key>UILaunchImageMinimumOSVersion</key>
<string>7.0</string>
<key>UILaunchImageName</key>
<string>LaunchImage-iOS7</string>
<key>UILaunchImageOrientation</key>
<string>Portrait</string>
<key>UILaunchImageSize</key>
<string>{320, 480}</string>
</dict>
</array> Для поддержки более ранних версий iOS можно использовать строку UILaunchImageFile в Info.plist:
<key>UILaunchImageFile</key> <string>LaunchImage</string>
Имя по умолчанию — Default, но qmake генерирует некоторые изображения, поэтому лучше использовать другое имя (например, LaunchImage, как мы сделали) для предотвращения конфликтов.
- LaunchImage.png: 320 x 480
- LaunchImage@2x.png: 640 x 960
- LaunchImage-568h@2x.png: 640 x 1136
- LaunchImage-Landscape.png: 1024 x 748
- LaunchImage-Landscape@2x.png: 2048 x 1496
- LaunchImage-Portrait.png: 768 x 1004
- LaunchImage-Portrait@2x.png: 1536 x 2008
Вы можете изменить имена файлов, пока Info.plist и имена файлов остаются синхронизированными.
Наконец, все эти файлы должны быть скопированы в пакет приложения, добавив в файл .pro фрагмент кода, подобный следующему:
ios {
app_launch_images.files = $$PWD/ios/Launch.xib $$files($$PWD/ios/LaunchImage*.png)
QMAKE_BUNDLE_DATA += app_launch_images
} Это позволяет создавать универсальные приложения с допустимыми изображениями запуска, как того требуют условия App Store Apple.
Важно: "launch_images" используется внутри Qt, поэтому он будет перезаписан, если будет использован в вашем файле .pro.
Публикация в App Store Apple
Проверку готовности приложения Qt для iOS к публикации в App Store можно выполнить, как описано в руководстве по отправке приложения. Для отправки приложения можно использовать Xcode или Application Loader (установленный с Xcode). Qt Creator не предоставляет интерфейса для управления всеми настройками конфигурации проекта Xcode.
Приложение следует протестировать на различных версиях iOS и устройствах, в зависимости от того, с какими версиями оно должно быть совместимо. Минимальная целевая версия для приложений Qt — iOS 5.0.
Процесс фактической публикации включает создание сертификата распространения и профиля предоставления, создание подписанного архива вашего приложения и выполнение набора проверочных тестов на нём.
Дополнительную информацию см. в руководстве по распространению приложений в библиотеке разработчика iOS.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/archives/qt-5.6/platform-notes-ios.html