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