因为项目合同中规定一部分业务内容要在手机端实现,包括安卓机和苹果机,因此选择了QT作为开发工具。程序在Win10和安卓系统上已经完美运行,这几天开始搭建iOS的编译和发布环境,因为以前没有使用过macOS,不熟悉,这一路下来可是一步一个坑??应了最近的网络流行语,蓝瘦,香菇。
error: Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.
解决办法:
4、从xCode7开始可以免证书真机调试,无需开发者账号,配置过程参考下面的文章,在这个过程中,要保证手机一直插在电脑上。
5、我在虚拟机的macOS系统中始终找不到苹果手机,参考下面的文章将USB兼容性改为了“USB 2.0”,从而解决了这个问题
6、继续编译QT代码,又提示如下错误:
Project ERROR:Current iphoneos SDK version(10.1) is too old. Please upgrade Xcode.
- lessThan(QMAKE_MAC_SDK_VERSION, "8.0"): \
- error("Current ##QMAKE_MAC_SDK SDK version (##QMAKE_MAC_SDK_VERSION) is too old. Please upgrade Xcode.")
7、QT代码生成iOS应用,首先是编译QT源代码,生成xCode工程,然后直接运行这个xCode工程,部署到苹果手机或者虚拟设备就可以了。
8、紧接着使用xCode编译时又遇到了下面的问题:
=== BUILD TARGET farmer OF PROJECT farmer WITH CONFIGURATION Debug ===
Check dependencies
Signing for "farmer" requires a development team. Select a development team in the project editor.
Code signing is required for product type ‘Application‘ in SDK ‘iOS 10.1‘
** BUILD FAILED **
The following build commands failed:
Check dependencies
(1 failure)
make: *** [xcodebuild-debug-iphoneos] Error 65
16:42:06: 进程"/usr/bin/make"退出,退出代码 2 。
Error while building/deploying project farmer (kit: iphoneos-clang Qt 5.7.0 for iOS)
When executing step "Make"
16:42:06: Elapsed time: 00:24.
这是我因为我没有把iPhone6S插到电脑上的缘故。
9、又发现我的源代码在QT中就直接报错了,这时候我已经有砸掉电脑的冲动了
Arguments: -nonrelocatable QtQuick 2.7 /Users/wang/Qt5.7.0/5.7/ios/qml
This plugin does not support createPlatformOpenGLContext!
QQmlComponent: Component is not ready
file:///Users/wang/Qt5.7.0/5.7/ios/qml/loaddependencies.qml:2:1: module "QtQuick" plugin "qtquick2plugin" not found
QT中的错误提示:
module "QtQuick.Controls.Styles" is not installed
从网上搜了老长时间,原因竟是QML2不支持iOS开发,这是逗我玩吗,不是号称全平台都可以吗。
还是老老实实的使用QML1进行开发吧。
听,慕容晓晓在唱“最后知道真相的我眼泪掉下来”。
10、还有一点要注意,我一开始只给虚拟机分配了15G的空间,然后增加到了30G,还不够,然后又增加到50G,最后增加到了70G。这里提醒至少预留50G以上的空间。
1、首先在VMware中扩展;
2、然后进入虚拟机的macOS操作系统使用diskutil命令
(1).打开终端,输入diskutil list
(2).从显示的列表中找到你需要扩展的分区,如上图。我的磁盘有107.4G,但系统分区为42.1GB。(分区的ID一般为diskXsX,我的ID是disk0s2);
(3).然后输入 diskutil resizeVolume disk0s2 100GB,其中disk0s2为对应分区的ID,100GB为目标大小(这里的目标大小不能超过这个磁盘的总额);回车,等待完成就可以使用了。
折腾了三天,总结一下:用QT开发跨平台应用,若条件允许,最好在macOS环境下开发,可以保证能同时调试安卓和iOS。
于2016年11月7日济南至洛阳火车上
大风起兮云飞扬++