縮減apk大小

weixin_34116110發表於2018-01-25

來到新公司一般第一步是安裝吃飯的工具,而第二部一般就是熟悉程式碼啦,我第一眼看到我們應用居然 >37M((汗!!))這還是1.0版本,功能也不多。。。我在優化的時候正好寫一下文章,技術大牛請略過,因為都是一些基礎的東西。

第一步:優化資原始檔

1、檢視圖片,居然有幾個500k的無用圖片。。。,就算有用也太大,直接可以找設計讓他們進行無失真壓縮。什麼?他們不知道??我給你工具 TinyPNG 用法嘛,百度君知道。

不能把工作放到後面處理,我們開發在以後收圖示和圖片的時候,一定要注意大小,當時直接打回去,一個icon,3X的差不多也就1k~3k,圖片最多接受100k

2、檢視無用drawble檔案,layout檔案,這個有專門的工具進行排查

第二步:除去無用第三方

我在優化的過程發現有好幾個沒有用的第三庫和/Android庫,寫到build裡就會打包到我們的apk中

第三步:去掉市場率佔用很低的cpu架構的so

這其實不是一個正確縮減apk大小的方式,英文每一個cpu架構他都有各自的處理機制,雖然有些可以做到相容,但是優化的功能就用不了,當然這個也看自己應用的情況,像我們公司,剛開始創業,市場率很低,就沒必要了,就連淘寶,qq他們都不是全部相容,光說不練假把式,我們看下他們的apk

1782650-79d0438e36890418.png
qq的apk分析.png

我們可以看到,QQ只有一個armeabi

1782650-3482e0e7e24faec2.png
淘寶的apk分析.png

淘寶也是隻有armeabi

當然,你的專案裡可以提供支援多個 CPU 架構的 SDK ,可以同時提供多個目錄的 so,雖然此時 SDK 相對較大,但是被編譯的 so 還是以你在 gradle 裡設定的支援的 ndk 為準:

defaultConfig {
  ndk {   //只編譯armeabi架構
    abiFilters ‘armeabi’ // , ‘arm64-v8a’, ‘x86’, ‘x86_64’ ,"armeabi-v7a’"
  }
}

不太懂cpu架構這塊的可以檢視Android 多CPU架構支援所需要了解的知識

進行這一步,來看下apk已經到了21M,降了16M,是不是很有成就感

不過路還有很長,我的目標是降到15M左右,越往後降的大小就越少!

未完待續~~~

大最後分享一下接下來我的任務,大家都知道65K這個事情吧,解決方案是弄多個dex,我發現我們應用有70+個dex檔案(汗一直流~~~)

1782650-83768ec6d5cd9ec4.png
我們的apk分析.png

(注)本文提到的分析工具是AndroidStudo自帶的分析apk工具,點選檢視用法

相關文章