繁体   English   中英

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

[英]How to start an application using Android ADB tools

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

adb shell
am start -n com.package.name/com.package.name.ActivityName

或者你可以直接使用它:

adb shell am start -n com.package.name/com.package.name.ActivityName

您还可以指定要由您的意图过滤器过滤的操作:

am start -a com.example.ACTION_NAME -n com.package.name/com.package.name.ActivityName 

可以按照以下模式仅使用猴子工具运行指定包名称的应用程序:

adb shell monkey -p your.app.package.name -c android.intent.category.LAUNCHER 1

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

或者,你可以使用这个:

adb shell am start -n com.package.name/.ActivityName

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

然后“chmod +x adb-run.sh”使其可执行。

现在你可以简单地:

adb-run.sh myapp.apk

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

注意:这要求您的路径中有 aapt。 您可以在 SDK 的新构建工具文件夹下找到它。

第 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 资源管理器。

另外,我还想提一件事。

当您从adb shell am启动应用程序adb shell am它会自动添加 FLAG_ACTIVITY_NEW_TASK 标志,这会改变行为。 请参阅代码

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

如果您正在启动的活动的任务已经在运行,则不会启动新的活动; 相反,当前任务将简单地以它上次所处的状态带到屏幕的前面

这让我花了几个小时来找出问题所在。

因此,请记住adb shell am添加 FLAG_ACTIVITY_NEW_TASK 标志

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

adb shell am start -d "file:///sdcard/sample.3gp" -t "video/3gp" -a android.intent.action.VIEW

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

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

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

然后打开Android项目文件夹

androidinstall app-debug && androidrun com.example.app MainActivity

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

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

adb shell monkey --pct-syskeys 0 -p com.cirosantilli.android_cheat.textviewbold 1

并因错误而失败:

SYS_KEYS has no physical keys but with factor 2.0%

在 HiKey960、Android O AOSP 上测试。

学习自: https : //github.com/ARM-software/lisa/pull/408

还问: monkey test:如果Android系统没有物理键,命令中需要包含哪些参数

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

前任:

adb shell am start -n 'com.android.settings/.wifi.WifiStatusTest'

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

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

adb shell pm list packages

以上命令返回所有应用程序的包列表,示例:

org.linphone.debug
.
.
com.android.email

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

adb shell am start org.belphone.debug

最短的命令如下:

adb shell monkey -p your.app.package.name 1

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

感谢@Androiderson 的提示

试试这个,打开一个 android 照片应用程序并使用特定的图像文件作为参数打开。

adb shell am start -n com.google.android.apps.photos/.home.HomeActivity -d file:///mnt/user/0/primary/Pictures/Screenshots/Screenshot.png

它将适用于最新的 android,当您提供要打开图像的特定应用程序时,不会弹出窗口来选择要打开的应用程序

adb shell am start -n com.app.package.name/com.java.package.name.ActivityName

例子

adb shell am start -n com.google.android.googlequicksearchbox/com.google.android.search.core.google.GoogleSearch

如果Java包相同,那么可以缩短

adb shell am start -n com.example.package/.subpackage.ActivityName

当您尝试打开 Flutter 应用程序时,您可以使用此命令:

adb shell am start -n com.package.name/io.flutter.embedding.android.FlutterActivity

com.package.name替换为您的 package 名称。 您在applicationIdapp/build.gradle中找到您的 package。

采用:

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

要获取<appPackageName>运行:

adb shell pm list packages

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

adb shell dumpsys window | grep -E 'mCurrentFocus'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM