MacOS中使用QT开发iOS应用

由于项目合同中规定一部分业务内容要在手机端实现,包括安卓机和苹果机,所以选择了QT做为开发工具。程序在Win10和安卓系统上已经完美运行,这几天开始搭建iOS的编译和发布环境,由于之前没有使用过macOS,不熟悉,这一路下来但是一步一个坑😭应了最近的网络流行语,蓝瘦,香菇。
好了,步入正题,填坑过程记录以下
开发环境
物理机:Windows Server 2012
虚拟机:VMware® Workstation 12 Pro 12.5.0 build-4352439
MacOS 10.12
QT 5.7 
Xcode 8.1
一、王老师已经在Win10下部署好了macOS虚拟机系统,我直接把虚拟机文件拷贝到服务器(Win Server 2012)使用,服务器上还开着微软的虚拟机Hyper-V,在VMware中建立新的虚拟机的时候会报错。首先关掉全部的 Hyper-V相关 服务,而后卸载 Hyper-V就能够正常使用VMware了
二、在VMware中安装好macOS,从应用商店中安装 xCode ,一开始用的10.9的系统,下载时提示升级系统,因而安装了最新的MacOS10.12,固然也能够从网上下载低版本的xCode。
三、QT5.7从QT官方网站下载安装,安装完毕以后启动QT项目,编译时提示以下错误
error: Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.
解决办法:
四、从xCode7开始能够免证书 真机调试,无需开发者帐号,配置过程参考下面的文章,在这个过程当中,要保证手机一直插在电脑上。
五、我在 虚拟机的macOS系统中始终找不到苹果手机,参考下面的文章将USB兼容性改成了“USB 2.0”,从而解决了这个问题
六、继续编译QT代码,又提示以下错误:
Project ERROR:Current iphoneos SDK version(10.1) is too old. Please upgrade Xcode.

按照这片文章( http://blog.csdn.net/willib/article/details/52829317 )删除文件( Qt_install_folder/5.7/ios/mkspecs/macx-ios-clang/features/sdk.prf )的两行代码
  1. lessThan(QMAKE_MAC_SDK_VERSION, "8.0"): \  
  2. error("Current ##QMAKE_MAC_SDK SDK version (##QMAKE_MAC_SDK_VERSION) is too old. Please upgrade Xcode."
七、 QT代码生成iOS应用,首先是编译QT源代码,生成xCode工程,而后直接运行这个xCode工程,部署到苹果手机或者虚拟设备就能够了。
八、紧接着使用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插到电脑上的缘故。
九、又发现个人源代码在QT中就直接报错了,这时候我已经有砸掉电脑的冲动了。
多是  Qt Quick 2 有些特性在 iOS 平台上不支持。
-------------------------------------------------------------------------------------------------------
最后,我下载了最新的 Qt5.8 beta 版,前面的不少问题就没有了,包括前面需修改Qt的一些配置文件也不须要作了。
-------------------------------------------------------------------------------------------------------
十、若是项目中使用了 gSoap 来调用Webservice,在macOS系统中.pro文件不须要下面这段代码:
LIBS += D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/lib/libws2_32.a
十一、还有一点要注意,我一开始只给虚拟机分配了15G的空间,而后增长到了30G,还不够,而后又增长到50G,最后增长到了70G。这里提醒 至少预留50G以上的空间。

附  扩展空间的方法( http://www.cnblogs.com/atree/p/MacOSX_diskutil_xcode.html ):
一、首先在VMware中扩展;
二、而后进入虚拟机的macOS操做系统使用diskutil命令

(1).打开终端,输入diskutil listhtml

(2).从显示的列表中找到你须要扩展的分区,如上图。个人磁盘有107.4G,但系统分区为42.1GB。(分区的ID通常为diskXsX,个人ID是disk0s2);ios

(3).而后输入 diskutil resizeVolume disk0s2 100GB,其中disk0s2为对应分区的ID,100GB为目标大小(这里的目标大小不能超过这个磁盘的总额);回车,等待完成就可使用了。xcode


折腾了三天,总结一下:用QT开发跨平台应用,若条件容许,最好在macOS环境下开发,能够保证能同时调试安卓和iOS。

于2016年11月7日济南至洛阳火车上






相关文章
相关标签/搜索