2

我正在努力让 TestFlight 与我的 MonoTouch 应用程序(Monotouch 5、IOS5)一起工作,并且没有找到任何用于 TestFlight 的 MonoTouch 文档。

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

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

  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 说这是必需的。在 Project Options -> iPhone Build 中,我的其他 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"

注意:在将 TestFlight 添加到项目之前,该应用程序与 RedLaser 运行良好。

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

  1. 在 Main.cs 我添加

    使用 TestFlightSdk;

在 FinishedLaunching 我添加了

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

  2. 当我现在在设备上运行该应用程序时,它会立即退出,而我无法发现任何诊断信息。

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

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

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

  1. 我正在尝试找出如何生成 .ipa 文件。TestFlight 文档显示了如何从 XCode 执行此操作,但我的应用程序是纯代码的,没有 .xib,所以该选项似乎已失效?TestFlight 文档还展示了如何从 .app 文件生成 .ipa。我的问题是,我如何着手构建设备的 .app 文件?

对于这些问题的任何帮助将不胜感激。

4

4 回答 4

5

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

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

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

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

ps 尝试将您的问题分解为几个(堆栈溢出)问题,您更有可能以这种方式收到答案,因为并非每个人都知道您可能遇到的每个问题的所有答案:-)

于 2011-10-23T15:27:03.950 回答
2

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

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

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

于 2011-10-23T22:46:07.647 回答
2

通过 testflightapp 分发与在您的应用程序中使用 testflightsdk 不同。

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

第二个是包含实际的sdk。在过去的几天里,他们 (xamarin) 发布了新的 testflight sdk 绑定。这并不要求您修改 mtouch 参数。所以它应该更容易包含它。

就我个人而言,我真的很喜欢 testflight sdk...帮助我更好地(让)测试我的应用程序。

于 2011-11-13T12:51:56.387 回答
0

从这个Xamarin 错误报告的声音来看,似乎即使您让 TestFlight SDK 本机库与MonoTouch 绑定一起使用或通过自己链接它,您仍然会遇到 TestFlight 无法正确处理任何问题的问题NullReference 异常,并且只会在遇到异常时使应用程序崩溃。这使得 TestFlight SDK 的全部意义变得毫无意义,直到 a) MonoTouch 被重新处理以处理它或 b) TestFlight 发布托管的 Mono 库。

不要误会我的意思,我真的希望能够将 TestFlight SDK 与 MonoTouch 一起使用。我整天都在用头撞墙,试图让它工作。当我调用 TestFlight.TakeOff("MyKey") 方法时,有些事情失败了。控制确实从该方法返回,但此后不久它就崩溃了……在它被调用后大约 1 秒。奇怪的。

如果其他人已经得到它的工作,我很想听听你的经历。谢谢。

于 2012-04-24T21:20:47.477 回答