Android | 获取 apk 的包名和主类名

对 apk 进行 debug 签名

Posted by Haauleon on July 14, 2021

一、背景

  Android 的相关测试是要重新签名的,在没有拿到开发人员签名文件时,只能自己对 apk 进行重新签名。市面上有相关插件可以辅助进行 debug 签名,如 re-sign 工具。

  获取 apk 文件的包名 package namemain activity 的目的,是为了对 apk 也就是被测试应用使用 adb 命令行进行调试,比如监控应用的启动时间和获取日志等等。




二、环境配置

1.环境准备

一部 windows 10 系统的笔记本



2.安装 jdk

链接:https://pan.baidu.com/s/1v_7s29r8RAiZ5pWmBEI6XQ
提取码:u8xd

  把网盘中的 jdk 二进制文件下载下来后自动安装到 C 盘 C:\Program Files\Java\jdk1.8.0_291 即可。



3.配置 JAVA_HOME

(1)右键点击打开 此电脑 > 属性 > 高级系统设置 > 环境变量

(2)新增一个系统变量 JAVA_HOME,变量配置如下:

1
2
变量名    JAVA_HOME
变量值    C:\Program Files\Java\jdk1.8.0_291


(3)编辑 Path 变量值后点击保存即可:

1
2
新增变量值:
%JAVA_HOME%\bin


(4)进入 cmd 检查是否配置成功:

1
$ java -version



4.下载 android-sdk

链接:https://pan.baidu.com/s/12qz2QbF3EIcNAqovTBpq2Q
提取码:afos

  下载后解压即可,我这里是解压到 D:\software\android-sdk-windows



5.配置 ANDROID_HOME

(1)右键点击打开 此电脑 > 属性 > 高级系统设置 > 环境变量

(2)新增一个系统变量 ANDROID_HOME,变量配置如下:

1
2
变量名    ANDROID_HOME
变量值    D:\software\android-sdk-windows


(3)编辑 Path 变量值后点击保存即可:

1
2
3
4
新增变量值:
%ANDROID_HOME%\platform-tools
%ANDROID_HOME%\tools
%ANDROID_HOME%\build-tools\29.0.3


(4)新增一个系统变量 CLASSPATH,变量配置如下:

1
2
变量名    CLASSPATH
变量值    %JAVA_HOME%\bin;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar



6.下载 zipalign.exe

链接:https://pan.baidu.com/s/1n1SzDpkM6JcPYAMaTV5v5A
提取码:5t1u

  下载后将此文件复制到路径 D:\software\android-sdk-windows\tools 下即可。



7.下载 re-sign.jar

链接:https://pan.baidu.com/s/1wfBzhnavObWva1_Rd9wmyg
提取码:5dzu



三、获取 apk 文件

1.使用 usb 数据线连接安卓设备
2.初始化环境

1
2
$ adb kill-server
$ adb start-server

3.获取设备所有 apk 的包名

1
$ adb shell pm list package

4.获取指定包名的 apk 存放位置

1
2
3
4
5
$ adb shell pm path [package name]

示例:
$ adb shell pm path com.bringbuyshare
package:/data/app/com.bringbuyshare-1/base.apk

5.将 apk 安装包拉到本地电脑

1
2
3
4
$ adb pull [包名的绝对路径] [拉取到本地的绝对路径] 

示例:
$ adb pull /data/app/com.bringbuyshare-1/base.apk D:\software\android-sdk-windows\apks



四、debug 签名

1.启动 re-sign 工具
1
2
3
4
5
6
7
8
9
10
$ java -jar [re-sign.jar 文件的绝对路径]

示例:
C:\Users\Haauleon>java -jar d:\software\re-sign.jar
Running jarsigner
Command line: C:\Program Files\Java\jdk1.8.0_291/bin/jarsigner -keystore C:\Users\Haauleon/.android/debug.keystore -storepass android -keypass android C:\Users\Haauleon\AppData\Local\Temp\resigner2212093146033715047.apk androiddebugkey
jarsigner finished with following output:
jarsigner ?í?ó: java.lang.RuntimeException: ??????????: C:\Users\Haauleon\.android\debug.keystore (?????????????¨????????)
Running zipalign
Command line: D:\software\android-sdk-windows/tools/zipalign -f 4 C:\Users\Haauleon\AppData\Local\Temp\resigner2212093146033715047.apk D:\software\android-sdk-windows\apks\base_debug.apk

  工具启动成功,即可打开一个小窗口。




2.获取包名和主类名

  将本地拉取到的 base.apk 文件拉取到上图的小窗口中,生成一个新的 base_debug.apk 文件的同时提示重新签名成功,获取包名和主类名成功。