2013-03-22 2 views
2

Я пытаюсь запустить некоторые команды в приложении, которое уже установлено через monkeyrunner. Я редактировал образец код, указанный на d.android.com, и я изменил его на это:Как запустить monkeyrunner на уже установленном .apk

# 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.myTestApp' 

# 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 

# 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') 

Как вы можете видеть, я изменил код (надеюсь) открытым com.example.myTestApp Но это не открывается мой но, похоже, он запускает команды в текущем приложении. Есть идеи?

ответ

6

Вы должны указать активность в runComponent, как

runComponent = package + "/" + activity 

Чтобы получить имена спускаемых деятельности:

$ aapt dump badging <name>.apk | grep launchable-activity 
+0

Что делать, если я знаю только пакет, а не активность? – EGHDK

+0

Например, я могу найти имя пакета другого приложения на своем телефоне, взяв имя пакета из URL-адреса на странице play.google.com. – EGHDK

+1

Возможно, вы можете проверить сообщения logcat для того, что отображается при попытке открыть приложение. Проверьте, что в журнале что-то вроде «отображается». Я видел имя активности в случае приложения настроек и некоторых других приложений. – Rilwan

3

я смог пусковую деятельность от любого установленного APK из Play Store, используя этот метод:

get launchable activity name of package from adb

adb shell pm list packages -f 

Затем вы можете использовать ADB тянуть:

adb pull <APK path from previous command> <toYourDesiredLocation> 

Для примера: (ADB тянуть /system/app/MyAPK.apk C: \ someLocation)

, а затем AAPT, чтобы получить информацию хочу (AAPT в настоящее время находится в ~ \ SDK \ сборки-инструменты \ андроида-4.3):

aapt dump badging <FromYourDesiredLocation\pulledfile.apk> 

затем искать спускаемых-активности: имя = '' SomeActivityName

Надеюсь, что это поможет кому-то еще искать то же самое.

1

Сначала проверьте, установлено ли ваше приложение.

apk_path = device.shell('pm path com.xx.yy') 
if apk_path.startswith('package:'): 
    print "XXXYY already installed." 
else: 
    print "XXXYY app is not installed, installing APKs..." 
    device.installPackage('D:/path to apk/yourapp.apk') 

см http://antoine-merle.com/introduction-to-the-monkey-runner-tool-2/

 Смежные вопросы

  • Нет связанных вопросов^_^