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