如何使用Android ADB工具启动应用程序?

Sea*_*ean 442 android adb

如何使用Android的ADB工具发送意图?

Cri*_*ian 597

adb shell
am start -n com.package.name/com.package.name.ActivityName
Run Code Online (Sandbox Code Playgroud)

或者你可以直接使用它:

adb shell am start -n com.package.name/com.package.name.ActivityName
Run Code Online (Sandbox Code Playgroud)

您还可以指定要由intent-filters过滤的操作:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 
Run Code Online (Sandbox Code Playgroud)

  • 非常感谢你,我做了它在〜/ .bash_profile中壳功能要快得多`函数androidrun(){蚂蚁干净调试亚行外壳上午开始-n $ 1/$ 1.MainActivity}`和`使用COM androidrun. example.test` (23认同)
  • 是可以运行默认活动,而不是特定于我打算从哪个活动开始? (18认同)
  • -n似乎不再与命令相关 (6认同)
  • `adb shell am`将为您提供传递给`am`命令的其他选项列表.您可以在https://developer.android.com/tools/help/adb.html#am上找到更多信息 (3认同)
  • 我在查找应用程序和活动时遇到问题。我使用了这条管道`adb logcat | grep --line-buffered ActivityManager | grep --line-buffered` 列出所有显示的应用程序。 (2认同)

Mic*_*hal 278

可以使用猴子工具运行应用程序指定包名称,方法如下:

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1
Run Code Online (Sandbox Code Playgroud)

命令用于使用猴子工具运行应用程序,该工具为应用程序生成随机输入.命令的最后一部分是整数,它指定了为app生成的随机输入的数量.在这种情况下,数字为1,实际上用于启动应用程序(图标点击).

  • 启动器是默认的.你可以简化为`adb shell monkey -p your.app.package.name 1` (79认同)
  • 是否可以使用APK文件名而不是包名?假设我有一个APK文件,我希望能够安装并运行它,是否可能? (3认同)
  • 如果出现错误怎么办:**没有发现可以运行的活动。中止**? (3认同)
  • @IgorGanapolsky如果没有找到任何活动,它是一个服务应用程序,根本没有活动. (3认同)

小智 119

或者,您可以使用此:

adb shell am start -n com.package.name/.ActivityName
Run Code Online (Sandbox Code Playgroud)

  • 是否可以在不指定活动名称的情况下执行此操作,以便启动默认主活动? (74认同)
  • `monkey -p com.package.name 1`通过`adb shell` (15认同)
  • 如果我不知道**ActivityName**怎么办? (8认同)
  • @androiddeveloper从*depodefi*中查看下面的*monkey*命令:无需指定活动名称! (5认同)
  • 运行 ~/android-sdk-linux/build-tools/20.0.0/aapt dump badging yourapp.apk ,它将列出以下条目:launchable-activity: name='com.company.android.package.YourLaunchableActivity' (2认同)

dlj*_*ava 59

linux/mac用户还可以创建一个脚本来运行apk,其内容如下:

使用以下3行创建名为"adb-run.sh"的文件:

pkg=$(aapt dump badging $1|awk -F" " '/package/ {print $2}'|awk -F"'" '/name=/ {print $2}')
act=$(aapt dump badging $1|awk -F" " '/launchable-activity/ {print $2}'|awk -F"'" '/name=/ {print $2}')
adb shell am start -n $pkg/$act
Run Code Online (Sandbox Code Playgroud)

然后"chmod + x adb-run.sh"使其可执行.

现在你可以简单地说:

adb-run.sh myapp.apk

这样做的好处是您不需要知道包名称或可启动活动名称.同样,您可以创建"adb-uninstall.sh myapp.apk"

注意:这要求您遵循自己的道路.您可以在SDK中的新构建工具文件夹下找到它.

  • 你的帖子让我查找AWK.我继续并重新创建了你的脚本.http://pastebin.com/X7X1SsFa (3认同)
  • 这太棒了.为什么这不是我们永远不会知道的标准adb命令. (2认同)

Lou*_*CAD 32

最短的命令如下:

adb shell monkey -p your.app.package.name 1
Run Code Online (Sandbox Code Playgroud)

这将启动启动器中包的默认活动。

感谢Androiderson 的提示


김준호*_*김준호 20

另外,我还想提一件事.

