Android ADB错误代码

Android ADB错误代码,android,Android,我们有一个android设备,作为测试的一部分,我需要在目标设备上执行一个控制台测试应用程序。如果测试应用程序检测到错误,它将返回-1 我可以使用ADBShell在目标上远程运行测试应用程序,但我找不到返回代码的方法。我需要这个,这样我就可以把它构建成一个自动化的测试套件 我可以尝试将控制台输出变灰以查找一些失败文本,但这有点脏。有人知道更优雅的解决方案吗?这是获取退出代码的一种解决方法: adb shell{your command here}>/dev/null 2>&1;echo$?' 这

我们有一个android设备,作为测试的一部分,我需要在目标设备上执行一个控制台测试应用程序。如果测试应用程序检测到错误,它将返回-1

我可以使用ADBShell在目标上远程运行测试应用程序,但我找不到返回代码的方法。我需要这个,这样我就可以把它构建成一个自动化的测试套件


我可以尝试将控制台输出变灰以查找一些失败文本,但这有点脏。有人知道更优雅的解决方案吗?

这是获取退出代码的一种解决方法: adb shell{your command here}>/dev/null 2>&1;echo$?'

这是Ruby中围绕adb的包装:

def adb(opt)
  input = "#{adb_command} #{opt[:command]} #{opt[:params]}"
  puts "Executing #{input}...\n"
  output = nil
  exit_code = 0

  def wait_for(secs)
    if secs
      begin
        Timeout::timeout(secs) { yield }
      rescue
        print 'execution expired'
      end
    else
      yield
    end
  end

  wait_for(opt[:timeout]) do
    case opt[:command]
    when :install, :push, :uninstall
      output, exit_code = `#{input}`, $?.to_i
    when :shell
      input = "#{adb_command} shell \"#{opt[:params]}; echo \\$?\""
      output = `#{input}`.split("\n")
      exit_code = output.pop.to_i
      output = output.join("\n")
    else
      raise 'Error: param command to adb not defined!'
    end
  end

  return if opt[:ignore_fail] and output =~ /#{opt[:ignore_fail]}/
  raise output unless exit_code == 0
end

你可以使用Facebook,一个“Android设备的更好外壳”,它“传播程序退出状态,而不是总是以0状态退出。”

我也有同样的问题。无论adb执行什么,它总是返回0。2018年仍不固定。我在android端使用了一个包装器外壳,让它将代码写入一个文件,然后下载。您是否需要使用
echo\$?