1. 程式人生 > >安卓APK瘦身

安卓APK瘦身

android post 安卓 ons blog view git 用法 strong

之前打包的時候直接就用eclipse或者android studio直接生成簽名文件,並沒有關心大小問題,近期有人問我有沒有對APK進行瘦身。對這方面內容一致沒有關註過,今天試用了各種方式把項目簽名apk降低了1/4大小。這樣對用戶節省了流量。

1、APK文件分析

APK是Android的安裝包。

APK文件事實上是zip格式,可是後綴被改動為apk,我們能夠直接解壓文件夾例如以下:

技術分享

分析一下各個內容的作用

技術分享


查看文件/文件夾大小主要針對assets、classes.dex、lib、res內容進行精簡。

2、assets精簡

存放在assets下的文件不會生成ID,存放的文件形式能夠是多樣的比方音頻、圖片、html相關的等等,精簡體積也就是精簡這些內容。

(1)音頻:主要用在鈴聲和通知方面,體積不要太大,使用壓縮格式的音頻

(2)圖片:在不降低圖片效果、保證APK顯示效果的前提下縮小圖片文件大小。

a、使用tinypng優化大部分圖片資源

技術分享

tinypng的缺點是在壓縮某些帶有過渡效果(帶alpha值)的圖片時,圖片會失真。這樣的圖片能夠採用webP格式。保證圖片質量前提下大幅降低圖片的大小。

b、使用webP圖片格式

webP是一種支持有損和無損壓縮的網絡圖片格式,假設在 App 中使用 WebP,除了 Android4.0 以上提供的原生支持外,其他版本號以能夠使用官方提供的解析庫webp-android-backport編譯成so使用。通常UI提供的圖片都是png或者jpg格式。我們能夠通過

智圖或者isparta將其他格式的圖片轉換成webP格式。isparta可實現批量轉換。

智圖:

技術分享

技術分享

(3)Html相關的

html主要涉及js和css這兩部內容採用壓縮格式降低體積

3、classes.dex

(1)盡量使用系統提供的字符串、ID、圖片資源等

(2)優化代碼結構,降低冗余代碼

(3)使用shape來替換圖片。能用代碼實現的圖片樣式都用代碼實現

(4)使用Proguard對代碼進行混淆、優化和壓縮,它有一個專門用來降低apk文件大小的功能叫做 tree-shaking。Proguard 會遍歷你的全部代碼然後找出無用處的代碼。全部這些不可達(或者不須要)的代碼都會在生成終於的apk文件之前被清除掉。

Proguard 也會重命名你的類屬性,類和接口,然整個代碼盡可能地保持輕量級水平。

(5)靜態代碼分析工具。無需執行,無需測試用例 掃描整個項目,分析以下潛在的問題,分類指出問題描寫敘述、問題位置,並提供合理的改動建議

4、res

通過AndroidUnusedResources來檢查安卓應用程序中未使用的資源,用法例如以下:

把下載下來的jar放到項目文件夾以下,在控制臺中輸入:

技術分享

找到用不到的資源刪除掉

5、lib

在手機上一般僅僅要支持armabi就能夠了對於x86的不須要,所以引入第三方庫的時候把用不到的so刪除掉。


參考:

1、Android代碼優化——使用Android lint工具

2、android 混淆文件proguard.cfg具體解釋

3、怎樣給你的Android 安裝文件(APK)瘦身

4、給Apk瘦身

5、關於APK瘦身值得分享的一些經驗

6、使用到的工具

安卓APK瘦身