该篇文章是系列<一步一步实现简单安卓性能监控SDK>第一篇文章,欢迎关注!
从一幅图片说起
学过安卓开发的人,特别是自己曾经写过安卓自定义打包插件的开发者,对于如下的图片肯定是不会陌生!
APK编译过程.png由于自己编写app打包插件需要对app编译过程中的几乎每一个细节都要了解。我们开发性能监控sdk也是如此。我们从以下几个角度来看。每一个阶段做了什么? 使用了什么工具? 输入是什么输出是什么?
过程分析
我们根据图片,从左到右,从上往下的顺序。
Android资源打包
工具 : 工具AAPT
描述:编译资源文件为java索引文件
输入:android resource。包括res文件夹,assert文件夹中的内容以及AndroidMenifest.xml文件中。
输出:R.java 、以及bin目录下面的resource_
AIDL文件处理
工具:编译器
描述:处理AIDL接口定义为Java文件
输入:源码文件、aidl文件、framework.aidl文件
输出 : java文件
编译java源代码为class文件
工具:编译器
描述:编译java源代码为class文件,包括源代码以及过程中生成的java代码,例如R.java
输入:java源文件
输出:class文件
dx处理class文件为davik支持的字节码文件
工具:dx命令
描述: dx处理class文件为davik支持的字节码文件。这些文件包括自己的源码生成的class 以及 第三人jar包中的class文件
输入:class文件
输出:dex文件
打包所有资源为未签名的apk
工具: apkbuilder
描述:把apk所需的资源,例如resource、dex文件、AndroidMenifest.xml so文件等等,这些资源打包。
输入:resource、dex文件、AndroidMenifest.xml so文件等等
输出:未签名apk
签名apk
工具;jarsigner
描述:对apk文件签名
输入 :未签名APK
输出 :签名APK
对齐
工具:zipalign
描述:对apk进行优化、对齐。不优化,有些市场是不让上传的!
输入:未对齐apk
输出:对齐APK
大概就这样,性能监控apk如果要做到自动埋点。需要对整个过程聊熟于心!!!
网友评论