Framework(2) - APP打包

一、打包步骤

第一步:打包资源文件,通过Appt工具生成R.java和resources.ap文件

Resource文件(就是工程中res中的文件)、Assets文件、AndroidManifest.xml文件。

如果是多moudle或project项目,都会合并到主工程目录下的resources.ap.

第二步:处理AIDL文件,通过aidi工具生成对应的.java文件

第三步:处理源文件(包括R.java和AIDL生成的.java文件)、库文件(.jar文件),通过Javac生成对应的.class文件

第四步:将第3步生成的class文件通过dx工具转化成1个或多个dex文件

第五步:通过apkbuilder工具打包生成未签名的.apk文件

第六步:通过jarsigner工具对未签名.apk文件进行签名

第七步:通过zipalign工具对签名后的.apk文件进行对齐处理(不进行对齐处理是不能发布到Google Market的)

 

步骤中提到的工具如下表:

名称 功能介绍 在操作系统中的路径

aapt Android资源打包工具 ${ANDROID_SDK_HOME}/platform-tools/appt

aidl Android接口描述语言转化为.java文件的工具 ${ANDROID_SDK_HOME}/platform-tools/aidl

javac Java Compiler ${JDK_HOME}/javac或/usr/bin/javac

dex 转化.class文件为Davik VM能识别的.dex文件 ${ANDROID_SDK_HOME}/platform-tools/dx

apkbuilder 生成apk包 ${ANDROID_SDK_HOME}/tools/opkbuilder

jarsigner .jar文件的签名工具 ${JDK_HOME}/jarsigner或/usr/bin/jarsigner

zipalign 字节码对齐工具 ${ANDROID_SDK_HOME}/tools/zipalign

 

二、打包后文件结构

1、assets目录  - 保留工程中assets目录,其他moudle、jar包中的assets也会合并到该assets目录下。

2、lib目录 -  编译的时候jar文件已经合并到主工程中,所以lib目录下不会有jar文件,但是lib中包含所有的so文件,so目录的路径保留原有的路径。

3、META-INF目录,信息描述,签名等用途。

4、res目录 - 工程资源文件,以主工程为主,其他文件如jar包会合并到该目录下;但是values文件将不会出现在此目录下,因为已经将其编译到resources.arsc文件中;raw文件将保持原有的内容不会被编译。

5、AndroidManifest - 用来做组件查找。

6、classes.dex  - 虚拟机执行文件。

7、resources.arsc  - 资源文件索引。

 

三、raw和assets区别

相同点:

1、两者目录下的文件在打包后会原封不动的保存在apk包中,不会被编译成二进制。


不同点:
1、res/raw中的文件会被映射到R.java文件中,访问的时候直接使用资源ID即R.id.filename;assets文件夹下的文件不会被映射到R.java中,访问的时候需要AssetManager类。
2、res/raw不可有目录结构,也就是raw目录下不可以再建立子文件夹,而assets可以建。

 

四、Resouces和AssetManager关系

Resources对象创建后,就解析好了其所需要的所有的资源包的resources.arsc,并且这些resources.arsc的所有字符串池已经被保存在了与Resources对象关联的 java层AssetManager对象的mStringBlocks数组中

https://www.jianshu.com/p/56d6e00bb0a1

 

参考:

https://www.cnblogs.com/sjm19910902/p/6416022.html

https://www.jianshu.com/p/7c288a17cda8

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值