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
时间: 2024-11-16 23:45:34

Android自动化学习笔记:获取APK包名的几种方法的相关文章

Android获取APK包名的几种方法

Android获取APK包名的几种方法:1.adb shell pm list package -f | findstr 关键字 #只能获取到包名,主Activity名无法获取到 2.使用aapt--aapt是sdk自带的一个工具,在sdk\builds-tools\目录下 运行后的结果中以下两行分别是应用包名package和入口activity名称 package: name=’com.estrongs.android.pop’ launchable-activity: name=’com.e

Linux获取apk包名,版本号

1.将来aapt和apktool拷贝到/usr/bin/下面 2.运行aapt报错:-bash: /usr/bin/aapt: /lib/ld-linux.so.2: bad ELF interpreter: No such file or directory解决:反查需要的文件在哪个包中yum whatprovides */ld-linux.so.2在获取的列表中选择安装glibc-2.12-1.132.el6_5.1.i686yum -y install glibc-2.12-1.132.e

PHP中获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法 从网上收罗的,基本上就以下这几种方式: 第1种方法: function get_extension($file) { substr(strrchr($file, '.'), 1); } 第2种方法: function get_extension($file) { return substr($file, strrpos($file, '.')+1); } 第3种方法: function get_extension($file) { return end(expl

JavaScript学习笔记第一天——字符串连接的N种方法

Javascript 字符串的连接方法有多种,但效率却有很大区别. 1.逐个字符串相加 var arr = ['item 1', 'item 2', 'item 3', ...]; var list = ''; for (var i = 0, l = arr.length; i < l; i++) { list += '<li>' + arr[i] + '</li>'; } list = '<ul>' + list + '</ul>'; 这种最常见的,

PHP中 获取文件扩展名的N种方法

PHP中获取文件扩展名的N种方法,有以下这几种方式:第1种方法:function get_extension($file){substr(strrchr($file, ‘.’), 1);} 第2种方法:function get_extension($file){return substr($file, strrpos($file, ‘.’)+1);} 第3种方法:function get_extension($file){return end(explode(‘.’, $file));} 第4种

借助Android sdk提过的aapt工具获取apk包名和首activity

def get_packer_activity(addr): # 提过apk路径,获取包名和首页activity cmd = 'aapt dump badging '+ addr+'>abc.log' flag = [] if 0 == os.system(cmd): try: with open('abc.log', 'r', encoding='UTF-8') as file: abc = file.readlines() for line in abc: if 'launchable-ac

android应用锁之获取前台进程包名方法

今天在做技术总结,顺便就把知识共享,个人崇尚分享. 通过以下方式来获取前台进程的包名: 1.android api 10-20 通过ActivityManager中getRunningTasks来获取. 2.android api 21- 22(部分没有升级google更新包) 由于系统在api 21以上禁用getRunningTasks接口. 通过ActivityManager中getRunningAppProcesses来获取 缺点:有可能误判(概率很低) 3.android api 22

Android自动化学习笔记之Robotium:学习官网实例

---------------------------------------------------------------------------------------------------------------------------- 小记:MonkeyRunner暂时告一段落,今天起学习一下Robotium. ********************** 2014-11-18:初版 ********************** --------------------------

获取Apk包名和入口Activity

cmd下执行命令 到以下目录:D:\Android SDK\adt-bundle-windows-x86_64-20131030\sdk\build-tools\android-4.4 输入以下命令: aapt dump badging D:\AppiumDemo\app\SquirrelAccountBook_V3.0.3build-20170804.apk