2012-02-21 34 views
21

Chúng tôi có thiết bị Android và là một phần của thử nghiệm, tôi cần phải thực hiện một ứng dụng thử nghiệm trên bàn điều khiển trên thiết bị đích. Nếu ứng dụng thử nghiệm phát hiện lỗi, nó trả về -1.Mã lỗi ADB

Tôi có thể sử dụng vỏ adb để chạy các ứng dụng thử nghiệm từ xa trên đích nhưng tôi không thể tìm cách lấy lại mã trả về. Tôi cần điều này để tôi có thể xây dựng nó thành một bộ thử nghiệm tự động.

Tôi có thể thử grepping đầu ra giao diện điều khiển cho một số văn bản thất bại nhưng đó là một chút grubby. Có ai biết về một giải pháp thanh lịch hơn?

+0

Tôi gặp vấn đề tương tự. Dù adb thực thi, nó luôn trả về 0. –

+2

[Vấn đề 3254: \t adb shell không trả lại mã thoát của chương trình] (https://code.google.com/p/android/issues/detail?id=3254) – n611x007

Trả lời

9

Đây là giải pháp để lấy mã thoát: adb shell '{lệnh của bạn ở đây}>/dev/null 2> & 1; echo $? '

Đây là một wrapper quanh adb trong 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 
+1

Bạn đã bao giờ cần sử dụng 'echo \ $?'? – devin

4

Bạn có thể sử dụng Facebook fb-adb, một "A vỏ tốt hơn cho các thiết bị Android" mà "truyền trạng thái thoát chương trình thay vì luôn luôn thoát với trạng thái 0".

Các vấn đề liên quan