QMake:为 iOS App 指定自定义 Info.plist 文件

Posted

技术标签:

【中文标题】QMake:为 iOS App 指定自定义 Info.plist 文件【英文标题】:QMake: Specifying custom Info.plist file for iOS App 【发布时间】:2015-04-01 08:17:57 【问题描述】:

我有一个使用 Qt(QML) 构建的 ios 应用程序,我想为其使用自定义 Info.plist 文件。

为此,我像往常一样构建了项目(导致 QMake 提供了默认的 Info.plist 文件)。然后我转到应用程序包(在 .app 文件中)并将生成的 Info.plist 文件复制到我的源代码树中。复制后,我修改了这个文件以进行我需要的必要自定义(我只是更改了屏幕方向设置,没有别的)。

我现在为我的应用程序指定了此自定义 Info.plist 的路径以在 .pro 中归档,如下所示:

ios
    QMAKE_INFO_PLIST = packages/ios/Info.plist

当我现在点击构建时,我收到以下编译器错误:

Check dependencies
Code Sign error: Automatic provisioning profile selection unavailable: A bundle identifier is required for automatic provisioning profile selection. Either enter a bundle identifier in the Info.plist, or select a provisioning profile to use in the build settings.
CodeSign error: code signing is required for product type 'Application' in SDK 'iOS 8.2'

其他人遇到过这种情况吗?我正在使用 Qt 5.4.1。在 OSX 上构建。

【问题讨论】:

在 Info.plist 中输入包标识符 developer.apple.com/library/ios/documentation/General/Reference/… @SimonWarta 我确实阅读了捆绑标识符。 QMake 生成的 Info.plist 文件中已经有一个包标识符。我没有碰过那个设置。 如果你设置QMAKE_INFO_PLIST,你会用你自己的文件明确覆盖qmake的默认Info.plist,这样你就需要自己处理了。可以添加packages/ios/Info.plist的内容吗? @SimonWarta 感谢您的关注:drive.google.com/file/d/0B_3UZN1ZieQgSk9vejBpaldjOGs 我不认为 qmake 能够处理二进制 Info.plist 文件,因为它使用 sed 来查找和替换一些变量。确保以 XML 格式存储它。 【参考方案1】:

确保您的 Info.plist 副本是 XML 格式,而不是二进制格式。

这是必要的,因为qmake 在构建过程中使用sed 替换some variables。例如

 @sed -e "s,@SHORT_VERSION@,1.0,g" -e "s,@FULL_VERSION@,1.0.0,g" -e "s,@TYPEINFO@,????,g" -e "s,@BUNDLEIDENTIFIER@,com.example.product,g" -e "s,@ICON@,myproduct.icns,g" -e "s,@EXECUTABLE@,MyProduct,g" -e "s,@TYPEINFO@,????,g" ../../project/subproject/Info.plist >MyProject.app/Contents/Info.plist

我打开了Qt bug,因为 qmake 应该检查它。

【讨论】:

【参考方案2】:

进一步接受的答案:

    确保 QMAKE_INFO_PLIST =not QMAKE_INFO_PLIST += (我做了这个,啊)。 如果在 Xcode 中打开 qmake 生成的 .xcodeproj 文件后,您 全面“更新到推荐设置”,不要将 Info.plist 复制回 你的源代码树。这将清除捆绑标识符 下一次。 如果您需要添加代码签名(以便您可以在 Creator 中实际构建和运行),可以在 here 找到这样做的方法。 根据我的经验,自定义 Info.plist 和代码签名 qmake 添加最好放在项目的 .pro 文件中,而不是 自动生成的 deployment.pri 文件。后者有效,但我得到了一个 Xcode 中关于 Info.plist 没有工作的编译器警告 复制,警告激怒了我脑海中的恶魔。

【讨论】:

以上是关于QMake:为 iOS App 指定自定义 Info.plist 文件的主要内容,如果未能解决你的问题,请参考以下文章

为嵌入式 tomcat 指定自定义 web.xml

pytest-15-自定义标记mark

QT qmake 小写我的自定义小部件名称

QMake配置问题

Spring自定义标签

友盟-推送-IOS-可以自定义App在前台接受到消息的弹出框么?