2

monkeyrunner で既にインストールされているアプリケーションでいくつかのコマンドを実行しようとしています。d.android.com にリストされているサンプル コードを編集し、次のように変更しました。

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

ご覧のとおり、コードを (願わくば) open に変更しましたcom.example.myTestAppが、アプリケーションは開きませんが、現在のアプリケーションでコマンドを実行しているようです。何か案は?

4

3 に答える 3

6

アクティビティを次のように指定する必要がありrunComponentます

runComponent = package + "/" + activity

起動可能なアクティビティの名前を取得するには:

$ aapt dump badging <name>.apk | grep launchable-activity
于 2013-03-22T20:37:54.537 に答える
5

この方法を使用して、Play ストアからインストールされている任意の apk から起動アクティビティを取得できました。

adb からパッケージの起動可能なアクティビティ名を取得する

adb shell pm list packages -f

次に、adb pull を使用できます。

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

例:(adb pull /system/app/MyAPK.apk C:\someLocation)

次に aapt で必要な情報を取得します (aapt は現在 ~\sdk\build-tools\android-4.3 にあります):

aapt dump badging <FromYourDesiredLocation\pulledfile.apk>

次に、起動可能なアクティビティを探します: name='SomeActivityName'

同じものを探している他の誰かに役立つことを願っています。

于 2013-10-10T15:47:19.397 に答える
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/を参照

于 2014-02-20T11:13:25.990 に答える