[英]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.