在不知道 Activity 名称的情况下通过 adb 启动应用程序
Launch App via adb without knowing Activity name
从 post Is it possible to start activity through adb shell?,我们可以通过
通过 adb 启动一个 Android 应用程序
adb shell am start -n yourpackagename/.activityname
但是是否可以在不知道 Activity 名称的情况下通过 adb 启动 Android 应用程序?例如,通过将 android.intent.action.MAIN 意图发送到一个包?也许是这样的命令:
adb shell am start -a android.intent.action.MAIN -n packageName
谢谢!!
-宇宙
是的,可以使用 monkey 工具通过 adb shell 启动应用程序。
使用来自 this answer 的命令:
adb shell monkey -p app.package.name -c android.intent.category.LAUNCHER 1
此命令模拟应用程序图标点击,因此隐式意图 LAUNCHER 传递给应用程序清单 (MAIN) 中声明的特定接收器
使用最新版本(至少 API 25)您可以启动默认 Activity,而无需知道其名称,并且不使用 monkey
:
PKG=com.android.calculator2
adb shell am start $PKG/$(adb shell cmd package resolve-activity -c android.intent.category.LAUNCHER $PKG | sed -n '/name=/s/^.*name=//p')
如果您有 apk 文件,您可以使用 droidbot.
安装并启动应用程序
> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0
DroidBot基于adb,但它使用静态分析自动提取Activity名称。
从 post Is it possible to start activity through adb shell?,我们可以通过
通过 adb 启动一个 Android 应用程序adb shell am start -n yourpackagename/.activityname
但是是否可以在不知道 Activity 名称的情况下通过 adb 启动 Android 应用程序?例如,通过将 android.intent.action.MAIN 意图发送到一个包?也许是这样的命令:
adb shell am start -a android.intent.action.MAIN -n packageName
谢谢!!
-宇宙
是的,可以使用 monkey 工具通过 adb shell 启动应用程序。
使用来自 this answer 的命令:
adb shell monkey -p app.package.name -c android.intent.category.LAUNCHER 1
此命令模拟应用程序图标点击,因此隐式意图 LAUNCHER 传递给应用程序清单 (MAIN) 中声明的特定接收器
使用最新版本(至少 API 25)您可以启动默认 Activity,而无需知道其名称,并且不使用 monkey
:
PKG=com.android.calculator2
adb shell am start $PKG/$(adb shell cmd package resolve-activity -c android.intent.category.LAUNCHER $PKG | sed -n '/name=/s/^.*name=//p')
如果您有 apk 文件,您可以使用 droidbot.
安装并启动应用程序> droidbot -d emulator-5554 -a <xxx.apk> -install_app -policy none -count 0
DroidBot基于adb,但它使用静态分析自动提取Activity名称。