Kotlin 作为有高级特性的语言,凭借高阶函数也能支持实现 DSL 。
Lifecycle 源码分析
Android Deodex
在使用逆向工具(比如 jdax 等)反编译某些系统 App 的时候,会发现其代码其实是不全的,其实是因为系统应用的 APK 已经经过 odex 和 vdex 化,导致代码分离。
比如在之前的文章(Android 拆包,提取 APK 或 Framework 文件)中,拆了 MIUI 的 Rom,其中小米系统界面(MiuiSystemUI)拆开后大致是这样的:
1 | $ tree -s priv-app/MiuiSystemUI/ |
解压 MiuiSystemUI.apk 之后:
1 | AndroidManifest.xml assets/ META-INF/ res/ resources.arsc |
可以看到 Apk 压缩文件中未包含 .dex 文件,而 priv-app/MiuiSystemUI/oat/arm64/ 路径下存在 .odex 和 .vdex 的文件,我们要方便的查看其代码,就需要进行反编译(deodex)。
Android 拆包,提取 APK 或 Framework 文件
之前由于开发一个关于 MIUI 系统界面的 Xposed 插件,为了适配不同的 Rom,需要查看不同 Rom 中的 SystemUI.apk