【问题标题】:How to run a specific Android app using Terminal? [duplicate]如何使用终端运行特定的 Android 应用程序? [复制]
【发布时间】:2011-07-26 13:41:44
【问题描述】:

我已经安装了 Eclipse 和 Android SDK。一切正常。

我想安装一个 .apk 文件,所以我已经按照说明进行操作。但问题是,当我启动模拟器时,它不会自动运行我的应用程序。

终端中是否有允许我运行我要求的特定应用程序的命令?

【问题讨论】:

  • 您也等着停止活动吗?杀死 $(pidof ...) ?

标签: android command-line android-emulator terminal adb


【解决方案1】:

使用cmd activity start-activity(或替代am start)命令,这是ActivityManager 的命令行界面。使用am 启动本帮助中所示的活动:

$ adb shell am
usage: am [start|instrument]
       am start [-a <ACTION>] [-d <DATA_URI>] [-t <MIME_TYPE>]
                [-c <CATEGORY> [-c <CATEGORY>] ...]
                [-e <EXTRA_KEY> <EXTRA_VALUE> [-e <EXTRA_KEY> <EXTRA_VALUE> ...]
                [-n <COMPONENT>] [-D] [<URI>]
       ...

例如,要启动 Contacts 应用程序,并且假设您只知道包名而不知道 Activity,则可以使用

$ pkg=com.google.android.contacts
$ comp=$(adb shell cmd package resolve-activity --brief -c android.intent.category.LAUNCHER $pkg | tail -1)
$ adb shell cmd activity start-activity $comp

或替代

$ adb shell am start -n $comp

有关其他详细信息,另请参阅 http://www.kandroid.org/online-pdk/guide/instrumentation_testing.html(可能是过时 url 的副本:http://source.android.com/porting/instrumentation_testing.html)。

要终止您可以使用的应用程序

$ adb shell am kill com.google.android.contacts

或者更激烈的

$ adb shell am force-stop com.google.android.contacts

【讨论】:

  • 嗨 dtmilano。我也在尝试活动管理器,但我不知道应用程序的组件。您介意进一步解释吗?
  • 例如:我在/opt/sdk/example.apk中有一个编译好的文件,我安装进去后,如何让它在命令行中运行?
  • 所以..你怎么停下来?我试过 adb stop...
  • 有没有办法启动应用程序并等待它停止?
  • 你的意思是Activity停止的时候?在onStop() 中添加一些日志消息,然后搜索logcat,直到找到该消息。
【解决方案2】:

每当我从命令行工作时,我都会将this build-and-run script 放在手边:

#!/usr/bin/env bash

PACKAGE=com.example.demo
ACTIVITY=.MainActivity
APK_LOCATION=app/build/outputs/apk/app-debug.apk
echo "Package: $PACKAGE"

echo "Building the project with tasks: $TASKS"
./gradlew $TASKS

echo "Uninstalling $PACKAGE"
adb uninstall $PACKAGE

echo "Installing $APK_LOCATION"
adb install $APK_LOCATION

echo "Starting $ACTIVITY"
adb shell am start -n $PACKAGE/$ACTIVITY

【讨论】:

  • 当我运行此命令时,我收到一条错误消息 Error: Activity class {com.example.demo/com.example.demo.MainActivity} 不存在。 .你知道如何解决这个问题吗?它还说错误类型 3
  • @Ezio 请更改脚本中的第 2 行以指向您的主要活动。就我而言,它是:包根目录中的 MainActivity.java => com.example.demo.MainActivity。这对你来说会有所不同。您还需要将第 1 行的包名称 (com.example.demo) 更新为您应用的包名称。
  • 我知道那个 Shubham,我做了你所说的所有更改,但仍然出现错误。但是现在我使用了 adb shell monkey -p com.mypackage.name -c android.intent.category.LAUNCHER 1 并且它起作用了。我写了一个答案,以防其他人遇到类似问题
【解决方案3】:

你可以通过这个命令启动android服务。

adb shell am startservice -n packageName/.ServiceClass

【讨论】:

  • 感谢您的回答,但请详细描述您的回答,而不是只用两行来帮助用户。
【解决方案4】:

我使用了上述所有答案,但它给了我错误,所以我尝试了

adb shell monkey -p com.yourpackage.name -c android.intent.category.LAUNCHER 1

它奏效了。一个优点是,如果您使用此命令,则不必指定启动器活动。

【讨论】:

  • 我只能用这个猴子命令得到它谢谢。其他人给了我权限错误。
  • 所有安卓设备都有monkey命令吗?我在嵌入式 Android 设备上盲代码执行,不知道它有什么命令,什么命令没有。
  • monkey 命令是一个 adb 命令,它不依赖于设备,而是存在于您的开发机器中。
猜你喜欢
  • 1970-01-01
  • 2015-11-21
  • 2015-05-25
  • 1970-01-01
  • 1970-01-01
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多