- Android 触摸屏事件派发机制详解与源码分析一 View 篇
- Android 触摸屏事件派发机制详解与源码分析二 ViewGroup 篇
- Android 触摸屏事件派发机制详解与源码分析三 Activity 篇
- Android 应用 setContentView 与 LayoutInflater 加载解析机制源码分析
- Android 应用 Context 详解及源码解析
- Android 异步消息处理机制详解及源码分析
- Android 应用 Activity、Dialog、PopWindow、Toast 窗口添加机制及源码分析
- Android ListView 工作原理完全解析,带你从源码的角度彻底理解
- Activity 启动过程全解析
- Android 应用 AsyncTask 处理机制详解及源码分析
- 说说 PendingIntent 的内部机制
- Android Activity.startActivity 流程简介
- Activity 界面显示全解析
- 框架层理解 Activity 生命周期(APP 启动过程)
- APK 安装过程及原理详解
- Android 构建过程简述
- Android 应用层 View 绘制流程与源码分析
Android 构建过程简述
Android 的构建过程涉及到许多工具和流程,并会产生一系列中间件,最终生成一个 APK 文件,可以根据官方提供的流程图来具体了解构建的过程。
通常的构建过程就是如上图所示,下面是具体描述:
1.AAPT(Android Asset Packaging Tool) 工具会打包应用中的资源文件,如 AndroidManifest.xml、layout 布局中的 xml 等,并将 xml 文件编译为二进制形式,当然 assets 文件夹中的文件不会被编译,图片及 raw 文件夹中的资源也会保持原来的形态,需要注意的是 raw 文件夹中的资源也会生成资源 id。AAPT 编译完成之后会生成 R.java 文件。
2.AIDL 工具会将所有的 aidl 接口转化为 java 接口。
3.所有的 java 代码,包括 R.java 与 aidl 文件都会被 Java 编译器编译成.class 文件。
4.Dex 工具会将上述产生的.class 文件及第三库及其他.class 文件编译成.dex 文件(dex 文件是 Dalvik 虚拟机可以执行的格式),dex 文件最终会被打包进 APK 文件。
5.ApkBuilder 工具会将编译过的资源及未编译过的资源(如图片等)以及.dex 文件打包成 APK 文件。
6.生成 APK 文件后,需要对其签名才可安装到设备,平时测试时会使用 debug keystore,当正式发布应用时必须使用 release 版的 keystore 对应用进行签名。
7.如果对 APK 正式签名,还需要使用 zipalign 工具对 APK 进行对齐操作,这样做的好处是当应用运行时会减少内存的开销。
在构建 APK 的过程中,当 APK 过大,应用中的方法数量超过 65536 限制的时候,可能会报如下错误:Unable to execute dex: method ID not in [0, 0xffff]: 65536。一旦遇到上述错误,就需要使用 MultiDex 方案来解决,但官方的 MultiDex 方案有一些限制,因此还得使用各种策略填坑才行,具体可参考网上不少较优秀的解决方案。
参考文档: https://developer.android.com/sdk/installing/studio-build.html#detailed-build
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论