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
1、王老師已經在Win10下部署好了macOS虛擬機系統,我直接把虛擬機文件拷貝到服務器(Win Server 2012)使用,服務器上還開着微軟的虛擬機Hyper-V,在VMware中創建新的虛擬機的時候會報錯。首先關掉所有的 Hyper-V相關 服務,然后卸載 Hyper-V就可以正常使用VMware了
2、在VMware中安裝好macOS,從應用商店中安裝 xCode ,一開始用的10.9的系統,下載時提示升級系統,於是安裝了最新的MacOS10.12,當然也可以從網上下載低版本的xCode。
3、QT5.7從QT官方網站下載安裝,安裝完畢之后啟動QT項目,編譯時提示如下錯誤
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.

按照這片文章( 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."
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中就直接報錯了,這時候我已經有砸掉電腦的沖動了。
可能是  Qt Quick 2 有些特性在 iOS 平台上不支持。
-------------------------------------------------------------------------------------------------------
最后,我下載了最新的 Qt5.8 beta 版,前面的很多問題就沒有了,包括前面需修改Qt的一些配置文件也不需要做了。
-------------------------------------------------------------------------------------------------------
10、如果項目中使用了 gSoap 來調用Webservice,在macOS系統中.pro文件不需要下面這段代碼:
LIBS += D:/Qt/Qt5.7.0/Tools/mingw530_32/i686-w64-mingw32/lib/libws2_32.a
11、還有一點要注意,我一開始只給虛擬機分配了15G的空間,然后增加到了30G,還不夠,然后又增加到50G,最后增加到了70G。這里提醒 至少預留50G以上的空間。

附  擴展空間的方法( http://www.cnblogs.com/atree/p/MacOSX_diskutil_xcode.html ):
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日濟南至洛陽火車上









免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM