Projet iOS Xamarin avec reference aux lancements de binding sur sim mais pas sur l'appareil

Je crée les bindings monotouch au service de chat Quickblox. Je l'ai fait avec succès sur une version précédente (1.9.x) mais sur la bibliothèque 2.0.2, ayant des problèmes pour lancer la nouvelle binding sur l'appareil. Il se lance sur le simulateur bien. Deviner c'est un problème avec des drapeaux de lien, mais ont manqué d'idées.

Le projet de binding comstack bien. La DLL est créée et je peux la referencer dans mon projet hôte. L'exécution du projet hôte dans le simulateur fonctionne correctement. Sur un appareil réel, l'application se lance mais le process se bloque avant de passer l'écran noir. Pas de sortie dans la window "Application Output" de Xamarin Studio. Juste rien. De toute façon je peux insert des informations de debugging pour comprendre ce qui ne va pas?

Quickblox fournit un exemple de projet iOS avec les parameters suivants:

Autres drapeaux de lieur: -lstdc ++ -ObjC -lxml2

Lien binary avec les bibliothèques:

libxml2.2.dylib libresolv.9.dylib libz.1.2.5.dylib
AVFoundation.framework CoreVideo.framework Quickblox.framework Accélérer.framework CoreMedia.framework AudioToolbox.framework CoreLocation.framework CoreDate.framework CoreGraphics.framework MobileCoreServices.framework SystèmeConfiguration.framework CFNetwork.framework UIKit.framework Foundation.framework

Voici mon file "linkwith.cs" dans mon projet de binding:

using System; using MonoTouch.ObjCRuntime; [assembly: LinkWith ("libQuickblox.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator, ForceLoad = true, Frameworks = "CFNetwork SystemConfiguration MobileCoreServices CoreGraphics CoreLocation CoreData AudioToolbox CoreMedia Accelerate CoreVideo AVFoundation Security", LinkerFlags = "-lxml2 -lz -lresolv -ObjC -lstdc++")] 

J'ai essayé ceci sur deux appareils iPhone 5, tous les deux fonctionnant sous iOS 7.1

Si je commente cette class particulière (QBRequest.h) dans la binding, le projet sera lancé sur l'appareil. Il me dit qu'il y a quelque chose qui lie à cette class particulière. Cette class hérite de NSObject et n'importe aucune autre bibliothèque, donc il n'y a rien qui soulève des inquiétudes évidentes.

 #import <Foundation/Foundation.h> @class QBRequest; @class QBResponse; @class QBRequestStatus; @protocol QBResponseSerialisationProtocol; @protocol QBRequestSerialisationProtocol; @class QBHTTPRequestSerialiser; extern const struct QBRequestMethod { __unsafe_unretained NSSsortingng *POST; __unsafe_unretained NSSsortingng *GET; __unsafe_unretained NSSsortingng *HEAD; __unsafe_unretained NSSsortingng *PUT; __unsafe_unretained NSSsortingng *DELETE; } QBRequestMethod; typedef void (^QBRequestStatusUpdateBlock)(QBRequest *request, QBRequestStatus *status); typedef void (^QBRequestCompletionBlock)(QBRequest *request, QBResponse *response, NSDictionary *objects); typedef void (^QBRequestErrorBlock)(QBResponse *response); @interface QBRequest : NSObject @property (nonatomic, getter=isCancelled, readonly) BOOL canceled; @property (nonatomic, copy) QBRequestCompletionBlock completionBlock; @property (nonatomic, copy) QBRequestStatusUpdateBlock updateBlock; @property (nonatomic, strong) QBHTTPRequestSerialiser<QBRequestSerialisationProtocol> *requestSerialisator; // QBHTTPResponseSerialiser<QBResponseSerialisationProtocol> @property (nonatomic, strong) NSArray *responseSerialisators; @property (nonatomic, copy) NSDictionary *headers; @property (nonatomic, copy) NSDictionary *parameters; @property (nonatomic, copy) NSData *body; @property (nonatomic) NSSsortingngEncoding encoding; - (instancetype)initWithCompletionBlock:(QBRequestCompletionBlock)completionBlock; - (instancetype)initWithUpdateBlock:(QBRequestStatusUpdateBlock)updateBlock completionBlock:(QBRequestCompletionBlock)completionBlock; - (void)cancel; @end 

L'input de binding dans mon file ApiDefinition.cs est la suivante:

 [BaseType (typeof (NSObject))] public partial interface QBRequest { [Export ("canceled")] bool Canceled { [Bind ("isCancelled")] get; } [Export ("completionBlock", ArgumentSemantic.Copy)] RequestCompletionDelegate CompletionBlock { get; set; } [Export ("updateBlock", ArgumentSemantic.Copy)] RequestCompletionDelegate UpdateBlock { get; set; } [Export ("headers", ArgumentSemantic.Copy)] NSDictionary Headers { get; set; } [Export ("parameters", ArgumentSemantic.Copy)] NSDictionary Parameters { get; set; } [Export ("body", ArgumentSemantic.Copy)] NSData Body { get; set; } [Export ("encoding")] NSSsortingngEncoding Encoding { get; set; } [Export ("initWithCompletionBlock:")] IntPtr CreateWithCompletionDelegate (RequestCompletionDelegate completionBlock); [Export ("initWithUpdateBlock:completionBlock:")] IntPtr CreateWithStatusUpdateDelegate (RequestStatusUpdateDelegate updateBlock, RequestCompletionDelegate completionBlock); [Export ("cancel")] void Cancel (); } 

Merci pour vos idées !!

Vérifiez les journaux de la console de l'appareil (indices juste avant l'incident) et le rapport d'erreur lui-même.

Le problème est qu'il n'y a pas de journaux de plantage générés

Vous devriez voir quelque chose (chaque application qui démarre enregistre quelque chose) dans les journaux de la console de l'appareil.

Vérifiez également les journaux de l'appareil, il est possible qu'il n'y ait plus assez d'espace pour save de nouveaux rapports d'erreur.

Les journaux de console de périphérique révèlent une certaine vérité. L'exception est levée par l'initialiseur statique QBRequest.

Exactement .. les journaux de l'accident étaient pleins. La console de l'appareil a également révélé cela.