Android etc1tool之png图片转换pkm 和 zipalign简介

发布时间 2023-10-21 10:40:16作者: asd0011231611

一、导读
我们继续总结学习基础知识,温故知新。

本文记录android etc1工具的介绍及使用。
本文记录android zipalign命令的介绍及使用。

二、etc1tool
etc1tool 是一种命令行实用程序,可用于将 PNG 图片编码为 ETC1 压缩标准格式(PKM),并将 ETC1 压缩图片解码回 PNG。

简单讲就是 png跟pkm图片格式互相转换。

android中pkm格式的文件可放在assets目录下进行读取。

2.1、用法
etc1tool infile [--help | --encode | --encodeNoHeader | --decode] [--showDifference
diff-file] [-o outfile]
1
2
选项 说明
infile 要压缩的输入文件。
–help 输出用法信息。
–encode 从 PNG 文件创建 ETC1 文件。如果未指定模式,这将是此工具的默认模式。
–encodeNoHeader 从 PNG 文件创建原始 ETC1 数据文件(没有标头)。
–decode 从 ETC1 文件创建 PNG 文件。
–showDifference diff-file 将原始图片和编码图片之间的差异写入 diff-file。此选项仅在编码时有效。
-o outfile 指定输出文件的名称。如果未指定 outfile,输出文件的名称将由输入文件的名称加上适当的后缀(.pkm 或 .png)构成。
etc1tool

三、zipalign
zipalign 是一种 zip 归档文件对齐工具,有助于确保归档文件中的所有未压缩文件相对于文件开头对齐.

若通过使用 Android Gradle 插件 (AGP) 的 Android Studio 进行构建,系统会自动完成此操作。

下面本主要讲自定义构建系统的使用:

3.1 使用
如果您的 APK 包含共享库(.so 文件),请使用 -p 来确保它们与适合 mmap(2) 的 4KiB 页面边界对齐。
对于其他文件(其对齐方式由 zipalign 的必选对齐参数确定),Android Studio 将在 32 位和 64 位系统中对齐到 4 个字节。

如需对齐 infile.apk 并将其保存为 outfile.apk,请运行以下命令:

zipalign -p -f -v 4 infile.apk outfile.apk
1
如需确认 existing.apk 的对齐情况,请使用以下命令。如果您使用 Android Studio 或 AGP 进行构建,则应使用该命令来验证 APK 是否已对齐。

zipalign -c -v 4 existing.apk
1
选项 说明
-c 仅检查对齐情况(不会修改文件)。
-f 覆盖现有输出文件。
-h 显示工具帮助。
-p 使未压缩的 .so 文件对齐页面。
-v 详细输出。
-z 使用 Zopfli 重新压缩。
zipalign

四、 推荐阅读
Java 专栏

SQL 专栏

数据结构与算法

Android学习专栏