2014-04-16 125 views
2

我必須使用命令行在android模擬器上啓動應用程序。爲此我知道adb命令有一個方法;獲取.apk文件的主包名稱

adb shell am start -a android.intent.action.MAIN -n com.example.myApplication 

,但我必須在執行此命令之前,找到應用程序包的名稱,所以任何人都幫我找到包名,或運行APK任何替代的解決方案在模擬器

+0

你想要什麼樣的包,以獲得?我們只需要先解決您的問題。 –

+0

我想獲取主要活動的應用程序包名稱,就像我在命令行參數 – user3387036

回答

0

提取apk文件和重建清單文件,然後通過解析xml清單文件,您可以找到主要活動包名稱。 請參考this link進行解析,並參考this link解壓縮apk文件。

2
aapt dump badging <path-to-apk> 
+0

中指定的那樣,此命令顯示應用程序的完整信息,我只需要包名稱。 – user3387036

1

這就是我在我的一個項目中使用的一個shell腳本。

apk= #apk path 
package=`.//aapt dump badging $apk | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g` 
echo $package 
adb install $apk 

,如果你只想在CMD提示符下輸入,那麼這將是

.//aapt dump badging ***apk relative path*** | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g 

,應該工作。

+0

如果我在命令提示符下輸入,命令是什麼? – user3387036

+0

我編輯了我原來的帖子,告訴我它是否不起作用? –

+0

顯示錯誤grep不被識別爲內部外部命令 – user3387036

6

在Linux上,只需使用這個命令來獲得軟件包名稱:

aapt dump badging {apk-file.apk} | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g

獲取主(發射器)活動是相似的:

aapt dump badging {apk-file.apk} | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g

對於我個人的使用情況,我已經寫了一個叫做apkinfo.sh的shell腳本,如下所示:

#!/bin/bash package=`aapt dump badging $* | grep package | awk '{print $2}' | sed s/name=//g | sed s/\'//g` activity=`aapt dump badging $* | grep launchable-activity: | awk '{print $2}' | sed s/name=//g | sed s/\'//g` echo echo package : $package echo activity: $activity

並以此爲以下幾點:

./apkinfo.sh {path-to-apk-file.apk}