Xcode 6.3 + cercando di eseguire l'app Watch nei risultati del simulatore in "FBSOpenApplicationErrorDomain error 4"

Sto scrivendo un'app di controllo per una delle mie applicazioni. Dato che il mio team non ha ancora un Apple Watch, costruisco una versione di Simulator della mia applicazione sul mio build server per il mio team di QA e stanno usando "xcrun simctl" per eseguire e testare l'app di watch stessa.

Tutto è andato bene fino all'arrivo di Xcode 6.3. Con Xcode 6.3 ho ricevuto questo errore quando ho provato a creare l'app localmente sul mio computer di sviluppo:

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. 

Per risolvere questo problema, ho modificato i miei file info.plist per contenere la stessa CFBundleVersion . Questa modifica ha risolto il problema di build sul mio computer di sviluppo locale, ma: QA è ancora in grado di eseguire l'applicazione iOS, ma l'avvio dell'applicazione Watch ha esito negativo con questo errore:

 > 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.) 

Non riesco a vedere nulla nel log della console di sistema che potrebbe essere correlato a questo. : /

Sai qualche idea in che modo questo problema potrebbe essere risolto?

Grazie in anticipo per qualsiasi aiuto!

Solutions Collecting From Web of "Xcode 6.3 + cercando di eseguire l'app Watch nei risultati del simulatore in "FBSOpenApplicationErrorDomain error 4""

Mi sto imbattendo anche in questo.

Fondamentalmente, dovresti avere 3 bersagli (4 se conti i Test). Se controlli le fasi di compilazione, vedrai che l'app WatchKit deve essere compilata per prima, seguita dall'estensione WatchKit e infine dall'app principale.

Ho uno script che ho usato da anni che aggiorna automaticamente CFBundleVersion each volta che l'app viene compilata.

C'è un posto per "Esegui script" nelle Fasi di creazione per l'estensione e per l'app principale, ma non l'app WatchKit.

Quindi, la prima cosa che viene compilata è l'app WatchKit, che viene quindi spostata nella directory di build. Avrà il numero che era in CFBundleVersion che era l'ultimo inserito manualmente.

La seconda cosa che viene eseguita è la compilation Extension. Qui è where viene eseguito il mio script e aggiorna il numero. Tuttavia, il numero è ora superiore al numero nell'app WatchKit, che è già stata spostata nella directory di build. Quindi, anche se hanno iniziato la vita come lo stesso numero (diciamo 1), quando l'estensione viene spostata, è ora a 2 e c'è una discrepanza.

Non c'è modo di aggiornare l'app WatchKit CFBundleVersion in modo automatico utilizzando uno script di esecuzione.

Personalmente, il modo in cui ho intenzione di risolverlo è impostare manualmente CFBundleVersion nella mia app WatchKit quando voglio che cambi, quindi avrò Run Scripts nelle fasi di compilazione per gli altri due target per copiare CFBundleVersion dall'app WatchKit alle rispettive CFBundleVersions per mantenerle tutte sincronizzate.

Per farla breve, hai tre CFBundleVersions per tenere traccia di e assicurarsi che siano tutti lo stesso numero.

Affinché le app di Watch funzionino correttamente, alcune properties; devono corrispondere all'app Watch e alla relativa estensione per app (18857540):

  • La properties; WKAppBundleIdentifier di NSExtensionAttributes nel file Info.plist dell'estensione dell'app WatchKit deve corrispondere al CFBundleIdentifier di Info.plist dell'app WatchKit.
  • La properties; WKCompanionAppBundleIdentifier dell'app Info.plist dell'app WatchKit deve corrispondere al CFBundleIdentifier dell'app contenente iOS.

Ho scoperto che l'aggiunta di CFBundleGetInfoString a watchKit Extension / watchKitApp ha causato il problema per me (è corretto averlo nell'app per iOS compagno stesso). Rimozione che ha risolto il problema per me.

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