menu E4b9a6's blog
rss_feed
E4b9a6's blog
有善始者实繁,能克终者盖寡。

使用AAPT获取软件的包名与启动Activity

作者:E4b9a6, 创建:2022-04-07, 字数:1744, 已阅:174, 最后更新:2022-04-07

这篇文章更新于 960 天前,文中部分信息可能失效,请自行甄别无效内容。

Appium在启动app需要填入appPackage与appActivity,获取这两个信息可以使用AAPT来获取APK的包名与启动页名称

提示:AAPT是Android SDK中的一款工具,用于查看APK的信息,可以作为分析APK包名与启动Activity的工具

首先需要安装Android SDK,访问developer.android.com/studio下拉至“Command line tools only”

点击对应的平台,下载仅命令行版本的SDK工具,下载完成后再解压即可

解压后执行命令如下,[Android SDK Path]是你打算要安装AndroidSDK的文件夹路径

Bash
./sdkmanager --sdk_root=[Android SDK Path] "cmdline-tools;latest"

安装完毕后,我们下载所需工具

Bash
[Android SDK Path]/cmdline-tools/latest/bin/sdkmanager --install "build-tools;32.0.0"

查看AAPT安装情况,可以看到AAPT已经在build-tools文件夹中

Bash
ll [Android SDK Path]/build-tools/32.0.0

total 24M
-rwxr-xr-x 1 chancel chancel 1.6M  4月  7 14:33 aapt
-rwxr-xr-x 1 chancel chancel 5.8M  4月  7 14:33 aapt2
-rw-r--r-- 1 chancel chancel  343  4月  7 14:33 aarch64-linux-android-ld
...

接下来使用aapt分析钉钉APK的包名,得到钉钉的包名是com.alibaba.android.rimet

Bash
[Android SDK Path]/build-tools/32.0.0/aapt dump badging DingTalk.apk | grep package  

# 输出如下
package: name='com.alibaba.android.rimet' versionCode='814' versionName='6.3.30.33' compileSdkVersion='30' compileSdkVersionCodename='11'

使用aapt分析钉钉APK的启动Activity,得到钉钉首页名称是com.alibaba.android.rimet.biz.LaunchHomeActivity

Bash
[Android SDK Path]/build-tools/32.0.0/aapt dump badging DingTalk.apk | grep launchable-activity
launchable-activity: name='com.alibaba.android.rimet.biz.LaunchHomeActivity'  label='' icon=''

每一次使用AAPT或者SDKManage都需要带上全路径比较麻烦,可按照Android开发环境设置,将AndroidSDK加入到Path中

编辑~/.zshrc(如是bash环境则编辑~/.bashrc文件,其他环境自行替换对应用户配置文件)

Bash
cat ~/.zshrc


# 输出如下
...
ANDROID_SDK_ROOT="[Android SDK Path]"
export PATH="$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/build-tools/32.0.0:$HOME/.pyenv/bin:$PATH"
...

[[replyMessage== null?"发表评论":"发表评论 @ " + replyMessage.m_author]]

account_circle
email
web_asset
textsms

评论列表([[messageResponse.total]])

还没有可以显示的留言...
gravatar
[[messageItem.m_author]] [[messageItem.m_author]]
[[messageItem.create_time]]
[[getEnviron(messageItem.m_environ)]]
[[subMessage.m_author]] [[subMessage.m_author]] @ [[subMessage.parent_message.m_author]] [[subMessage.parent_message.m_author]]
[[subMessage.create_time]]
[[getEnviron(messageItem.m_environ)]]