2015-10-06 35 views
0

我創建了iOS綁定項目,其中包含兩個靜態庫到SDK Payleven(github.com/payleven/mPOS-SDK-iOS)。應用程序只在iPhone設備上崩潰,而不在模擬器中。在模擬器應用程序工作正常。應用程序崩潰只在iPhone設備上,而不在模擬器 - Xamarin綁定項目

在「iOS Build」中,我爲iPhone和Simulator設置了相同的設置。唯一不同的是 「支持的架構:」

iPhone:ARMv7的+ ARMv7s + ARM64

模擬器:I386 + x86_64的

我嘗試在 「鏈接行爲」 的所有配置。

沒有在IOS構建額外的mTouch參數我有34個錯誤
http://pastebin.com/03S6P9DU

與參數

-gcc_flags "-L${ProjectDir}/Soft.ePosPayleven/ -lPaylevenSDK -lAdyenToolkit -force_load ${ProjectDir}/Soft.ePosPayleven/libPaylevenSDK.a ${ProjectDir}/Soft.ePosPayleven/libAdyenToolkit.a" 

我必須在結合項目xamarin產生此異常http://pastebin.com/8eEMrU0n類。

[CompilerGenerated] 
     [EditorBrowsable (EditorBrowsableState.Advanced)] 
     [Export ("init")] 
     public PLVPayleven() : base (NSObjectFlag.Empty) 
     { 
      IsDirectBinding = GetType().Assembly == global::ApiDefinition.Messaging.this_assembly; 
      if (IsDirectBinding) { 
exception--> InitializeHandle (global::ApiDefinition.Messaging.IntPtr_objc_msgSend (this.Handle, global::ObjCRuntime.Selector.GetHandle ("init")), "init"); 
      } else { 
       InitializeHandle (global::ApiDefinition.Messaging.IntPtr_objc_msgSendSuper (this.SuperHandle, global::ObjCRuntime.Selector.GetHandle ("init")), "init"); 
      } 
     } 

libAdyenToolkit.linkwith.cs

[assembly: LinkWith ("libAdyenToolkit.a", LinkTarget.ArmV7 | LinkTarget.ArmV7s | LinkTarget.Simulator | LinkTarget.Simulator64 | LinkTarget.Arm64, SmartLink = true, ForceLoad = true, 
    Frameworks = "CoreFoundation CoreData CoreLocation ExternalAccessory SystemConfiguration UIKit Foundation", LinkerFlags = "-lz -lsqlite3", IsCxx = true)] 

libPaylevenSDK.linkwith.cs

[assembly: LinkWith ("libPaylevenSDK.a", LinkTarget.Simulator | LinkTarget.Simulator64 | LinkTarget.ArmV7 | LinkTarget.Arm64, SmartLink = true, ForceLoad = true, 
    Frameworks = "CoreFoundation CoreData CoreLocation ExternalAccessory SystemConfiguration UIKit Foundation", LinkerFlags = "-lz -lsqlite3", IsCxx = true)] 

裝置:iPhone 5S

Xamarin工作室:5.9.7(構建9)

經過測試上模擬器:5,5S,6 SDK 8.4 8.1我

「脂-info libPaylevenSDK.a」 給我:體系結構中的脂肪文件:libPaylevenSDK.a是:I386 x86_64的ARMv7的arm64

「脂-info libAdyenToolkit.a」:在FAT文件體系結構:libAdyenToolkit.a是:I386 x86_64的ARMv7的armv7s arm64

+0

張貼代碼/Users/Admin/myApp/ViewController/PinView.cs:36是在這個類 – InitLipton

+0

36請求= new MvxViewModelRequest (null,null,new MvxRequestedBy()); – Patryk

+0

我的錯誤,我在另一個分支,第36行是「var pm = new PaylevenManeger();」這是代碼PaylevenManeger:http://pastebin.com/x2jQRdNE – Patryk

回答

0

只要你有一個未定義的符號例外,你可能有一個內置的某文件僅適用於模擬器。你可以確切地知道它,如果你運行

nm %yourLibrary%.a | grep _SecCertificateCreateWithData 

並找到一個體繫結構只有一行。

修建一個庫,設備,並與脂喜歡這裏將它們合併: https://developer.xamarin.com/guides/ios/advanced_topics/native_interop/

+0

「lipo -info libPaylevenSDK.a」給我: 胖文件中的體系結構:libPaylevenSDK.a是:i386 x86_64 armv7 arm64 – Patryk

+0

「nm libPaylevenSDK。a | grep _SecCertificateCreateWithData「給我: 」U _SecCertificateCreateWithData「 – Patryk

+0

這樣,它只是不會看到這個方法,它是一個Xamarin錯誤,如果你清理項目,重新啓動所有東西,然後寫入他們的支持。 – Jauhenka

相關問題