type
status
date
slug
summary
tags
category
password
icon
 
notion image

⼿动⽣成apk:

  1. 编译资源
    1. 使⽤ aapt2 ⼯具对资源进⾏编译
      ⼯具
      aapt2
      命令
      命令 aapt2 compile -o build/res.zip --dir res
      输⼊
      资源⽬录
      产出
      资源⼆进制⽂件压缩包(.flat)
  1. 链接资源
    1. 使⽤ 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 ⽂件
  1. 编译 Java ⽂件
    1. 使⽤ javac ⼯具编译 Java ⽂件
      ⼯具
      javac
      命令
      javac -d build -cp $ANDROID_HOME/platforms/android28/android.jar com/*/.java
      输⼊
      资源⼆进制⽂件压缩包
      产出
      class 字节码⽂件
  1. dex 编译
    1. 使⽤ dex ⼯具编译 class 代码
      ⼯具
      dx 或 d8
      命令
      d8 --output build/ --lib $ANDROID_HOME/platforms/android28/android.jar build/com/example/application/*.class
      输⼊
      资源⼆进制⽂件压缩包
      产出
      dex ⽂件
  1. 合并 dex ⽂件和资源⽂件
    1. 使⽤ zip 命令合并代码⽂件和资源⽂件
      ⼯具
      zip 命令
      命令
      zip -j build/app-debug.apk build/classes.dex
      输⼊
      dex ⽂件、资源⽂件
      产出
      还未签名的 apk ⽂件
  1. 对 apk ⽂件进⾏签名
    1. 使⽤ 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 混淆和加固可以提高应用程序的安全性,但它们并不能完全阻止所有的恶意攻击。有经验的黑客仍然可能通过各种手段来攻击应用程序,因此在进行混淆和加固的同时,开发人员还应采取其他安全措施,如加密敏感数据、使用安全的网络通信、实施服务器端验证等,以确保应用程序的整体安全性。
 
常⻅项⽬架构的示例及培养⾃⼰的架构思路一切皆引用
Loading...
shuouyang
shuouyang
android开发 ReactNative开发 小程序开发
最新发布
AOSP 环境搭建
2025-3-29
View 绘制流程-源码解析
2025-3-12
HTTP
2025-3-4
JVM 虚拟机
2025-2-28
蓝牙-BLE-基础
2025-2-28
从 OkHttp 的原理来看 HTTP
2025-2-19
公告
🎉热点信息🎉
--- 1 ---
Jet Brains 推出新的跨平台支持 Kotlin MultiPlatform
--- 2 ---
新的小巧便捷的依赖注入框架 Koin
--- 3 ---
新一代 API 查询语言 GraphQL