Hallo,
ich habe eine neue Version einer Mac OS App zum Review eingereicht. Dort ist Sie durch einen Fehler in iCloud abgestürzt und wurde entsprechend rejected. Das Problem: Ich kann den Fehler lokal nicht nachstellen, egal was ich auch versuche.
Apple sagt mir, dass ich genau die Version die ich eingereicht habe auch lokal testen soll. Das macht natürlich Sinn, aber wie mache ich das?
Die App verwendet iCloud und enthält entsprechend das iCloud Entitlement. Die App wurde für den App Store erstellt und ist entsprechend mit einem Distribution Profile signiert. Die Kombination führt dazu, dass die App lokal nicht ausgeführt werden kann:
Wird eine Release Version mit einem Development Profile erstellt wird kann diese auch lokal ausgeführt werden. Eine so neu erstellte Version ist aber natürlich nicht exakt die Version die zum Review eingereicht wurde. Was kann ich also tun? Kann ich die eingereichte Version irgendwie mit einem Development Profile neu signieren? Aber auch wenn das gelingt: Ist es dann noch exakt die Version die zum Review eingereicht wurde?
Ganz abgesehen von diesem Problem:
Auch wenn es mir gelingen sollte genau die eingereichte Version zu testen habe ich wenig Hoffnung, dass es mir gelingt den Fehler damit nach zustellen. Ich habe das Projekt seit dem Einreichen des Updates nicht verändert. Wenn ich also den selben Code mit den selben Einstellungen auf dem selben System compiliere erhalte ich nach meiner Definition dieselbe App. Natürlich würden sich die erstellten Binaries unterscheiden aber wenn der Zeitpunkt der Compilierung die Fehlerquelle sein sollte bin ich ohnehin ziemlich ratlos.
Hinzu kommt, dass ich die App nun schon zum zweiten mal eingereicht habe und diese im Review beide Male mit dem gleichen Fehler gecrashed ist, während bei mir auf allen Systemen alles rund läuft. Der Zeitpunkt der Compilierung ist also offensichtlich nicht das Problem sondern die Art und Weise wie getestet wird.
Apple testet auf einem frischen Mavericks unter einem Gast-Konto. Das habe ich auch getan, wieder mit dem Ergebnis, dass alles rund läuft.
Was würdet Ihr in diesem Fall tun?
Problem ist, dass der Crash in einem Backgroundthread von CoreData/iCloud ausgelöst wird. Abfangen kann ich die Exception also nicht...
ich habe eine neue Version einer Mac OS App zum Review eingereicht. Dort ist Sie durch einen Fehler in iCloud abgestürzt und wurde entsprechend rejected. Das Problem: Ich kann den Fehler lokal nicht nachstellen, egal was ich auch versuche.
Apple sagt mir, dass ich genau die Version die ich eingereicht habe auch lokal testen soll. Das macht natürlich Sinn, aber wie mache ich das?
Die App verwendet iCloud und enthält entsprechend das iCloud Entitlement. Die App wurde für den App Store erstellt und ist entsprechend mit einem Distribution Profile signiert. Die Kombination führt dazu, dass die App lokal nicht ausgeführt werden kann:
taskgated-helper[51673]: Starting taskgated-helper
taskgated-helper[51673]: embedded provisioning profile not valid: file:///Users/AUser/Library/Developer/Xcode/Archives/2014-02-07/MyApp.xcarchive/Products/Applications/MyApp.app/Contents/embedded.provisionprofile
taskgated-helper[51673]: returning 2 provisioning profiles
taskgated-helper[51673]: none of the 2 applicable provisioning profile(s) apply
taskgated-helper[51673]: CPValidateProvisioningDictionaries returning NO with error: (null)
taskgated[13]: killed com.example.MyApp[pid 51671] because its use of the com.apple.developer.ubiquity-container-identifiers entitlement is not allowed (error code -67050)
Wird eine Release Version mit einem Development Profile erstellt wird kann diese auch lokal ausgeführt werden. Eine so neu erstellte Version ist aber natürlich nicht exakt die Version die zum Review eingereicht wurde. Was kann ich also tun? Kann ich die eingereichte Version irgendwie mit einem Development Profile neu signieren? Aber auch wenn das gelingt: Ist es dann noch exakt die Version die zum Review eingereicht wurde?
Ganz abgesehen von diesem Problem:
Auch wenn es mir gelingen sollte genau die eingereichte Version zu testen habe ich wenig Hoffnung, dass es mir gelingt den Fehler damit nach zustellen. Ich habe das Projekt seit dem Einreichen des Updates nicht verändert. Wenn ich also den selben Code mit den selben Einstellungen auf dem selben System compiliere erhalte ich nach meiner Definition dieselbe App. Natürlich würden sich die erstellten Binaries unterscheiden aber wenn der Zeitpunkt der Compilierung die Fehlerquelle sein sollte bin ich ohnehin ziemlich ratlos.
Hinzu kommt, dass ich die App nun schon zum zweiten mal eingereicht habe und diese im Review beide Male mit dem gleichen Fehler gecrashed ist, während bei mir auf allen Systemen alles rund läuft. Der Zeitpunkt der Compilierung ist also offensichtlich nicht das Problem sondern die Art und Weise wie getestet wird.
Apple testet auf einem frischen Mavericks unter einem Gast-Konto. Das habe ich auch getan, wieder mit dem Ergebnis, dass alles rund läuft.
Was würdet Ihr in diesem Fall tun?
Problem ist, dass der Crash in einem Backgroundthread von CoreData/iCloud ausgelöst wird. Abfangen kann ich die Exception also nicht...