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日濟南至洛陽火車上






相關文章
相關標籤/搜索