我的Qt和Qt Creator知识非常缺乏,我不得不尝试重建我们现有的应用程序,使其成为iOS 11的64位。
在为iOS构建发布版本时,我收到以下错误:
Check dependencies
Code Signing Error: No profiles for 'com.yourcompany.MYTESTAPP' were found: Xcode couldn't find any iOS App Development provisioning profiles matching 'com.yourcompany.MYTESTAPP'. Automatic signing is disabled and unable to generate a profile. To enable automatic signing, pass -allowProvisioningUpdates to xcodebuild.
Code Signing Error: Code signing is required for product type 'Application' in SDK 'iOS 11.0'
我尝试在Info.plist中替换com.yourcompany,但似乎文件是在每次构建时自动生成的,因此更改它们会被覆盖。有没有其他方法可以用我们的域名替换该域名?
最简单的解决方案可能是执行错误建议并将-allowProvisioningUpdates
传递给xcodebuild,但我无法弄清楚如何......另外,我找不到有关该主题的任何有用的文章。< / p>
我确实找到了this SO question,但对于像我这样的初学者来说,那里的答案太过先进了。我根据接受的答案尝试了以下内容,没有任何影响:
contains(MYDEFINES, iOS) {
QMAKE_CXXFLAGS += -allowProvisioningUpdates
}
编辑:知道我确实启用了“自动管理签名”Qt Creator的构建设置可能很重要。而且我在Qt 5.9.1和Qt Creator 4.4.0上。
答案 0 :(得分:1)
使用CI构建时遇到了同样的问题。通过Makefile
及其包含搜索,我发现您可以使用xcodebuild
变量将额外的标记传递给XCODEBUILD_FLAGS
。添加构建环境应该可以解决问题。
答案 1 :(得分:0)
是的,您可以将数据从.pro
项目文件传递到Info.plist
。当您运行QMake时,这将构建您的Xcode项目文件并通过Xcode的设置。因此,重要的是QMake,而不是Qt Creator。
不幸的是,已经进行了更改和错误(例如QTBUG-70072),并且文档中也有遗漏之处。
从Qt 5.11.2开始,以下是设置包(以及其他一些字段)的方法:
QMAKE_INFO_PLIST = path/to/your/Info.plist
QMAKE_TARGET_BUNDLE_PREFIX = com.yourcompany
QMAKE_BUNDLE = yourapp
QMAKE_IOS_DEPLOYMENT_TARGET = 11.0
QMAKE_APPLE_TARGETED_DEVICE_FAMILY = 1
如果您未设置QMAKE_BUNDLE
,则QMake将使用您的TARGET
。就我而言,我的应用程序捆绑包ID都是小写,而我的TARGET
则不是,并且捆绑包区分大小写。
QMAKE_IOS_DEPLOYMENT_TARGET
设置最低的iOS版本。
QMAKE_APPLE_TARGETED_DEVICE_FAMILY
设置设备系列:1
用于iPhone,2
用于iPad,1,2
支持两者。
在您的Info.plist
中,您应该具有:
<key>CFBundleIdentifier</key>
<string>${PRODUCT_BUNDLE_IDENTIFIER}</string>
The official documentation relating to Info.plist is on the QMake Variables Reference page。