【白话】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-打包-签名和对齐

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值