从中启动应用程序时adb shell am,它会自动添加FLAG_ACTIVITY_NEW_TASK标志,这会使行为发生变化.看代码.

例如,如果您启动Play商店活动adb shell am,按" 后退 "按钮(硬件后退按钮)将不会将您带到您的应用程序,相反,如果有一些(如果没有Play商店任务,它会带您以前的Play商店活动) ,然后它会带你你的应用程序).FLAG_ACTIVITY_NEW_TASK文档说:

如果任务已在您正在启动的活动中运行,则不会启动新活动; 相反,当前任务将简单地以最后一个状态被带到屏幕的前面

这导致我花了几个小时来找出问题所在.

所以,请记住adb shell am 添加FLAG_ACTIVITY_NEW_TASK标志.


Shi*_*yya 17

您可以通过以下命令找到您的应用程序包名称:

adb shell pm list packages
Run Code Online (Sandbox Code Playgroud)

上面的命令返回所有应用程序的包列表。例子:

org.linphone.debug
.
.
com.android.email
Run Code Online (Sandbox Code Playgroud)

现在我想使用以下命令启动应用程序linphone ,这对我有用:

adb shell pm list packages
Run Code Online (Sandbox Code Playgroud)

  • 嗯,不适用于 Android 4.4。1. 包名称均以 `package:` 为前缀(例如 `package:com.cnn.mobile.android.phone`)。2. 尝试启动时(带或不带 `package:` 前缀),我得到 `Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] pkg=com.cnn .mobile.android.phone } 错误:活动未启动,无法解析 Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] flg=0x10000000 pkg=com.cnn.mobile.android .电话}`。 (2认同)

Anv*_*thy 16

我们也可以通过了解应用程序类型并向其提供数据来启动应用程序:

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW
Run Code Online (Sandbox Code Playgroud)

此命令显示可用的视频播放器以播放sample.3gp文件


Abd*_*iaa 14

打开〜/ .bash_profile 并将这些bash函数添加到文件的末尾

function androidinstall(){
   adb install -r ./bin/$1.apk
}
function androidrun(){
   ant clean debug
   adb shell am start -n $1/$1.$2
}
Run Code Online (Sandbox Code Playgroud)

然后打开Android项目文件夹

androidinstall app-debug && androidrun com.example.app MainActivity
Run Code Online (Sandbox Code Playgroud)

  • @TrevorSenior app-debug是apk文件的标题,通常在调试模式下生成的apk文件标题为"APPLICATION NAME-debug.apk" (3认同)
  • 你能解释一下`app-debug`的作用吗? (2认同)

Tus*_*dey 11

步骤1:首先,使用以下命令

adb shell pm list packages

获取设备中安装的所有应用程序的软件包名称: 步骤2:将获取所有软件包的名称,复制要开始使用adb 的软件包名称。

步骤3:在以下命令中添加所需的软件包名称。

adb shell monkey -p 'your package name' -v 500

例如:
adb shell monkey -p com.estrongs.android.pop -v 500 启动Es Explorer。

  • 这将启动您的应用程序并向其发送500个伪随机事件。因此,使用“ 1”代替“ 500”更好。 (6认同)

小智 9

使用:

adb shell am start -n '<appPackageName>/<appActitivityName>'

<appPackageName>运行:

adb shell pm list packages

获取<appActitivityName>午餐应用程序并运行

adb shell dumpsys window | grep -E 'mCurrentFocus'


Cir*_*四事件 6

monkey --pct-syskeys 0 用于开发板

没有这个参数,没有键/显示,应用程序将无法在开发板上打开:

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1
Run Code Online (Sandbox Code Playgroud)

并失败并出错:

SYS_KEYS has no physical keys but with factor 2.0%
Run Code Online (Sandbox Code Playgroud)

在HiKey960,Android O AOSP上测试.

据了解:https://github.com/ARM-software/lisa/pull/408

还问:猴子测试:如果Android系统没有物理键,那么需要在命令中包含哪些参数


小智 5

adb shell am start -n '<appPackageName>/.<appActitivityName>
Run Code Online (Sandbox Code Playgroud)

前任:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'
Run Code Online (Sandbox Code Playgroud)

您可以使用 APK-INFO 应用程序来了解每个应用程序包的应用程序活动列表

  • 您的示例代码不显示“APK-INFO”的用法 (2认同)

归档时间:

查看次数:

419738 次

最近记录:

6 年,11 月 前