【问题标题】:Problems getting TestFlight to work with Monotouch app让 TestFlight 与 Monotouch 应用程序一起工作的问题
【发布时间】:2011-12-13 12:03:35
【问题描述】:

我正在努力让 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. 每年,我启用了 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 文件?

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

【问题讨论】:

  • 你使用TestFlight SDK了吗?问是因为我遵循相同的确切步骤,并得到相同的结果。现有文档的某个地方存在缺陷。 - 使用“官方”绑定生成 dll,但未公开方法 - 使用 ayoung 绑定公开方法但 dll 大小仅为 4kb,显然有问题
  • VladT,不,我没有让它工作,需求通过了。
  • “成员不被暴露”问题无效,TestFlight 类实际上需要被“MonoTouch.TestFlight.TestFlight”访问。所以官方绑定很好:)

标签: iphone binding xamarin.ios ipa testflight


【解决方案1】:

-lgcc_eh 需要包含异常处理 GCC 库,如果您与 C++ 库链接,这通常是必需的。

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

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

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

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

【解决方案2】:

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

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

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

【讨论】:

  • 通过上面的文档链接,我能够使用 TestFlight 分发我的应用程序。据我所知,目前还没有任何 TestFlight 方法(例如 TakeOff)可用。我在那里兴奋了一阵子。感谢@poupou 的回答,它阐明了立场。
  • 是的,TestFlight 确实提供了很多 :)
【解决方案3】:

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

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

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

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

【讨论】:

    【解决方案4】:

    从这个Xamarin bug report 的声音来看,似乎即使您使用MonoTouch bindings 或自己使用linking it 使用TestFlight SDK 本地库,您仍然会遇到TestFlight 不支持的问题将正确处理任何 NullReference 异常,并且只会在遇到异常时使应用程序崩溃。这使得 TestFlight SDK 的全部意义变得毫无意义,直到 a) MonoTouch 被重新处理以处理它或 b) TestFlight 发布托管的 Mono 库。

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

    如果其他人已经成功了,我很想听听您的经历。谢谢。

    【讨论】:

    • 你有没有让这个工作?对我来说,它只是在调用 TakeOff 时崩溃。
    • 我遇到了和你一样的问题,但我通过使用官方 MonoTouch 绑定并将我的项目设置为使用 LLVM 和 ARMv7(但不是 THUMB-2,不要选中该框)来让它工作在 Project Properties > iPhone Build 下未选中“Generate Debug symbols”。我正在使用 MonoDevelop 3.0 和 MonoTouch 5.1.2。
    猜你喜欢
    • 2021-07-17
    • 2021-02-26
    • 2011-04-08
    • 2011-08-13
    • 2012-12-11
    • 1970-01-01
    • 1970-01-01
    • 2012-05-22
    • 1970-01-01
    相关资源
    最近更新 更多