Files
apk-sign-info/README.md
zlzw 0ef2c09a8e docs: 更新README文档和.gitignore文件
更新README文档,详细说明项目功能、使用方式和项目结构
在.gitignore中添加build和dist目录
2026-01-05 14:50:13 +08:00

159 lines
5.5 KiB
Markdown
Raw Permalink Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# APK签名工具
一个专门用于Android应用签名的工具帮助开发者轻松生成签名文件和查询签名信息。
## 📱 项目简介
这个工具主要完成两个核心任务:
1. **生成签名文件** - 创建用于签名APK的keystore文件
2. **查询签名信息** - 查看APK或签名文件的MD5、SHA-1、SHA-256等签名指纹信息
## 🎯 主要功能
### 1⃣ 生成签名文件
- 可以批量生成多个签名文件
- 支持自定义签名文件的名称、别名、密码等参数
- 支持在参数中添加随机字符串,增强安全性
- 生成的签名文件保存在`keys`目录下
### 2⃣ 查询签名信息
- 可以查看APK文件的签名指纹MD5、SHA-1、SHA-256
- 可以查看keystore文件的签名信息
- 支持自动读取同目录下的`key.txt`密码文件
- 显示RSA公钥的详细信息模数、指数等
### 3⃣ APK签名功能
- 支持使用keystore文件对APK进行签名
- 支持v1、v2、v3三种签名版本
- 自动查找Android SDK中的apksigner工具
## 💻 使用方式
### 方式一图形界面GUI- 推荐新手使用
直接运行`main.py`,会弹出一个友好的图形界面:
```bash
python main.py
```
界面包含:
- 签名文件基础名称输入框
- 别名、存储密码、密钥密码输入框
- 随机字符串长度设置
- 生成数量设置
- 有效期设置
- DN信息设置组织单位、组织名称等
- "生成签名文件"和"查看签名信息"两个主要按钮
**操作步骤:**
1. 填写签名文件基础名称例如keystore
2. 填写别名例如alias
3. 填写存储密码和密钥密码
4. 可以点击"添加随机符"按钮在光标位置插入`{random}`占位符
5. 设置随机字符串长度默认4位
6. 设置生成数量默认1个
7. 设置有效期默认10000天
8. 可选填写DN信息组织单位、组织名称等
9. 点击"生成签名文件"按钮
10. 生成的文件会保存在`keys`目录下
### 方式二:命令行模式 - 适合批量操作
```bash
python main.py --name "keystore" --alias "alias" --storepass "password" --keypass "password" --count 1
```
**命令行参数说明:**
- `--name`: 签名文件基础名称,可包含多个`{random}`占位符
- `--alias`: 别名,可包含多个`{random}`占位符
- `--storepass`: 存储密码,可包含多个`{random}`占位符
- `--keypass`: 密钥密码,可包含多个`{random}`占位符
- `--random-length`: 每个随机字符串的长度默认4
- `--count`: 生成数量默认1
- `--validity`: 有效期默认10000
- `--cn`: Common Name默认Android
- `--ou`: Organizational Unit默认Development
- `--o`: Organization默认AndroidDev
- `--l`: Locality默认Unknown
- `--st`: State默认Unknown
- `--c`: Country默认CN
**示例:**
生成一个随机密码的签名文件:
```bash
python main.py --name "keystore_{random}" --alias "alias_{random}" --storepass "pass_{random}" --keypass "pass_{random}" --count 1
```
批量生成10个签名文件
```bash
python main.py --name "keystore_{random}" --alias "alias_{random}" --storepass "pass_{random}" --keypass "pass_{random}" --count 10
```
## 📁 项目结构
```
apk_sign/
├── main.py # 程序入口根据参数决定启动GUI或命令行模式
├── src/
│ ├── gui.py # 图形界面代码
│ ├── batch.py # 批量生成签名文件的核心逻辑
│ ├── keystore.py # keystore文件生成相关功能
│ ├── signature.py # 签名信息查询功能
│ ├── apksigner.py # APK签名功能
│ └── utils.py # 工具函数
├── keys/ # 生成的签名文件存放目录
└── README.md # 项目说明文档
```
## 🔧 技术特点
1. **纯Python开发** - 使用Python标准库和tkinter图形界面
2. **双模式支持** - 既有图形界面也有命令行接口
3. **安全性考虑** - 支持随机字符串生成,避免密码重复
4. **自动化程度高** - 自动查找Android SDK工具自动读取密码文件
5. **信息完整** - 提供详细的签名信息和公钥信息
## 📋 安装要求
### 必需环境
- Python 3.6 或更高版本
- Java Development Kit (JDK) 8 或更高版本
- Android SDK用于APK签名功能
### 可选环境
- Android SDK build-tools用于APK签名功能
## 📝 适用场景
- Android开发者需要生成测试签名
- 需要查看APK的签名信息
- 批量生成多个不同的签名文件
- 需要对APK进行重新签名
## ❓ 常见问题
### Q1: 生成的签名文件保存在哪里?
A: 所有生成的签名文件都保存在项目根目录下的`keys`文件夹中。
### Q2: `{random}`占位符是什么意思?
A: `{random}`是一个占位符,程序会在生成时将其替换为指定长度的随机字符串。例如,如果你设置名称为`keystore_{random}`随机长度为4可能会生成`keystore_a3b2`这样的文件名。
### Q3: 如何查看签名信息?
A: 在GUI界面中点击"查看签名信息"按钮选择APK文件或keystore文件即可查看签名指纹信息。
### Q4: 支持哪些签名版本?
A: 支持v1、v2、v3三种签名版本默认全部启用。
### Q5: 为什么需要填写DN信息
A: DNDistinguished Name信息是证书的一部分用于标识证书所有者。虽然不是必需的但建议填写以便更好地管理签名证书。
## 📄 许可证
请查看项目根目录下的LICENSE文件了解许可证信息。
## 🤝 贡献
欢迎提交问题和改进建议!