0

我看到模拟器和设备报告的 id 不同的问题。我确实有不同的android版本。

转储显示在模拟器和设备的 pastebin转储输出中,屏幕截图在这里 emulator http://imagebin.org/271953 http://imagebin.org/271953设备 http://imagebin.org/271954 http:// imagebin.org/271954

请注意,模拟器具有 android 4.2.2 api 17,而设备具有 android 4.2.1。我觉得两者都是 API 17 应该被认为是相同的。我没有在 android sdk manager 中发现 4.2.1 平台。

此外 -F 转储选项不适用于非开发人员设备(未植根)。那么如何在开发设备中进行测试是否有一些设置?

当我在 cyanogenmod 根设备上执行转储 -ViF 时,我得到了以下结果。我还检查了使用

 (eval $(adb shell getprop | dos2unix | egrep '\[ro\.secure]|\[ro\.debuggable]' | sed 's/\./_/g; s/]: /=/g; s/[][]//g'); [[ 1 == $ro_secure && 0 == $ro_debuggable ]] && echo "System is secure: AVC won't work" || echo "System is not secure: AVC will work")

系统不安全:AVC 可以工作

mitnm@mitendebian:~$ dump -ViF

Connecting to a device with serialno=.* with a timeout of 60 secs...

Connected to device with serialno=.*

Actual device serialno=0009cdf44f784f

Traceback (most recent call last):

  File "//home/mitenm/testing/AndroidViewClient-master/AndroidViewClient/tools/dump", line 134, in <module>

    vc = ViewClient(*ViewClient.connectToDeviceOrExit(**kwargs1), **kwargs2)
  File "/home/mitenm/testing/AndroidViewClient-

master/AndroidViewClient/src/com/dtmilano/android/viewclient.py", line 1219, in __init__
    'tcp:%d' % self.remotePort])

  File "/usr/local/lib/python2.7/subprocess.py", line 537, in check_call
    retcode = call(*popenargs, **kwargs)

  File "/usr/local/lib/python2.7/subprocess.py", line 524, in call
    return Popen(*popenargs, **kwargs).wait()

  File "/usr/local/lib/python2.7/subprocess.py", line 711, in __init__
    errread, errwrite)

  File "/usr/local/lib/python2.7/subprocess.py", line 1308, in _execute_child
    raise child_exception

OSError: [Errno 2] No such file or directory

我设置了 ANDROID_VIEW_CLIENT_HOME 环境变量。

我正在尝试 -F 选项,这样我就可以获得 R.id ,然后我可以在我的测试程序中使用它。能给我举个例子吗。似乎 -F 仅适用于模拟器,因此使用 no_id 而不是 R.id 更好。

另外,如果我想测试 android 服务(而不是活动),那么我还可以使用 androidviewclient 吗?如果是这样,请提供示例链接。

我们也可以像在 monkeyrunner 中那样进行屏幕捕获和写入文件吗?

问候,

米腾。

4

1 回答 1

0

发布的转储似乎来自完全不同的屏幕。例如,第一个包含一个标签,Forgot your username or password?而这不在第二个中,而You must log out before proceeding!仅在后者中。

不幸的是,您的屏幕截图的链接已损坏,因此无法提供进一步的帮助。

如果这是您的应用程序,您可以为您的视图设置内容描述并且不受ID的限制。在命令行中使用。--content-descriptiondump

编辑: 关于使用AndroidViewClient的屏幕截图和改进,monkeyrunner请参阅http://dtmilano.blogspot.ca/2013/09/androidviewclientculebra-takesnapshot.html

编辑: 在发现视图时动态分配唯一 ID,因此如果两个应用程序或设备仅在一个视图中不同,则分配的所有剩余唯一 ID 也将不同。

于 2013-09-30T04:23:48.107 回答