如何运行(不仅安装)使用.apk文件的android应用程序?

cmd.exe上是否有任何命令允许我使用该应用程序的.apk文件启动特定android应用程序的主要活动。 请注意,我知道这个命令只安装一个android应用程序:

 adb install myapp.apk 

这个命令只会将myapp安装到模拟器上,我必须从模拟器手动运行这个应用程序(通过单击图标)。

我想要做的是使用一个命令,它不仅安装应用程序,而且还启动它的主要活动(请注意,我只有它的.apk文件,所以我不知道包名或任何活动名称是什么)。

你不能一次安装和运行,但是你可以使用adb来启动已经安装的应用程序。 使用adbshell我开始启动一个意图 – 你将需要为你的应用程序使用正确的意图。 几个例子:

 adb shell am start -a android.intent.action.MAIN -n com.android.settings/.Settings 

将启动设置,并

 adb shell am start -a android.intent.action.MAIN -n com.android.browser/.BrowserActivity 

将启动浏览器。 如果您想要将浏览器指向特定页面,请执行此操作

 adb shell am start -a android.intent.action.VIEW -n com.android.browser/.BrowserActivity http://www.google.co.uk 

如果您不知道APK中活动的名称,请执行此操作

 aapt d xmltree <path to apk> AndroidManifest.xml 

输出内容将包含如下部分:

  E: activity (line=32) A: android:theme(0x01010000)=@0x7f080000 A: android:label(0x01010001)=@0x7f070000 A: android:name(0x01010003)="com.anonymous.MainWindow" A: android:launchMode(0x0101001d)=(type 0x10)0x3 A: android:screenOrientation(0x0101001e)=(type 0x10)0x1 A: android:configChanges(0x0101001f)=(type 0x11)0x80 E: intent-filter (line=33) E: action (line=34) A: android:name(0x01010003)="android.intent.action.MAIN" XE: (line=34) 

这告诉你主要活动(MainWindow)的名字,现在你可以运行了

 adb shell am start -a android.intent.action.MAIN -n com.anonymous/.MainWindow 

如果你正在寻找相当于“adb run myapp.apk”

你可以使用这个答案中显示的脚本

(只有Linux和Mac – 也许与Windows上的cygwin)

linux / mac用户也可以创build一个脚本来运行一个apk,如下所示:

用这3行创build一个名为“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

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

注意:这要求你在你的path上适应。 您可以在SDK中的新build工具文件夹下find它

当您从GUI启动应用程序时, adb logcat可能会显示相应的操作/类别/组件:

$ adb logcat
[…]
I / ActivityManager(1607):START {act = android.intent.action.MAIN cat = [android.intent.category.LAUNCHER] flg = 0x10200000 cmp = com.android.browser / .BrowserActivity} from pid 1792
[…]

我把这个在我的生成文件,正确的下一行adb install ...

 adb shell monkey -p `cat .identifier` -c android.intent.category.LAUNCHER 1 

为了这个工作,必须有一个.identifier文件和应用程序的包标识符,如com.company.ourfirstapp

不需要search活动名称。