2015-04-17 39 views
3

我正在爲我的一個應用程序編寫一個Watch應用程序。由於我的團隊還沒有Apple Watch,因此我在我的QA團隊的構建服務器上構建了我的應用程序的模擬器版本,他們使用「xcrun simctl」運行並測試手錶應用程序本身。Xcode 6.3 +試圖在模擬器中運行Watch應用程序導致「FBSOpenApplicationErrorDomain error 4」

一切都很順利,直到Xcode 6.3出現。 和Xcode 6.3我收到此錯誤,當我試圖本地構建自己的計算機上的應用程序:

error: The value of CFBundleVersion in your WatchKit app's Info.plist (1) does not match the value in your companion app's Info.plist (2.0.492). These values are required to match. 

要解決這個問題,我已經修改了我的的info.plist文件包含相同CFBundleVersion。此修改固定的構建問題,我的本地開發機器上,但是:QA仍然能夠運行iPhone應用程序,而是啓動監視應用程序失敗,出現此錯誤:

> xcrun simctl launch 0D5238ED-CBE9-4DCC-961D-BC756E0885CD com.company.enterprise.appname.watchapp 
An error was encountered processing the command (code=4): 
The operation couldn’t be completed. (FBSOpenApplicationErrorDomain error 4.) 

我什麼都看不到系統控制檯日誌可能與此有關。 :/

你知不知道這個問題怎麼解決?

在此先感謝您的幫助!

+0

請檢查此答案http://stackoverflow.com/a/25968057/2497120 –

+0

謝謝。不幸的是我已經看到了,但列出的解決方案都沒有幫助。 – thorax

+0

嗯... 我必須向蘋果報告這個: 看來: 1.要能夠使用模擬器構建運行手錶應用程序,Info.plist中的手錶應用程序的版本號必須停留WatchKit Extension的「1」和「1.0」。 2.要能夠在本地構建,版本號必須與配套的iOS應用程序相同。 – thorax

回答

0

事實證明,將CFBundleGetInfoString添加到watchKit Extension/watchKitApp引起了我的問題(可以將它放在伴隨iOS應用程序本身中)。刪除,解決了我的問題。

defaults delete `pwd`/myApp WatchKit Extension/Info CFBundleGetInfoString 
defaults delete `pwd`/myApp WatchKit App/Info CFBundleGetInfoString 
0

爲了觀看應用程序正常運行,某些屬性必須在監視應用程序匹配,並且它的應用程序擴展(18857540):

  • NSExtensionAttributes在WatchKit應用擴展的Info.plist的WKAppBundleIdentifier屬性必須匹配WatchKit App的Info.plist的CFBundleIdentifier。
  • WatchKit App的Info.plist的WKCompanionAppBundleIdentifier屬性必須與Containing iOS App的Info.plist的CFBundleIdentifier相匹配。
+0

感謝您的回答。我之前也檢查過這個。這兩個都適用於我的項目。 – thorax

2

我也遇到了這個問題。

基本上,你應該有3個目標(4,如果你算測試)。如果您檢查構建階段,您將看到WatchKit應用程序必須首先編譯,然後是WatchKit擴展,最後是主應用程序。

我有一個腳本,我已經使用了一段時間,每次編譯應用程序時都會自動更新CFBundleVersion。

在Extension階段和主應用程序的構建階段有一個「運行腳本」的地方,但不是WatchKit應用程序。

因此,編譯的第一件事是WatchKit應用程序,然後將其移至構建目錄。它將具有CFBundleVersion中的最後一次手動輸入的數字。

運行的第二件事是擴展編譯。這是我的腳本運行和更新號碼的地方。但是,該數字現在比WatchKit應用程序中的數字多了一個,該應用程序已被移至構建目錄。所以,儘管他們的生活始終是相同的數字(比如說1),但當擴展移到時,它現在變爲2,並且存在不匹配。

無法通過使用運行腳本以自動方式更新WatchKit應用程序CFBundleVersion。

就我個人而言,我要解決這個問題的方法是在我的WatchKit應用程序中手動設置CFBundleVersion,當我想要更改它時,我將在其他兩個目標的構建階段中運行腳本將WatchGuard應用中的CFBundleVersion複製到它們各自的CFBundleVersions中,以保持它們全部同步。長話短說,你有三個CFBundleVersions來跟蹤並確保它們都是相同的數字。

相關問題