我正在创建一个Xamarin.iOSCodePush
绑定,我通过使用带有cocoapod的 Sharpie 工具生成了一个 fat lib.a
文件:CodePush
sharpie pod init ios CodePush
sharpie pod bind
然后创建了一个带有.a
文件和libCodePush.linkwith.cs
定义的 Xamarin.iOS 绑定项目:
[assembly: LinkWith(
"libCodePush.a",
LinkTarget.ArmV7 | LinkTarget.Arm64 | LinkTarget.i386 | LinkTarget.x86_64,
LinkerFlags = "-ObjC -lz",
IsCxx = false,
SmartLink = false,
ForceLoad = true)]
我ApiDefinition.cs
添加了 bundleURL (绑定中我需要的唯一属性,所以我删除了所有其他属性):
// @interface CodePush : NSObject
[BaseType(typeof(NSObject))]
public interface CodePush
{
// + (NSURL *)bundleURL
[Static]
[Export("bundleURL")]
NSUrl BundleUrl { get; }
}
然后是简单的应用引导程序(假设还添加了 RN 绑定):
var window = new UIWindow(UIScreen.MainScreen.Bounds);
// case 1: with this line the app works fine and RN app is loaded
// var url = NSBundle.MainBundle.GetUrlForResource("main", "jsbundle");
// case 2: if this line uncommented the app is crashed on startup
var url = CodePush.BundleUrl;
var rootView = new RCTRootView(url, new NSString("codePushBinding"), new NSDictionary(), launchOptions);
var vc = new UIViewController();
vc.View = rootView;
window.RootViewController = vc;
window.MakeKeyAndVisible();
取消注释应用程序在应用程序启动时崩溃的CodePush.BundleUrl
行,我无法访问任何调试信息,设备日志中没有崩溃报告,应用程序输出中没有崩溃数据。
绑定定义可能有什么问题,我该如何调试这个问题?