如何在设备上部署IPA时将参数传递给IPA?

时间:2014-05-30 20:35:40

标签: ios xcode ios-ui-automation ipa

要自动化我的应用程序,我需要将一些参数传递给构建的IPA,因为我将其部署在各种设备上并运行我的自动化。从各种线程我认为我可以使用" ios-deploy" (https://github.com/phonegap/ios-deploy),一个从fruitstrap项目派生的项目,通过终端上的命令行成功地将IPA部署到设备。虽然ios-deploy文档建议它可以选择在使用-a--args启动应用程序时提供传递给应用程序的参数,但它对我来说并不适用。相反,我不确定如何在应用程序内阅读这些参数。我尝试过阅读[[NSProcessInfo processInfo] arguments]以及NSUserDefaults方法(http://perspx.com/archives/parsing-command-line-arguments-nsuserdefaults),并且都没有阅读我通过ios-deploy -a发送给IPA的论据。如果我在XCode上构建应用程序并发送参数(编辑方案 - > Run-> Arguments->在启动时传递参数),这些方法可以正常工作。

使用过ios-deploy的人是否可以举例说明如何使用-a选项?或者是否有任何其他方法可以在CLI上启动IPA(在将参数传递给设备之后)。

1 个答案:

答案 0 :(得分:4)

我也需要这个,所以,当我终于找到了解决方案时,我会发布它,以便更容易找到每个人。

首先,安装http://macappstore.org/ideviceinstaller/

If link is broken - in Terminal:

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" < /dev/null 2> /dev/null
brew install ideviceinstaller

然后您可以运行已安装的应用程序:

idevicedebug run "com.bundle.bundleId" "argument=value" "argument2"

如果您连接了多个设备,请为目标设备提供设备UDID:

idevicedebug -u 22296019555853ad916655420ab7596f7a0111 run "com.bundle.bundleId" "argument=value" "argument2"

在项目中,您将完成所有参数

for(NSString *arg in [[NSProcessInfo processInfo] arguments]){}

但这适用于调试版本。如果安装了ad-hoc版本 - 无法真正启动应用程序(行为就像从xcode编译为ad-hoc)。如果安装了调试版本 - 那么一切正常。

然后是ios-deploy。

https://github.com/phonegap/ios-deploy

事实证明 - 他们并不打算只使用它来启动应用程序。每次你需要“安装”。 (https://github.com/phonegap/ios-deploy/issues/236

ios-deploy --bundle“/Users/user_name/Desktop/Payload/Device.app”--debug“parameter1,parameter2,parameter_key3 = parameter_value3”

(参数在一个字符串“all_parameters”中提供..如何将它们分开 - 由您决定。)

在哪里遇到参数字符串然后你会想到一个如何处理它的聪明方法(如果有多个参数等则分开......)

但是 - 在ios-deploy的情况下,如果测试ad-hoc版本,我遇到问题(应用程序没有启动..崩溃等等),如果使用调试版本 - 一切都很好。