0

我正在对我的应用程序进行电池分析,我只剩下这些选项:

  1. 禁用设备上的 USB 充电,我还不能这样做,并使用设置 -> 电池屏幕的 monkeyrunner 截屏
  2. 在没有连接 USB 线的情况下,我可以通过在我的手机上运行的 shell 脚本来模拟向下音量键 + 电源键保持事件,以截取设置 -> 电池屏幕的屏幕截图
  3. 使用在根电话上运行在 adb shell 中的 shell 脚本,再次获取显示所有进程的 dumpsys 电池,如设置 - > 电池中列出的所有进程,但我不知道该命令

每种方法都有其自身的局限性。有什么方法可以实现我的目标吗?

4

3 回答 3

1

我在这个问题上有一些专业知识。在我看来,您有两种选择:

  1. 您可以创建本地猴子脚本并从设备上的 shell 运行它。
  2. 您可以通过 TCP/IP (WiFi) 连接您的设备并存储电池消耗快照。

编辑

要从设备运行猴子脚本,您需要运行以下命令(如果我不搞砸的话):

adb shell monkey -v -f /mnt/sdcard/script.txt

在这种情况下,脚本使用了一些不寻常的 sintax(只是一个例子,这是一个用于 Nexus S 的默认联系人应用程序的脚本,带有姜饼):

# Start of Script
type= user
count= 150
speed= 1.0
start data >>

#launch browser com.android.contacts/.DialtactsContactsEntryActivity
LaunchActivity(com.android.contacts, com.android.contacts.DialtactsContactsEntryActivity)
UserWait(4000)

#go to favorites tab
Tap(415, 85)
UserWait(3000)

#go to phone tab
Tap(60, 85)
UserWait(3000)

#calllog
Tap(175,90)
UserWait(2000)

#contacts
Tap(300,90)
UserWait(4000)

#create new contact
DispatchPress(KEYCODE_MENU)
UserWait(2000)
Tap(360,650)
UserWait(4000)

#go name
Tap(200,340)
UserWait(8000)
DispatchString(123)
UserWait(5000)

Tap(125,385)

#launching launcher and exit com.android.launcher/com.android.launcher2.Launcher
UserWait(10000)
LaunchActivity(com.android.launcher, com.android.launcher2.Launcher)
quit

至于我,使用第二种方法更容易(而且更容易出错)。您可以通过 WiFi 连接到您的设备(因此,您的 USB 电缆已断开)。为此,您应该:

  1. 通过 USB 连接您的设备并运行adb tcpip <port_num>
  2. 然后将您的设备连接到 WiFi 网络
  3. 然后在你的电脑上执行(也就是连网)adb connect <phone_ip_addres>:<port_num>

现在您可以使用 monkeyrunner 的标准方式通过 WiFi 触发 monkeyrunner 命令(monkeyrunner <script_name>.py

于 2012-10-03T10:43:33.753 回答
1

如果您的目标是功耗分析,请查看 AT&T 研究实验室的Application Resource Optimizer (ARO)。我认为这正是您正在寻找的。它将为您提供比屏幕截图更准确的分析。

于 2012-10-03T09:57:02.620 回答
1

使用 ICS 及更高版本,所有手机都与/system/bin 中名为screencap的 exe 捆绑在一起。运行下面的命令行来截图

screencap -p /sdcard/screenshot.png

这也可以通过使用 Java 抓取 shell 来完成,这样您就可以在需要时捕获屏幕截图。

于 2012-10-03T10:10:08.913 回答