从开发者直观感受上来说,项目构建就是从Android Studio 点击'run'到生成apk之间的过程。今天我们讲解下这个过程中,用到的构建工具和构建的过程。

一)如下是一个apk解压后的目录,我们先有个印象,后面会提到每个目录在构建过程中是如何生成的。

AndroidManifest.xml       程序全局配置文件

classes.dex                Dalvik字节码

resources.arsc             资源索引表, 解压缩resources.ap_就能看到

res\                      该目录存放资源文件(图片,文本,xml布局)

assets\                    该目录可以存放一些配置文件

src\                       java源码文件

libs\                     存放应用程序所依赖的库

gen\                     编译器根据资源文件生成的java文件

bin\                      由编译器生成的apk文件和各种依赖的资源

META-INF\                该目录下存放的是签名信息

二)下面是构建步骤:

2.1)AAPT(Android Asset Packaging Tool)工具,Android资源打包工具。会打包资源文件(res文件夹下的文件),并生成R.java和resources.arsc文件。

2.2)AIDL工具会将所有的.aidl文件编译成.java文件。

2.3)JAVAC工具将R.java、AIDL接口生成的java文件、应用代码java文件编译成.class文件。

2.4)dx脚本将很多.class文件转换打包成一个.dex文件。

2.5)apkbuilder脚本将资源文件和.dex文件生成未签名的.apk文件。

2.6)jarsigner对apk进行签名。

这些构建中使用的工具或者脚本,在SDK的build-tools或者tools下可以找到。

三)下面是一张Google官方提供的构建流程图。对应着上面的构建步骤和apk解压目录看应该很清晰了。

App打包原理——Android项目构建过程相关推荐

  1. android Android项目构建过程

    今天,简单讲讲android studio如何把写好的工程打包成apk的. 平时开发过程中我们通过android studio编写完成android项目之后直接点击 Run 'app'就可以在buil ...

  2. android 乐固渠道打包,Jenkins奇技淫巧 — Python乐固,多渠道打包篇(Android自动化构建)...

    Jenkins奇技淫巧 - 安装篇(mac) Jenkins奇技淫巧 - 配置篇 Jenkins奇技淫巧 - 安全篇 Jenkins奇技淫巧 - 发送邮件篇 Jenkins奇技淫巧 - 全局变量篇 J ...

  3. Maven学习总结(2)——Maven项目构建过程练习

    Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化构建项目的过程 一.创建Maven项目 1.1.建 ...

  4. Maven学习总结(二)——Maven项目构建过程练习

    2019独角兽企业重金招聘Python工程师标准>>> Maven学习总结(二)--Maven项目构建过程练习 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验 ...

  5. maven snapshot依赖 打包_Maven教程2:Maven项目构建过程练习

    点击上方"Java技术前线",选择"置顶或者星标" 与你一起成长 上一篇只是简单介绍了一下maven入门的一些相关知识,这一篇主要是体验一下Maven高度自动化 ...

  6. (八)整合spring cloud云服务架构 - commonservice-eureka 项目构建过程

    我们针对于HongHu cloud的eureka项目做以下构建,整个构建的过程很简单,我会将每一步都构建过程记录下来,希望可以帮助到大家: 1. 创建一个名为particle-common-eurek ...

  7. springcloud云服务架构-HongHu commonservice-eureka项目构建过程

    2019独角兽企业重金招聘Python工程师标准>>> 上一篇我们回顾了关于 spring cloud eureka的相关基础知识,现在我们针对于HongHu cloud的eurek ...

  8. 项目构建之maven篇:2.HelloWorld项目构建过程

    文件结构说明: 项目构建生命周期: 清理 编译 測试 打包 执行 部署 清理与编译 hello\pom.xml POM:Project Object Model,项目对象模型 pom.xml与ant的 ...

  9. Spring Cloud云服务架构 - common-service 项目构建过程

    2019独角兽企业重金招聘Python工程师标准>>> 我们将对common-service整个项目进行剖析,将整个构建的流程给记录下来,让更多的关注者来参考学习. 首先在构建spr ...

最新文章

  1. 在 CentOS 8 中删除旧的 Linux 内核
  2. 四大传值详解:属性传值,单例传值,代理传值,block传值
  3. python语音在线编辑-Python:语音处理,实现在线朗读RFC文档或本地文本文件
  4. oracle触发器高级教程
  5. 基于服务器端保存用户的查询参数
  6. php前端响应式框架,响应式css前端框架有哪些
  7. AAAI 2022 | 北大 阿里达摩院:基于对比学习的预训练语言模型剪枝压缩
  8. Redis-学习笔记04【Jedis代码操作】
  9. linux卸载cuda10.0,Ubuntu下安装CUDA10.0以及问题
  10. 在中国,有这样一些村落
  11. c语言单链表_突破C语言难点之单链表?一绘图即可
  12. PyCharm LicenseServer 破解
  13. python中的is_python中的is
  14. Warning: Data truncated for column #39;AirPress#39; at row 1
  15. 【数论】—— 多边形数的计算(三角形数,五边形数)
  16. 感觉c语言入门经典看不懂,c语言入门经典怎么样_学c语言看什么书_c语言入门自学(3)...
  17. 【续篇】再次调戏勒索软件大黑客
  18. 高压油管matlab,高压油管的压力及流量控制
  19. linux vi编辑(20160628)
  20. 专业技能热门配方大全

热门文章

  1. win10 解决 WMI Provider Host 占用CPU过高问题
  2. C#控件——Combobox
  3. robocraft维护服务器,Robocraft
  4. 上传excel,比对后批量修改(临时表)(三)
  5. liunx开机自动运行命令
  6. 这儿有一份HTML 基本使用手册,请注意查收
  7. struct.pack()
  8. python的matplotlib背景线_matplotlib保存没有背景和边框的打印线和透明度8位alpha通道issu...
  9. 手把手教写拖拽布局插件(辅助线功能篇)
  10. 电商卖家新方向亚马逊无货源 是否适合每个人做?