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

时间:2015-04-01 08:17:57

标签: qt qmake

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

为此,我照常构建项目(导致QMake提供默认的Info.plist文件)。然后我转到Application包(在.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上建立。

2 个答案:

答案 0 :(得分:2)

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

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

 @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应该检查一下。

答案 1 :(得分:2)

继续接受的答案:

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