macOS 上安装与配置apksigner (读取APK签名的工具)

背景

在 macOS 上想读取 APK 签名(SHA-1/SHA-256)时,官方推荐工具是 apksigner ,它随 Android SDK Build-Tools 发布。本文从零开始,带你把 sdkmanagerapksigner 一次性装到位。


1. 确认或准备 Android SDK

场景 操作
已装 Android Studio 打开 Android Studio → Settings/PreferencesLanguages & framworksAndroid SDK → 复制 Android SDK Location 路径(下文用 /Users/your_name/Library/Android/sdk 示例)。
仅要命令行 谷歌官网 下载 Command line tools only ,解压成如下结构: ~/android-sdk/cmdline-tools/latest/bin/sdkmanager

2. 安装 Build-Tools(含 apksigner)

bash 复制代码
# 任选 ≥ 24 的版本即可,这里以 34.0.0 为例
/Users/your_name/Library/Android/sdk/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0"

若提示目录不存在,先创建 cmdline-tools/latest 正确层级,或直接用 Android Studio 内置的 SDK Manager 勾选 Android SDK Build-Tools 34.0.0 安装。


3. 把 apksigner 加入 PATH(zsh 示例)

bash 复制代码
# 1) 立即生效
export PATH=$PATH:/Users/your_name/Library/Android/sdk/build-tools/34.0.0

# 2) 写入 shell 启动脚本,永久生效
echo 'export PATH=$PATH:/Users/your_name/Library/Android/sdk/build-tools/34.0.0' >> ~/.zshrc
source ~/.zshrc

4. 验证安装

bash 复制代码
apksigner version
# 正常输出类似 0.9 或 1.0

5. 读取 APK 签名指纹

bash 复制代码
apksigner verify -v --print-certs my.apk | grep -E 'SHA-1|SHA-256'

输出示例(30.0.0+ 默认无冒号):

复制代码
Signer #1 certificate SHA-1 digest: a1b2c3d4e5f6...  
Signer #1 certificate SHA-256 digest: 4eb5770c6e13...

6. 一键脚本(懒人版)

把下面整块复制到终端即可:

bash 复制代码
SDK=/Users/your_name/Library/Android/sdk
$SDK/cmdline-tools/latest/bin/sdkmanager "build-tools;34.0.0"
echo "export PATH=\$PATH:$SDK/build-tools/34.0.0" >> ~/.zshrc && source ~/.zshrc
apksigner version

看到版本号即代表环境 OK,后续任意 APK 都能快速读出签名。

相关推荐
alexhilton5 小时前
将应用迁移到Navigation 3:痛点、加班和紧急修复
android·kotlin·android jetpack
杉氧11 小时前
Navigation Compose 深度实践:如何优雅地串联起你的全栈 App?
android·架构·android jetpack
雨白14 小时前
指针与数组的核心机制
android
黄林晴19 小时前
Room 3.0 正式发布!包名彻底重构,KMP 成为核心主线
android·android jetpack
三少爷的鞋19 小时前
Kotlin 协程环境下的 DCL 懒加载:别把线程时代的经验直接搬过来
android
plainGeekDev20 小时前
Gson → kotlinx.serialization
android·java·kotlin
CYY951 天前
Compose 入门篇
android·kotlin
杉氧2 天前
Compose 时代的 MVI 架构:如何用单向数据流驱动复杂 UI?
android·架构·android jetpack
杉氧2 天前
Modifier 的艺术:为什么链式调用的顺序决定了UI 的生命周期?
android·架构·android jetpack