要自动化我的应用程序,我需要将一些参数传递给构建的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(在将参数传递给设备之后)。
答案 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版本,我遇到问题(应用程序没有启动..崩溃等等),如果使用调试版本 - 一切都很好。