Xamarin iOS项目参考绑定启动在SIM卡,但不是在设备上

我正在创buildQuickBlox聊天服务的monodouch绑定。 我在以前的版本(1.9.x)上成功完成了这个工作,但是在2.0.2库上,在设备上启动新绑定时遇到问题。 它在模拟器上启动罚款。 猜测这是连接器标志的问题,但已经用完了想法。

绑定项目编译正常。 DLL被创build,我可以在我的主机项目中引用它。 在模拟器中运行主机项目工作正常。 在实际的设备上,应用程序启动,但进程崩溃之前,通过黑屏。 Xamarin Studio“应用程序输出”窗口中没有输出。 根本不值一提。 任何方式我可以插入一些debugging信息,找出什么是错的?

Quickblox提供了以下设置的iOS示例项目:

其他链接器标志:-lstdc ++ -ObjC -lxml2

链接二进制与图书馆:

libxml2.2.dylib libresolv.9.dylib libz.1.2.5.dylib
AVFoundation.framework CoreVideo.framework Quickblox.framework Accelerate.framework CoreMedia.framework AudioToolbox.framework CoreLocation.framework CoreDate.framework CoreGraphics.framework MobileCoreServices.framework SystemConfiguration.framework CFNetwork.framework UIKit.framework Foundation.framework

这是我的绑定项目中的“linkwith.cs”文件:

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++")] 

我已经在两个运行iOS 7.1的iPhone 5设备上尝试了这一点

如果我在绑定中注释掉这个特定的类(QBRequest.h),项目将在设备上启动。 它告诉我有什么与这个特定的类有约束力。 这个类inheritance自NSObject,不会导入任何其他库,所以没有任何明显的问题。

 #import <Foundation/Foundation.h> @class QBRequest; @class QBResponse; @class QBRequestStatus; @protocol QBResponseSerialisationProtocol; @protocol QBRequestSerialisationProtocol; @class QBHTTPRequestSerialiser; extern const struct QBRequestMethod { __unsafe_unretained NSString *POST; __unsafe_unretained NSString *GET; __unsafe_unretained NSString *HEAD; __unsafe_unretained NSString *PUT; __unsafe_unretained NSString *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) NSStringEncoding encoding; - (instancetype)initWithCompletionBlock:(QBRequestCompletionBlock)completionBlock; - (instancetype)initWithUpdateBlock:(QBRequestStatusUpdateBlock)updateBlock completionBlock:(QBRequestCompletionBlock)completionBlock; - (void)cancel; @end 

我的ApiDefinition.cs文件中的绑定条目是这样的:

 [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")] NSStringEncoding Encoding { get; set; } [Export ("initWithCompletionBlock:")] IntPtr CreateWithCompletionDelegate (RequestCompletionDelegate completionBlock); [Export ("initWithUpdateBlock:completionBlock:")] IntPtr CreateWithStatusUpdateDelegate (RequestStatusUpdateDelegate updateBlock, RequestCompletionDelegate completionBlock); [Export ("cancel")] void Cancel (); } 

感谢您的想法!

检查设备控制台日志(就在崩溃前的提示)和崩溃报告本身。

问题是没有生成崩溃日志

您应该在设备控制台日志中看到某些内容(每个启动日志的应用程序)。

另外检查设备日志是可能的,没有足够的空间来保存新的崩溃报告。

设备控制台日志显示一些事实。 QBRequest静态初始化器引发exception。

确切地说..崩溃日志已满。 设备控制台也显示。