第53天:Android程序生成步骤

Android程序即APK文件。APK文件实际上是一个zip压缩包。

APK打包流程,可分为7步。

第一步:

打包资源文件生成R.java文件,主要使用工具aapt。

  1. 调用aapt源码目录下Resource.cpp中的buildResources(),首先检查AndroidManifest.xml的合法性。
  2. makeFileResource()函数处理res目录下的资源,然后调用compileResourceFile()函数编译res与asserts目录下的资源文件。
  3. 调用parseAndAddEntry()函数生成R.java文件。
  4. 调用compileXmlFile()函数对xml文件进行编译,相当于加密处理。
  5. 最后将所有资源文件和编译生成的resources.arsc文件和AndroidManifest.xml文件打包压缩成resources.ap_文件

第二步:

处理aidl文件,生成相应的java文件。(aidl为 android interface definition language)Android接口描述语言。

第三步:

编译工程源代码,生成相应的class文件。

  • 调用javac编译java源文件生成class文件。
  • NDK的话需要编译native代码。

第四步:

转换所有的class文件,生成classes.dex文件。主要使用dx工具。

第五步:

打包生成APK文件。打包的工具为apkbuilder。

第六步:

对APK文件进行签名。

第七步:

对签名后的APK文件进行对齐处理。

 

DEX文件

dex文件由7部分组成。

1.dex header 指定dex文件的一些属性。还有其他6部分数据结构的物理偏移。

2.string_ids到class_def结构可以理解为“索引结构区”

3.数据存放在data区,link_data为静态链接数据区。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值