Подтвердить что ты не робот

Коды ошибок ADB

У нас есть Android-устройство, и в рамках тестирования мне нужно выпустить консольное тестовое приложение на целевом устройстве. Если тестовое приложение обнаруживает ошибку, оно возвращает -1.

Я могу использовать оболочку adb для удаленного запуска тестовых приложений, но я не могу найти способ вернуть код возврата. Мне нужно это, чтобы я мог создать это в автоматическом наборе тестов.

Я могу попробовать grepping вывод консоли для некоторого файла с ошибкой, но это немного грязно. Кто-нибудь знает более элегантное решение?

4b9b3361

Ответ 1

Это обходной путь для получения кода выхода: adb shell '{ваша команда здесь} > /dev/null 2 > & 1; echo $? '

Это оболочка вокруг adb в Ruby:

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

Ответ 2

Вы можете использовать Facebook fb-adb, "Лучшая оболочка для Android-устройств", которая "распространяет статус выхода программы, а не всегда выходит со статусом 0".