我正在创建CodePush
Xamarin.iOS绑定,我使用sharpie工具和.a
生成了一个胖lib CodePush
文件cocoapod:
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; }
}
然后是简单的app bootstrap(假设也添加了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
行未注释应用程序启动时应用程序崩溃,我无法访问任何调试信息,设备日志上没有崩溃报告,应用输出中没有崩溃数据。
绑定定义可能有什么问题,如何调试此问题?