【白话】APK编译打包流程

Java编译器对工程本身的java代码进行编译,这些java代码有三个来源:App的源代码,有资源文件生成的R文件(aapt工具),AIDL文件生成的Java接口文件,产出为.class文件

 

  1. 用AAPT编译R.java文件
  2. 编译AIDL的java文件
  3. 把java文件编译成class文件
  4. class文件和依赖的三方库文件通过dex工具生成Delvik虚拟机可执行的.dex文件,包含了所有的class信息,包括项目自身的class和依赖的class,产出为.dex文件
  5. apkbuilder工具将.dex文件和编译后的资源文件生成未经签名对其的apk文件。这里编译后的资源文件包括两部分,一是有aapt编译后产生的资源文件,二是依赖的三方库里的资源文件。产出为未经签名的.apk文件
  6. 分别由JarSigner和zipalign对apk文件进行签名和对齐,生成最终的apk文件

 

【通俗的讲】

  1. 我们平时编译时有时候会一直爆红,编译不过去,需要我们将build文件夹删除然后重新打包,就是重新去构建R.java文件,里面生成的有我们控件id之类的唯一信息
  2. 把aidl产生的java文件编译进行
  3. 把java看成描述文档,去生成.class文件让计算机去认识
  4. 把所有的class文件去生成执行效率更高,体积更小的dex文件
  5. 把dex和资源文件一块打包成我们常见到的apk文件
  6. 在apk文件上写上我们的签名
  7. 对齐,把apk中的未压缩的资源进行‘对齐操作’,让资源按照4字节的边界进行对齐,这样访问速度更快

     对齐肯定是在签名后面,不然先对齐了,再去签名不就把之前对齐的破坏了嘛

 

总结下来就是:编译-Dex-打包-签名和对齐

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章