Search code examples
qtqmake

QMake: Specifying custom Info.plist file for iOS App


I have an iOS application built using Qt(QML) for which I want to use a custom Info.plist file.

To do this, I built the project as usual (resulting in QMake providing a default Info.plist file). I then went to the Application bundle (inside the .app file) and copied the generated Info.plist file to my source tree. After copying, I modified this file to make the necessary customizations I needed (I just changed the screen orientation settings, nothing else).

I now specified the path to this customised Info.plist to file in the .pro for my application like so:

ios{
    QMAKE_INFO_PLIST = packages/ios/Info.plist
}

When I now hit build, I get the following compiler error:

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'

Has someone else run into this? I am using Qt 5.4.1. Am building on OSX.


Solution

  • Make sure your copy of Info.plist is in XML format, not binary.

    This is necessary because qmake uses sed to replace some variables during the build process. 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
    

    I opened a Qt bug because qmake should check that.