ADB Error codes

前端 未结 2 464
无人及你
无人及你 2020-12-16 11:05

We have an android device and as part of testing I need to excute a console test application on the target device. If the test application detects an error it returns -1.

相关标签:
2条回答
  • 2020-12-16 11:41

    You could use Facebook's fb-adb, a "A better shell for Android devices" which "propagates program exit status instead of always exiting with status 0".

    0 讨论(0)
  • 2020-12-16 12:01

    This is a workaround to get the exit code: adb shell '{your command here} > /dev/null 2>&1; echo $?'

    This is a wrapper around adb in 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
    
    0 讨论(0)
提交回复
热议问题