Android APK的生成流程

第一次接触写Android APP, 不是太清楚Eclipse和AS自动化的的工作后面发生了什么,所以拜读老罗/炸斯特/Android Docs文章后,基于Android M上做个实践总结。
1. 重点是APK的生成流程。
2. Android APP的代码结构是这个流程起始的地方,它决定了APK生成的流程怎么走。
3. 整个流程的结果是一个APK以及对应的odex。

Android APP的代码结构

通常一个APP的目录下包含如下内容:
AndroidManifest.xml: 提供packagename, components list, API Level, used libraries, permissions, etc. 这些信息以后PMS会用到。
Android.mk: 告知Android buid system哪些java/res/asset文件需要被处理,以及对处理的过程做配置制。本文件将决定后续的APK生成流程怎么走。
src: 本目录下通常包含java/aidl/c++/c代码,本文着重java和aidl代码;
res: 本目录下通常包含可以根据resource ID 进行索引的资源,打包进apk之前会被编译优化;
assets: 本目录下通常包含只能根据文件名来索引的raw资源,打包进apk之前不会被编译优化;

将代码和资源分开是国际惯例,好处可以baidu/google。

Android APK 的生成流程

M上的虚拟机已经默认使用ART, 另外默认编译采用JackNJill,由于JackNJill把javac/proguard/dex的工作一步做了,为了弄明白细节,本文后续只讨论JackNJill disable并且生成odex的过程。(在Android.mk 里加上LOCAL_JACK_ENABLED := false)。

具体过程参见代码: build/core/package.mk

大体流程:
这里写图片描述

典型的Android APK构成

这里写图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值