Android自動化學習筆記:獲取APK包名的幾種方法


----------------------------------------------------------------------------------------------------------------------------

小記:自學過程中,經常需要用得到一個APK的包名,總結一下得到包名的幾種方式。

**********************

2014-10-29:初版

2014-10-30:完善

**********************

------------------------------------------------------------------------------------------------------------------------------

 我們主要用的當然是adb shell命令啦。

adb shell官網介紹:

1. 通過adb shell進入到手機data/data目錄下,查看包名(需要root)

adb shell

cd data/data

ls

 

2. 通過adb shell的pm命令,查看包名(不需要root)

adb shell pm list package 
#將獲取手機內所有apk對應的包名

更多命令,請參考pm命令的介紹(http://developer.android.com/tools/help/adb.html#pm):

比如我輸入,可以明顯看出不同。

adb shell pm list package -f
#將獲取手機內所有apk對應的包名和路徑

3. 通過使用adb shell的dumpsys命令,查看包名(不需要root)

adb shell dumpsys window w | findstr \/ | findstr name=
#需要先打開apk后,再敲入命令

4. 通過使用adb shell的dumpsys的另一個命令,查看包名(不需要root)

adb shell dumpsys activity> c:\log.txt
#需要先打開apk后,再敲入命令

輸入命令之后,cmd里沒有任何提示,不過C盤目錄下,會多一個log.txt文件。

打開log.txt文件,搜索 Stack #1,然后尋找cmp=.

如下圖就可以看到包名和activity的名字。

5. 通過使用grep,查看包名(不需要root)

adb shell
1|shell@RM-1057:/ $ logcat | grep START
#需要先打開apk后,再敲入命令

查看最下面

接下來,不論打開哪個APK,cmd命令會自動顯示出包名和activity的名字,比如我又打開了相冊~

可以看出相冊的包名是com.android.gallery3d,activity名字是.app.Gallery

6. 通過使用自帶的AAPT工具,查看包名(不需要root)

APPT是Android Asset Packaging Tool , 在SDK的build-tools目錄下. 該工具可以查看, 創建, 更新ZIP格式的文檔附件(zip, jar, apk)

aapt dump badging (apk path)

可以找到包名和activity的名字,比如

package name = com.example.myfirstapp

activity name = com.example.myfirstap.MainAcitivity

7. 通過使用自帶的Hierayviewer工具,查看包名(需要root和開啟view service)

#需要先打開apk

8.通過使用apktool工具,查看AndroidManifest.xml文件得到包名(需要root)

apktool是GOOGLE提供的APK編譯工具,能夠反編譯及回編譯apk,同時安裝反編譯系統apk所需要的framework-res框架,清理上次反編譯文件夾等功能。需要java支持。

這里有人寫了一篇使用心得:APKTOOL的使用心得

不過我們只需要其中的二個步驟:

apktool d <file.apk> <dir>

#<file.apk>代表了要反編譯的apk文件的路徑,最好寫絕對路徑,比如C:\apps\myfirstapp.apk
#<dir>代表了反編譯后的文件的存儲位置,比如C:\apk\myfirstapp

1.使用apktool反編譯app:apktool d c:\apps\myfirstapp.apk c:\apk\myfirstapp
2.打開AndroidManifest.xml

manifest節點的package屬性值是APK的包名:


android.intent.action.MAIN和android.intent.category.LAUNCHER對應的activity,該activity對應的android:name屬性既是入口activity名稱。
android.intent.action.MAIN表示應用程序最先啟動的Activity
android.intent.category.LAUNCHER表示應用程序是否顯示在程序列表里

9.通過代碼形式獲取包名

這個就不多描述了,可以查看這位大神寫的:代碼的形式獲取已安裝應用的包名

10.這個是網上找來的,沒有嘗試,有興趣的可以試試。

adb shell
logcat | grep Android.intent.category.LAUNCHER

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM