QMake:为iOS应用程序指定自定义Info.plist文件



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

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

我现在为我的应用程序在.pro中指定了这个定制的Info.plist文件的路径,如下所示:

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'

有其他人碰到这个吗?我使用的是问题5.4.1。我在OSX上构建。

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

这是必要的,因为qmake在构建过程中使用sed来替换一些变量。例如

 @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错误,因为qmake应该检查一下。

进一步接受答案:

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

最新更新