我能否从Qt Creator向xcodebuild传递参数?

4

我的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,但我无法弄清楚如何做...此外,我找不到任何有用的文章。

我找到了这个SO问题,但那里的答案对于像我这样的初学者来说太高级了。根据接受的答案,我尝试了以下内容,但没有任何效果:

contains(MYDEFINES, iOS) {
    QMAKE_CXXFLAGS += -allowProvisioningUpdates
}

编辑:重要的是要知道我已经在Qt Creator的构建设置中启用了“自动管理签名”,并且我正在使用Qt 5.9.1和Qt Creator 4.4.0。


当从终端手动执行命令xcodebuild build -project MYTESTAPP.xcodeproj -scheme MYTESTAPP -configuration Release -destination generic/platform=iOS -destination-timeout 1 -allowProvisioningUpdates时,它确实会进一步执行,但最终会崩溃并显示“以下构建命令失败:Ld PORTA.build/Release-iphoneos/PORTA.build/Objects-normal/arm64/PORTA normal arm64”。我猜我得去看看这个。 - delucasvb
2个回答

2

在使用CI进行构建时,我遇到了同样的问题。通过搜索Makefile及其包含文件,我发现可以使用XCODEBUILD_FLAGS变量向xcodebuild传递额外的标志。将其添加到您的构建环境中即可解决问题。


这就是您添加标志的位置(在Qt下的项目中,在标记为“构建环境”的设置列表中),但不幸的是,这仍然无法正常工作。它确实改变了错误,但是变成了这样:“xcodebuild [62700:9920056] DVTPortal:服务'<DVTPortalAddAppIDService:0x7fd469274f10; action ='addAppId'>'从门户遇到了意外的结果代码('9401') 2019-03-04 01:06:38.084 xcodebuild [62700:9920056] DVTPortal:错误: 错误域=DVTPortalServiceErrorDomain Code=9401,“标识符为'com.YourID.gallery-mobile'的应用程序ID不可用。请输入其他字符串。” - Oscar

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。在我的情况下,我的应用程序Bundle ID全部为小写,而我的TARGET则不是,并且Bundle区分大小写。

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>

关于 Info.plist 的官方文档在 QMake 变量参考页面上


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接