簡體   English   中英

應用程序僅在iPhone設備上崩潰,而不在模擬器中崩潰-Xamarin綁定項目

[英]App crash only on iPhone Device and not in Simulator - Xamarin Binding project

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

在“ iOS Build”中,我為iPhone和Simulator設置了相同的設置。 唯一的區別是“支持的體系結構”:

iPhone:ARMv7 + ARMv7s + ARM64

模擬器:i386 + x86_64

我嘗試“鏈接器行為”中的所有配置。

在IOS Build中沒有其他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 Studio:5.9.7(內部版本9)

在模擬器上測試:5、5s,6,sdk 8.4 i 8.1

“ lipo -info libPaylevenSDK.a”給我:胖文件:libPaylevenSDK.a中的體系結構是:i386 x86_64 armv7 arm64

“ lipo -info libAdyenToolkit.a”:胖文件:libAdyenToolkit.a中的體系結構是:i386 x86_64 armv7 armv7s arm64

只要您有未定義的符號異常,您就可能只為模擬器構建了.a文件。 如果您跑步,就可以確切知道

nm %yourLibrary%.a | grep _SecCertificateCreateWithData

並只為一種架構找到一條線。

再為設備建立一個庫,並與lipo合並,如下所示: https : //developer.xamarin.com/guides/ios/advanced_topics/native_interop/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM