让TestFlight与Monotouch应用程序一起工作的问题

时间:2011-10-23 09:36:32

标签: iphone binding xamarin.ios ipa testflight

我很难让TestFlight使用我的MonoTouch应用程序(Monotouch 5,IOS5)并且没有找到TestFlight的任何MonoTouch文档。

这是我到目前为止所尝试的内容。

  1. https://github.com/mono/monotouch-bindings/tree/master/TestFlight下载了TestFlight绑定 - 在将此作为参考添加后,似乎TestFlight方法实际上根本没有公开,所以我寻找另一组绑定。

    < / LI>
  2. https://github.com/ayoung/monotouch-testflight下载了ayoung的TestFlight绑定。使用Make构建monotouch-testflight.dll,将其复制到项目并添加到References - 这次TestFlight方法都可见。

  3. 将libTestFlight.a添加到MonoTouch项目中的Lib文件夹,并将BuildAction设置为Nothing。 (我也有RedLaser。)

  4. Per ayoung,我启用了LLVM编译器(使用ARMv7); ayoung说它是必需的。在项目选项中 - &gt; iPhone构建我的其他mtouch参数是:

    -cxx -nosymbolstrip -nostrip -gcc_flags“-lgcc_eh -framework SystemConfiguration -framework CFNetwork -framework CoreVideo -framework CoreMedia -framework AVFoundation -framework OpenGLES -framework Security -L $ {ProjectDir} / Lib -ltestflight -RedLaserSDK -ObjC”

  5. 注意:在将TestFlight添加到项目之前,应用程序可以正常使用RedLaser。

    这里-lgcc_eh就像ayoung一样 - 我无法找出它是什么或它是什么。也许我应该有一个gcc_eh.dll(?),但我不是AFAIK,我不知道在哪里可以找到这样的东西。

    1. 在Main.cs中我添加了

      使用TestFlightSdk;

    2. 并在FinishedLaunching中添加了

      TestFlight.TakeOff( "(downloaded team token is here)" );
      
      1. 编译并安装时没有错误(发布| iPhone)。

      2. 当我现在在设备上运行应用程序时,它立即退出,没有我能发现的诊断。

      3. 如果编译为Debug | iPhone,应用程序也会立即退出。但是,在这种情况下,如果我关闭LLVM,尽管存在严格的限制,那么在应用程序输出中我会看到以下内容:

        TestFlight:已启动会话 TestFlight:安装了崩溃处理程序 线程开始: 线程开始: TestFlight:团队令牌被识别 TestFlight:会话结束 TestFlight:目前已禁用与TestFlight的通信,请在日志的前面查看详细信息

      4. 这可能是因为我还没有将应用程序的.ipa文件上传到TestFlight? (但是,在这种情况下应用确实会启动。)

        1. 我正在尝试了解如何生成.ipa文件。 TestFlight文档显示了如何从XCode执行此操作但我的应用程序是仅代码而没有.xib,因此该选项似乎已经出来了? TestFlight文档还显示了如何从.app文件生成.ipa。我的问题是,我如何将手放在.app文件上进行设备构建?
        2. 对这些问题的任何帮助都会非常感激。

4 个答案:

答案 0 :(得分:5)

-lgcc_eh 需要包含异常处理GCC库,如果您链​​接到C ++库,通常需要该库。

您还有很多看起来不需要的 -framework 选项(MonoTouch已经添加了它们) - 但这不是问题的原因。如果您对编译时 mtouch 使用/提供的内容感到好奇,那么您可以在项目选项中的“附加触摸参数”中添加“-v -v -v”(并查看构建内容)输出)。

至于主要问题,我认为这与TestFlight处理程序与MonoTouch(5.0)不兼容(目前)的事实有关。 MonoTouch异常处理已经提供了自己的崩溃处理程序(例如NullReferenceException),并且需要谨慎添加其他处理程序(如何以及何时执行它非常重要)。这可能是为什么单触式绑定中的当前绑定不包含testflight中可用的每个功能的原因。

我建议您在bugzilla.xamarin.com上打开错误报告,然后您将收到有关进度的电子邮件更新(并确切知道该功能何时可用)。

P.S。试着将你的问题分解成几个(堆栈溢出)问题,你更有可能以这种方式得到答案,因为不是每个人都知道你可能拥有的每个问题的所有答案: - )

答案 1 :(得分:2)

我完全走错了轨道。最后找到MonoTouch文档,其中描述了对TestFlight的内置支持:

http://docs.xamarin.com/ios/tutorials/TestFlight_Support

试试这个,它应该解决问题。

答案 2 :(得分:2)

分发throug testflightapp与在app中使用testflightsdk不同。

第一个是单击菜单中的上传到testflight按钮。

第二个是包含实际的sdk。 在最近几天,他们(xamarin)发布了新的testflight sdk绑定。那不会让你修改mtouch参数。所以包含它应该容易得多。

我个人非常喜欢testflight sdk ...帮助我更好地(让)测试我的应用程序。

答案 3 :(得分:0)

从这个Xamarin bug report的声音来看,似乎即使你让TestFlight SDK本机库自己使用MonoTouch bindingslinking it,你仍然会有TestFlight无法正确处理任何NullReference异常的问题,只是在遇到应用程序时会崩溃应用程序。这使得TestFlight SDK的这一点毫无意义,直到a)MonoTouch被重新处理它或b)TestFlight发布一个托管的Mono库。

不要误解我的意思,我真的希望能够将TestFlight SDK与MonoTouch一起使用。我一直在靠墙试图让它整天都工作。当我调用TestFlight.TakeOff(“MyKey”)方法时,有些东西失败了。控制确实从方法返回,但随后它很快就崩溃了......在它被调用后大约1秒钟。怪异。

如果其他人已经开始工作,我很想知道你的经历。感谢。