0

我正在创建一个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行,我无法访问任何调试信息,设备日志中没有崩溃报告,应用程序输出中没有崩溃数据。

绑定定义可能有什么问题,我该如何调试这个问题?

4

0 回答 0