type
status
date
slug
summary
tags
category
password
icon
⼿动⽣成apk:
- 编译资源
ㅤ | 使⽤ aapt2 ⼯具对资源进⾏编译 |
⼯具 | aapt2 |
命令 | 命令 aapt2 compile -o build/res.zip --dir res |
输⼊ | 资源⽬录 |
产出 | 资源⼆进制⽂件压缩包(.flat) |
- 链接资源
ㅤ | 使⽤ aapt2 ⼯具将资源整合 |
⼯具 | aapt2 |
命令 | aapt2 link build/res.zip -I
$ANDROID_HOME/platforms/android29/android.jar --java build --manifest
AndroidManifest.xml -o build/app-debug.apk |
输⼊ | 资源⼆进制⽂件压缩包 |
产出 | 资源⽂件及 R.java ⽂件 |
- 编译 Java ⽂件
ㅤ | 使⽤ javac ⼯具编译 Java ⽂件 |
⼯具 | javac |
命令 | javac -d build -cp
$ANDROID_HOME/platforms/android28/android.jar com/*/.java |
输⼊ | 资源⼆进制⽂件压缩包 |
产出 | class 字节码⽂件 |
- dex 编译
ㅤ | 使⽤ dex ⼯具编译 class 代码 |
⼯具 | dx 或 d8 |
命令 | d8 --output build/ --lib
$ANDROID_HOME/platforms/android28/android.jar
build/com/example/application/*.class |
输⼊ | 资源⼆进制⽂件压缩包 |
产出 | dex ⽂件 |
- 合并 dex ⽂件和资源⽂件
ㅤ | 使⽤ zip 命令合并代码⽂件和资源⽂件 |
⼯具 | zip 命令 |
命令 | zip -j build/app-debug.apk build/classes.dex |
输⼊ | dex ⽂件、资源⽂件 |
产出 | 还未签名的 apk ⽂件 |
- 对 apk ⽂件进⾏签名
ㅤ | 使⽤ apksigner ⼯具对 apk 签名 |
⼯具 | apksigner |
命令 | apksigner sign -ks ~/.android/debug.keystore
build/app-debug.apk |
输⼊ | 未签名的 apk ⽂件、keystore ⽂件 |
产出 | 已签名的 apk ⽂件 |
AAPT2
支持通过启用增量编译实现更快的资源编译。这是通过将资源处理拆分为两个步骤来实现的:
编译:将资源文件编译为二进制格式。
链接:合并所有已编译的文件并将它们打包到一个软件包中。
这种拆分方式有助于提高增量编译的性能。例如,如果某个文件中有更改,您只需要重新编译该文件。
APK混淆(APK obfuscation)
APK 混淆是指通过对应用程序的代码进行重命名、删除无用代码、修改代码结构和逻辑,以及添加虚假代码等方式来混淆代码,使其难以被理解和分析。它的目的是增加逆向工程的难度,防止黑客或恶意用户通过反编译 APK 文件获取应用程序的源代码和敏感信息。APK 混淆技术可以有效地隐藏代码的真实功能,使反编译后的代码难以理解和还原,增加攻击者分析和修改代码的难度。
APK加固(APK hardening)
APK 加固是在 APK 文件进行加密和保护,以提高应用程序的安全性和抵抗恶意攻击。加固技术可以对 APK 文件进行加密、防止动态调试、检测和防护反调试工具、检测和防护重打包等。它的目的是防止黑客对应用程序进行破解、修改、篡改、反向工程、代码注入等恶意攻击。通过加固,可以增加应用程序抵御恶意攻击的能力,保护用户数据和应用程序的完整性。
常见的 APK 混淆和加固工具包括 ProGuard、DexGuard、Armadillo、Bangcle、360加固等。这些工具提供了对代码进行混淆和加密的功能,同时也提供了其他安全增强功能,如反调试、代码完整性校验、内存防护等。
需要注意的是,虽然 APK 混淆和加固可以提高应用程序的安全性,但它们并不能完全阻止所有的恶意攻击。有经验的黑客仍然可能通过各种手段来攻击应用程序,因此在进行混淆和加固的同时,开发人员还应采取其他安全措施,如加密敏感数据、使用安全的网络通信、实施服务器端验证等,以确保应用程序的整体安全性。
- 作者:shuouyang
- 链接:https://notion-tree.vercel.app/article/979c3d33-c9e2-4e7f-af63-2dc16a09d04e
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。