首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用NSTask运行adb命令

使用NSTask运行adb命令
EN

Stack Overflow用户
提问于 2015-01-28 00:46:16
回答 1查看 537关注 0票数 0

我正在构建一个简单的GUI,以便在Cocoa中运行亚行命令。我已经找到了几篇不同的文章,说明如何使用NSTask运行shell命令,但并不是专门针对亚行的,而且我很难理解。

我可以运行简单的ADB命令。

  • adb devices
  • adb reboot

函数

代码语言:javascript
复制
NSString *adbPath = @"~/Android/sdk/platform-tools/adb";
NSString* runADBCommand(NSString *cmd)
{
    NSTask *adbDevices = [[NSTask alloc] init];
    [adbDevices setLaunchPath:adbPath];

    adbDevices.arguments = @[cmd];

    NSPipe *pipe;
    pipe = [NSPipe pipe];
    [adbDevices setStandardOutput:pipe];

    NSFileHandle *file;
    file = [pipe fileHandleForReading];

    [adbDevices launch];

    NSData *data;
    data = [file readDataToEndOfFile];

    NSString *adbComOutput;
    adbComOutput = [[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];

    return adbComOutput;
}

调用

代码语言:javascript
复制
- (void)refreshDevices:(id)sender
{
    adbOutput.stringValue = runADBCommand(@"devices");
}

上面的内容很好,但是当我传递一个更复杂的论点时:

代码语言:javascript
复制
- (void) getVersion:(id)sender
{
    runADBCommand(@"shell cat /system/build.prop | grep incremental");
}

我只是得到控制台输出,就好像我刚在终端中输入了adb一样。如何将NSTask的命令和参数打包以运行亚行命令?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-01-28 01:57:03

您应该使用-setArguments:方法设置参数,就像下面的示例NSTask shell

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28182784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档