2017-02-08 4 views
0

ich Android SDK auf Ubuntu 16.04 installiert haben, die auf meinem Laptop auf Virtual Box läuft. Ich habe ein Samsung Galaxy Tab an den Laptop angeschlossen. Das Gerät ist für die virtuelle Maschine zugänglich. Ich versuche, meinen android app (apk file) mit monkeyrunner zu installieren.Monkeyrunner auf Ubuntu 16.04 installieren android apk-Datei

Das Python-Skript, das ich verwende, ist unter

# Imports the monkeyrunner modules used by this program 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

# Connects to the current device, returning a MonkeyDevice object 
device = MonkeyRunner.waitForConnection() 

# Installs the Android package. Notice that this method returns a boolean, so you can test 
# to see if the installation worked. 
device.installPackage('myproject/bin/MyApplication.apk') 

# sets a variable with the package's internal name 
package = 'com.example.android.myapplication' 

# sets a variable with the name of an Activity in the package 
activity = 'com.example.android.myapplication.MainActivity' 

# sets the name of the component to start 
runComponent = package + '/' + activity 

# Runs the component 
device.startActivity(component=runComponent) 

# Presses the Menu button 
device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP) 

# Takes a screenshot 
result = device.takeSnapshot() 

# Writes the screenshot to a file 
result.writeToFile('myproject/shot1.png','png') 

ich das Skript als

monkeyrunner -v ALL ~/Workspace/monkey_runner_sample.py 

Ich betreibe erhalten die folgende Ausgabe und nichts passiert. Das Programm hängt ab.

170209 11:19:27.878:I [main] [com.android.chimpchat.ChimpManager] Monkey Command: wake. 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] Error starting command: monkey --port 12345 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice]com.android.ddmlib.TimeoutException 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.read(AdbHelper.java:766) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.read(AdbHelper.java:735) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.readAdbResponse(AdbHelper.java:221) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:455) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:381) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.AdbHelper.executeRemoteCommand(AdbHelper.java:352) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.ddmlib.Device.executeShellCommand(Device.java:604) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at com.android.chimpchat.adb.AdbChimpDevice$1.run(AdbChimpDevice.java:105) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
170209 11:19:31.146:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] at java.lang.Thread.run(Thread.java:745) 

Die Anwendung MyApplication ist nicht auf dem Tablet installiert zu werden.

Die Fehler werden unter

170209 11:27:07.692:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice] Error starting command: monkey --port 12345 
170209 11:27:07.692:S [pool-1-thread-1] [com.android.chimpchat.adb.AdbChimpDevice]com.android.ddmlib.TimeoutException 
gegeben

Könnte mir herauszufinden, jemand helfen, was geschieht?

Antwort

1

Sie können AndroidViewClient/culebra verwenden und mit nur ein paar Änderungen an Ihrem ursprünglichen monkeyrunner Skript können Sie es zum Laufen bringen.

Das Basis Skript wurde von culebra erzeugt, die immer ein guter Ausgangspunkt.

#! /usr/bin/env python 
# -*- coding: utf-8 -*- 
''' 
Copyright (C) 2013-2016 Diego Torres Milano 
Created on 2017-02-08 by Culebra v12.5.3 
         __ __ __ __ 
        /\/\/\/\ 
____________________/ __\/ __\/ __\/ __\_____________________________ 
___________________/ /__/ /__/ /__/ /________________________________ 
        |/\ /\ /\ /\ \___ 
        |/ \_/ \_/ \_/ \ o \ 
              \_____/--< 
@author: Diego Torres Milano 
@author: Jennifer E. Swofford (ascii art snake) 
''' 


import re 
import sys 
import os 


from com.dtmilano.android.viewclient import ViewClient 
from com.dtmilano.android.adb.adbclient import DOWN_AND_UP 

kwargs1 = {'ignoreversioncheck': False, 'verbose': False, 'ignoresecuredevice': False} 
device, serialno = ViewClient.connectToDeviceOrExit(**kwargs1) 
kwargs2 = {'forceviewserveruse': False, 'useuiautomatorhelper': False, 'ignoreuiautomatorkilled': True, 'autodump': False, 'startviewserver': True, 'compresseddump': True} 
vc = ViewClient(device, serialno, **kwargs2) 

# Installs the Android package. Notice that this method returns a boolean, so you can test 
# to see if the installation worked. 
vc.installPackage('myproject/bin/MyApplication.apk') 

# sets a variable with the package's internal name 
package = 'com.example.android.myapplication' 

# sets a variable with the name of an Activity in the package 
activity = 'com.example.android.myapplication.MainActivity' 

# sets the name of the component to start 
runComponent = package + '/' + activity 

# Runs the component 
device.startActivity(component=runComponent) 

# Presses the Menu button 
device.press('KEYCODE_MENU', DOWN_AND_UP) 

# Writes the screenshot to a file (you can use a plain filename or use these placeholders) 
vc.writeImageToFile('/tmp/${serialno}-${focusedwindowname}-${timestamp}.png', 'PNG') 
+0

Arbeitete wie ein Charme :) danke. – liv2hak

+1

Großartig. Es gibt viel mehr Dinge, die AndroidViewClient/culebra tun kann [im Vergleich zu monkeyrunner] (http://dtmilano.blogspot.com/2015/12/androidviewclientculebra-vs-monkeyrunner.html), wie die Unterstützung von [Mehrgerätetests] (http: //dtmilano.blogspot.com/2015/05/android-culebra-multi-device.html), Erzeugen von Tests unter Verwendung von GUI, [harmonika] (http://dtmilano.blogspot.com/2015/08/culebra-concertina- mode.html) und [dekorieren screenshots] (http://dtmilano.blogspot.com/2015/04/android-betenting-beautiful-screenshots.html) unter anderem. –

+0

Ich fange an, das zu versuchen. Könnten Sie bitte einen Blick auf http://stackoverflow.com/questions/42149499/pressing-buttons-by-text-on-android-app-using-culebra nehmen, wenn Sie eine Chance bekommen. – liv2hak