# apk-icon-extractor **Repository Path**: hotsmile/apk-icon-extractor ## Basic Information - **Project Name**: apk-icon-extractor - **Description**: APK图标提取器 - 支持Adaptive Icon解析和渲染 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-09-15 - **Last Updated**: 2025-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # APK图标提取器 这是一个用于从APK文件中提取和转换图标的Java工具,支持多种图标格式并统一输出为PNG格式。 ## 功能特性 - **支持多种图标格式**: - PNG图标:直接读取和调整尺寸 - WebP图标:读取并转换为PNG - Vector Drawable:转换为PNG格式 - Adaptive Icon:合成前景和背景,输出PNG - **智能图标选择**:按优先级自动选择最佳图标资源 - **统一输出格式**:所有图标最终输出为PNG格式 - **可配置尺寸**:支持自定义输出图标尺寸 - **命令行工具**:提供易于使用的命令行接口 ## 构建和运行 ### 构建项目 ```bash mvn clean package ``` 构建完成后,会在`target`目录下生成`apk-icon-extractor.jar`文件。 ### 运行工具 ```bash java -jar target/apk-icon-extractor.jar [选项] ``` ### 命令行选项 - `-o, --output <目录>`:指定输出目录(默认为当前目录) - `-s, --size <尺寸>`:指定输出PNG尺寸(默认为512) - `-v, --verbose`:显示详细输出信息 - `-h, --help`:显示帮助信息 ### 使用示例 ```bash # 基本用法 java -jar apk-icon-extractor.jar app.apk # 指定输出目录和尺寸 java -jar apk-icon-extractor.jar app.apk -o ./icons -s 256 # 显示详细输出 java -jar apk-icon-extractor.jar app.apk -v ``` ## 技术实现 ### 项目结构 ``` src/main/java/com/apkicon/ ├── Main.java # 主程序入口 ├── core/ │ └── ApkIconExtractor.java # 核心提取器 ├── model/ │ └── IconInfo.java # 图标信息模型 ├── parser/ │ └── ApkParser.java # APK文件解析器 └── processor/ ├── IconProcessor.java # 图标处理器接口 ├── PngIconProcessor.java # PNG/WebP处理器 ├── VectorIconProcessor.java # Vector Drawable处理器 └── AdaptiveIconProcessor.java # Adaptive Icon处理器 ``` ### 核心依赖 - **zipfilesystem**:用于解析APK文件(ZIP格式) - **batik**:用于SVG到PNG的转换 - **imageio-webp**:用于WebP图像处理 - **picocli**:命令行参数解析 - **dom4j**:XML解析 ### 处理流程 1. **APK解析**:使用ZIP文件系统解析APK文件 2. **资源查找**:在res目录中查找各种格式的图标资源 3. **图标选择**:按优先级选择最佳图标(Adaptive Icon > Vector Drawable > PNG/WebP) 4. **格式处理**:根据图标类型使用相应的处理器 5. **尺寸调整**:将图标调整到目标尺寸 6. **PNG输出**:统一输出为PNG格式 ## 注意事项 - 需要Java 11或更高版本 - 某些复杂的Vector Drawable可能需要额外的处理 - Adaptive Icon的mask形状可能因设备而异,本工具使用标准圆形mask - 大型APK文件可能需要较长的处理时间 ## 许可证 本项目采用MIT许可证。