該篇文章是系列<一步一步實現(xiàn)簡單安卓性能監(jiān)控SDK>第一篇文章,歡迎關(guān)注!
從一幅圖片說起
學過安卓開發(fā)的人,特別是自己曾經(jīng)寫過安卓自定義打包插件的開發(fā)者,對于如下的圖片肯定是不會陌生!

由于自己編寫app打包插件需要對app編譯過程中的幾乎每一個細節(jié)都要了解。我們開發(fā)性能監(jiān)控sdk也是如此。我們從以下幾個角度來看。每一個階段做了什么? 使用了什么工具? 輸入是什么輸出是什么?
過程分析
我們根據(jù)圖片,從左到右,從上往下的順序。
Android資源打包
工具 : 工具AAPT
描述:編譯資源文件為java索引文件
輸入:android resource。包括res文件夾,assert文件夾中的內(nèi)容以及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支持的字節(jié)碼文件
工具:dx命令
描述: dx處理class文件為davik支持的字節(jié)碼文件。這些文件包括自己的源碼生成的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進行優(yōu)化、對齊。不優(yōu)化,有些市場是不讓上傳的!
輸入:未對齊apk
輸出:對齊APK
大概就這樣,性能監(jiān)控apk如果要做到自動埋點。需要對整個過程聊熟于心!!!