QT 5.7 for iOS Xcode 8 Project ERROR: Xcode not set up properly. You may need to confirm the license


手机升级到了ios10,然后想着懒得折腾直接升级到xcode 8好直接真机调试,嗯,想法是对的,然后xcode 8上也可以直接在ios 10上调试了。

但是当换到Qt creator 4.0.1 / Qt 5.7 上时编译iOS程序时却是各种问题啊,搞得整个人都不好了,一种入坑的感觉。


首先第一个问题:Project ERROR: Xcode not set up properly. You may need to confirm the license agreement by running /usr/bin/xcodebuild.

解决这个问题的时候,请尽量别选择如下这个建立符号链接的办法,这样后的确会解决如上的问题,但是接下来不出意外的话你会碰到其他问题的。

cd /Applications/Xcode.app/Contents/Developer/usr/bin/
sudo ln -s xcodebuild xcrun

然后应该这样做:

打开Qt安装目录下的这个文件:Qt_install_folder/5.7/clang_64/mkspecs/features/mac/default_pre.prf  (mac,Qt_install_folder为你Qt的安装目录,下同)

然后替换:

isEmpty($$list($$system("/usr/bin/xcrun -find xcrun 2>/dev/null")))

isEmpty(##list(##system("/usr/bin/xcrun -find xcrun 2>/dev/null")))     //两个#替换为两个$

为:

isEmpty(##list(##system("/usr/bin/xcrun -find xcodebuild 2>/dev/null")))      //两个#替换为两个$

继续打开Qt安装目录下的这个文件:Qt_install_folder/5.7/ios/mkspecs/features/mac/default_pre.prf  (iOS ) 做和上面一样的替换操作。


这样做了后,不出意外的话你还会碰到第二个问题:Current iPhone SDK version (10.0) is too old. Please upgrade Xcode.

解决办法首先打开这个文件:Qt_install_folder/5.7/ios/mkspecs/macx-ios-clang/features/sdk.prf

然后直接删除:

lessThan(QMAKE_MAC_SDK_VERSION, "8.0"): \
error("Current ##QMAKE_MAC_SDK SDK version (##QMAKE_MAC_SDK_VERSION) is too old. Please upgrade Xcode.")    //连个#替换为两个$

网上很多说的是把8.0改为10.0就好,但是我这里修改了也不行,然后看到官方说的是新版本中直接删除这句就好。恩,好了,这个问题就解决了。


然后接着再编译一遍,你会发现又一个让人无语的问题,错误问题类似如下:

<span style="color:#ff0000;"><strong>xcodebuild: error: Unable to find a destination matching the provided destination specifier:
		{ id:12.9 inch }</strong></span>

	Unsupported device specifier option.
	The device “My Mac” does not support the following options: id
	Please supply only supported device specifier options.

	Available destinations for the xxx scheme:
		{ platform:iOS Simulator, id:5EDED807-A907-4901-AB69-1CFE63C212C4, OS:10.0, name:iPad Air }
		{ platform:iOS Simulator, id:8A51F62A-C2D2-4FE7-9BCA-428A425D99E9, OS:10.0, name:iPad Air 2 }
		{ platform:iOS Simulator, id:1DAF8576-D9E2-4A0E-9D32-EE8F05CC584C, OS:10.0, name:iPad Pro (9.7 inch) }
		{ platform:iOS Simulator, id:97376BFD-79D0-4FA6-85BE-22588D90CD5E, OS:10.0, name:iPad Pro (12.9 inch) }
		{ platform:iOS Simulator, id:FA21EBD9-8839-4F93-86EA-104D5243B5F6, OS:10.0, name:iPad Retina }
		{ platform:iOS Simulator, id:81493470-3388-4C63-89A6-8BCA62918939, OS:10.0, name:iPhone 5 }
		{ platform:iOS Simulator, id:2853D1D4-7529-4D6B-A584-DFC264370BE2, OS:10.0, name:iPhone 5s }
		{ platform:iOS Simulator, id:8A561CAE-916B-4439-86BA-94EACBB5C5C1, OS:10.0, name:iPhone 6 }
		{ platform:iOS Simulator, id:C91762E8-3F35-4222-B236-D9631D3A2E5D, OS:10.0, name:iPhone 6 Plus }
		{ platform:iOS Simulator, id:6F4DD28B-24B8-4B68-92A6-3347CDFA7398, OS:10.0, name:iPhone 6s }
		{ platform:iOS Simulator, id:DAEFD9B5-E744-4038-9E5C-84DD1E37C31E, OS:10.0, name:iPhone 6s Plus }
		{ platform:iOS Simulator, id:A8168B2A-1B2B-4B9A-A590-B8133BCFEBB5, OS:10.0, name:iPhone 7 }
		{ platform:iOS Simulator, id:9056F4E6-A42B-49FE-8738-E7DD48553E3F, OS:10.0, name:iPhone 7 Plus }
		{ platform:iOS Simulator, id:FA2AE9AC-C7CA-4E5D-9626-9F74AE37C9AC, OS:10.0, name:iPhone SE }
当看到这么多的问题,而且一步一个坑的时候,其实我的心里是拒绝的,但是不能就此放弃,对,继续往下。。

又是一番搜索,问题还是会被解决的,解决办法如下:

打开这个文件:Qt_install_folder/5.7/ios/mkspecs/macx-ios-clang/xcodebuild.mk,注意如果无法直接打开的话,可以用vim打开,按道理这个提醒应该是多余的。

然后替换:

IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | perl -lne 'print ##1 if /((.*?))/' | tail -n 1)"    //两个#替换为两个$
为:

IPHONESIMULATOR_GENERIC_DESTINATION := "id=$(shell xcrun simctl list devices | grep -E 'iPhone|iPad' | grep -v unavailable | awk 'match (##0, /\(([A-F0-9\-]*\))/ ) { print substr (##0, RSTART+1, RLENGTH-2) }' | tail -n 1)"   //两个#替换为两个$

这样修改后,这个问题也算是解决了,重新清理编译一遍的时候,嗯哼,通过了,你不会这样就暗自庆幸了吧,我特么终于变过了啊!!

too young 剧本不是这样写的,当你编译过了,然后开始debug运行的时候,特么simulator该死的模拟器起不起来,然后输出:Starting remote process.Run ended.

问题到了这里,其实我的内心已经抓狂了,按捺着操蛋的心情继续,折腾了许久还是无法解决,但是编译出来的工程用xcode 打开后编译运行时没有问题的,模拟器上可以看到运行效果,然后没办法,时间也不晚了,实在没心思继续耗下去,我决定就此打住了,此处我是笑哭的表情,真的。。。



最后,我决定了,还是换回xcode 7重新折腾一遍吧。。

已哭死。


换回xcode 7.3.1后,在Qt Creator上连接真机编译iOS测试程序的时候又出现了问题,问题如下:

error: No matching provisioning profiles found: No provisioning profiles with a valid signing identity (i.e. certificate and private key pair) matching the bundle identifier “com.admin.untitled” were found.

我在xcode上用的是免费的开发者账户,解决这个问题的方法是,打开在Qt Creator生成的Debug或者是Release文件,在该文件下生成了一个对应的xcode工程,然后打开该xcode工程,找到xcode工程设置的Build settings --> Code Signing --> Code Signing Identity: 这里的默认设置应该是iOS Developer,然后改为你账户对应的iPhone Developer,这样设置后再在Qt Creator上重新构建,就没有这个问题了。


还有一个类似解决办法的问题是,当我在用企业账户打包IPA的时候,第一次打包没问题,但是当我将工程第二次打包的时候,就提示了下面这样的问题:

An App ID with Identifier 'xxx.xxx' is not available. Please enter a differen

出现这个问题的时候,我也是在网上找了很久,很多的办法都是说的直接在工程上修改Bundle Identifier,不和报错的相同就好了,但这样的问题是,我这里的bundle ID可是和证书绑定了的啊,如果这样单方面的修改工程属性,那我不是还得重新生成一个证书啊。。最后摸索下后,发现可以和上面那个问题同样的改法,修改Code Signing Identity为你对应的开发者账户,然后就没有报这个错了,而且也可正常的再次打包。


然后,我就在想,为什么永远有这么多的坑。。




注意!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。



 
© 2014-2019 ITdaan.com 粤ICP备14056181号