【问题标题】:From iOS app on Simulator, launch OS X shell script从模拟器上的 iOS 应用程序,启动 OS X shell 脚本
【发布时间】:2016-08-13 08:45:58
【问题描述】:

是否可以从 iOS 应用程序代码内部运行 Mac OS X shell 脚本(或任何其他 OS X 程序)?

具体情况如下:我在玩UI XCTests,想在setup()tearDown()测试用例方法中运行shell脚本。目的是在测试运行时启动屏幕录制。

【问题讨论】:

  • 我认为苹果公司的人付出了很大的努力来确保没有人可以从模拟器上启动任何东西;)不知道如何解决你的问题,但我建议你看看XCode 命令行工具。
  • @AlexanderDoloz,我希望苹果人为这类事情留下一些“后门”。我想象的其他方式是可能的 - 通过基于 Web 的界面与外部环境进行交互。例如,VLC 播放器就是这样做的。但是这种方法会太复杂...

标签: ios macos shell ios-simulator xctest


【解决方案1】:

好的,看起来没人知道简单的解决方法。所以我用python上的本地网络服务器解决了这个问题。

Python 有内置的BaseHTTPServer 类。以本教程为例:http://joelinoff.com/blog/?p=1658 我们可以编写简单的网络服务器来处理 POST 请求并执行一些操作。

在我的情况下,操作是调用 bash 脚本

os.system(someCommandString)

要启动所有这些机制,我们需要运行 python webserver。然后在setup()tearDown() 方法中的XCTestCase 子类中,我们向服务器执行请求,例如:

    AFHTTPSessionManager().POST("http://0.0.0.0:8080/command", parameters: params, success: { (NSURLSessionDataTask, AnyObject) in
        print("succeed")
    }, failure: { (NSURLSessionDataTask, NSError) in
        print("failed")
    })

【讨论】:

    猜你喜欢
    • 2012-01-24
    • 2012-04-14
    • 2016-12-03
    • 2016-01-15
    • 2021-09-13
    • 2015-10-14
    • 2017-03-13
    • 1970-01-01
    • 2014-11-21
    相关资源
    最近更新 更多