2015-04-01 90 views
1

我有一個使用Qt(QML)構建的iOS應用程序,我想使用它自定義Info.plist文件。QMake:爲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上建設。

+0

*在Info.plist中輸入包標識符* https://developer.apple.com/library/ios/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html#//apple_ref/doc/ uid/20001431-102070 – 2015-04-01 08:29:34

+0

@SimonWarta我的確瞭解了捆綁標識符。 QMake生成的Info.plist文件中已經有一個包標識符。我沒有觸及那個設置。 – balajeerc 2015-04-01 08:35:22

+0

如果你設置了'QMAKE_INFO_PLIST',你用你自己的文件明確地覆蓋了qmake的默認'Info.plist',這樣你就需要自己照顧。你可以添加你的'packages/ios/Info.plist'的內容嗎? – 2015-04-01 08:38:24

回答

2

確保您的Info.plist副本採用XML格式,而非二進制。

這是必要的,因爲qmake使用sed在構建過程中替換some variables。例如。

@sed -e "s,@[email protected],1.0,g" -e "s,@[email protected],1.0.0,g" -e "s,@[email protected],????,g" -e "s,@[email protected],com.example.product,g" -e "s,@[email protected],myproduct.icns,g" -e "s,@[email protected],MyProduct,g" -e "s,@[email protected],????,g" ../../project/subproject/Info.plist >MyProject.app/Contents/Info.plist 

我打開Qt bug,因爲qmake應該檢查。

1

繼接受的答案:

  1. 確保QMAKE_INFO_PLIST = QMAKE_INFO_PLIST + = (我這樣做,哎呀)。
  2. 如果在Xcode中打開qmake生成的.xcodeproj文件後,您的 全局更新爲推薦設置,請勿將Info.plist複製回 您的源代碼樹。這會在下次清除 的捆綁包標識符。
  3. 如果您需要添加代碼簽名(以便您可以在Creator中實際構建和運行),則可以找到here
  4. 根據我的經驗,添加的自定義Info.plist和代碼簽名qmake 最好放在項目的.pro文件中,而不是 自動生成的deployment.pri文件。後者的作品,但我得到了一個 編譯器警告在Xcode關於Info.plist不在工作 副本,並警告憤怒在我腦海中的惡魔。
相關問題