解密ADT第三篇-java编译工具详解

前言

之前介绍了ADT编译air android项目的资源,接下来介绍编译源码部分,在这之前 我会贴几张图,以说明我们在FB中开始创建 air项目 到 发布APK的整个过程,现在终于开始说编译源码的问题了,这个问题我打算从最开始的android SDK编译开始说.接下来这篇文章可能有点枯燥,但是没关系,对于我这个健忘症患者来说,如果把技术写的细致才是关键.

  • FB打包APK 过程剖析

首先最直观的方式: 基本步骤应该是这样的,但是也并不绝对详细.毕竟还有ANE的各种处理,签名的各种处理,临时文件的各种处理,外部资源的各种处理等等. 可能大家看到这张图没什么感觉,但是如果我们看看APK的基本构成应该就了解了.

  • 以下是APK文件的基本构成图

随便一个APK使用压缩工具解压后就可以看到. 上图中aapt编译资源 在 第一篇 第二篇分析中已经详细介绍了.所以这篇讲的是java编译dex文件的部分.我会选择从最基本的JDK开始介绍.之所以说那么细,是由于我是一个健忘症患者. 上图提到了JRE,JRE是java JDK中的东西.是java运行库的核心部分. 在这之前还需要解释一下android原生开发的编译打包过程,首先看两张图:

  • JAVA的JDK与JRE与LVM结构(图来自博客在线)

ps:JRE是AIRSDK的核心承载框架.

再次披露:为什么AIR for android只支持android2.2以上?

由于在android2.2以上 google才给android引入JIT (JUST IT TIME 即时编译技术) 而AS偏偏是一种十足的即时编译语言.

  • 打包android原生程序流程(图来自exetype)

与ADT打包AIR程序相比,打包android原生程序其实都做了同样的事情:

aapt-javac-dx-makeapk-jarsigner-adb

编译资源-编译源码-打包APK-签名-安装

只是ADT按照adobe自家的规则自定义的封了一层膜而已.现在就让我们解开这层膜!!!

案例地址

Anti-ADT:https://github.com/recter/Anti-ADT

发表评论

电子邮件地址不会被公开。 必填项已用*标注