简短版:
我注意到最近更新的 mtouch
(我目前是 5.2.5)有一些新的命令行选项 - 特别是 --launchdev
,这让我很高兴我非常喜欢,还有 --argument
,我不知道如何使用它。 --argument
有什么作用?我可以在启动时使用它向应用程序传递数据吗?如果是这样,这些数据去了,我如何获得它?
对我在做什么的更详细的解释:
我有一个用于我们的 MonoTouch 库的自动化测试环境。为了让它真正自动化,我需要能够 1) 在设备上自动启动它,以及 2) 为它提供首先启动它的构建服务器的 IP 地址,以便它知道要向谁启动完成后与他交谈。
目前,我发现将数据分流到 iOS 应用程序的唯一方法是通过自定义 URL 方案。巧合的是,这也是我必须在设备上自动启动应用程序的唯一方式,而不是简单地安装它。因此,我的构建脚本将构建测试应用程序,安装它,使用测试应用程序所需的数据调用自定义 URL 方案编写 Xcode 项目脚本,并背诵适当的 AppleScript 咒语以在设备上启动 Xcode 项目。 Xcode 项目将启动,并立即使用我的测试应用程序的自定义 URL 方案和所需数据调用 openUrl(...)
,触发测试应用程序的启动,该应用程序将运行其测试,报告结果并关闭。
如果通过 --launchdev
和 --argument
的某种组合,我会非常高兴,我可以消除上面的大部分疯狂 - 特别是AppleScript,非常脆弱且不可靠。
到目前为止,我还没有想出如何在代码中使用--argument
的值。 launchOptions
字典在有或没有它的情况下都是 null
,传递给 Main 的 args
消失在 UIApplicationMain 的内部并且永远听不到再次,据我所知——这无关紧要,因为它们总是空的。那么,我可以使用--argument
来传递数据吗?如果是这样,我如何在应用程序中检索数据?
最佳答案
这有点复杂而且没有正确记录,但这里是:
--argument=ARG
将在启动时(在设备上或模拟器中)将 ARG 作为命令行选项传递给应用程序。 MonoTouch 为应用程序创建 native main 方法,这是处理 ARG 的方法。该原生 main 方法会将任何参数传递给托管 Main 方法,如下所示:-app-arg:MANAGED_ARG
。
将它们放在一起,例如将 -ip=3.14.15.9
传递给您在设备上的应用程序,您将像这样执行 mtouch:
mtouch --argument=-app-arg:-ip=3.14.15.9 --launchdev com.yourcompany.yourapp
请注意,原生 main 方法对格式有点挑剔,它是一个破折号(-app-arg
,而不是 --app-arg
),和一个MANAGED_ARG 之前的冒号(不是 =
)。
关于c# - mtouch --argument 命令行选项有什么作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9523505/