Android APP終極瘦身指南

Linux編程

點擊右側關注,免費入門到精通!

作者丨未知

http://www.jayfeng.com/2015/12/29/APK%E7%98%A6%E8%BA%AB%E5%AE%9E%E8%B7%B5

指南條例

第1條:使用一套資源

這是最基本的一條規則,但非常重要。

對於絕大對數APP來說,只需要取一套設計圖就足夠了。鑒於現在分辨率的趨勢,建議取720p的資源,放到xhdpi目錄。

相對於多套資源,只使用720P的一套資源,在視覺上差別不大,很多大公司的產品也是如此,但卻能顯著的減少資源占用大小,順便也能減輕設計師的出圖工作量了。

注意,這里不是說把不是xhdpi的目錄都刪除,而是強調保留一套設計資源就夠了。

第2條:開啟minifyEnabled混淆代碼

在gradle使用minifyEnabled進行Proguard混淆的配置,可大大減小APP大小:

android{buildTypes{release{minifyEnabledtrue}}}

在proguard中,是否保留符號表對APP的大小是有顯著的影響的,可酌情不保留,但是建議盡量保留用於調試。詳細proguard的相關的配置和原理可自行查閱。

第3條:開啟shrinkResources去除無用資源

在gradle使用shrinkResources去除無用資源,效果非常好。

android{buildTypes{release{shrinkResourcestrue}}}

第4條:刪除無用的語言資源

大部分應用其實並不需要支持幾十種語言的國際化支持。還好強大的gradle支持語言的配置,比如國內應用只支持中文:

android{defaultConfig{resConfigs"zh"}}

第5條:使用tinypng有損壓縮

android打包本身會對png進行無損壓縮,所以使用像tinypng這樣的有損壓縮是有必要的。 重點是Tinypng使用智能有損壓縮技術,以盡量少的失真換來圖片大小的銳減,效果非常好,強烈推薦。

Tinypng的官方網站:http://tinypng.com/

第6條:使用jpg格式

如果對於非透明的大圖,jpg將會比png的大小有顯著的優勢,雖然不是絕對的,但是通常會減小到一半都不止。在啟動頁,活動頁等之類的大圖展示區採用jpg將是非常明智的選擇。

第7條:使用webp格式

webp支持透明度,壓縮比比jpg更高但顯示效果卻不輸於jpg,官方評測quality參數等於75均衡最佳。

相對於jpg、png,webp作為一種新的圖片格式,限於android的支持情況暫時還沒用在手機端廣泛應用起來。從Android 4.0+開始原生支持,但是不支持包含透明度,直到Android 4.2.1+才支持顯示含透明度的webp,使用的時候要特別注意。

官方介紹:

https://developers.google.com/speed/webp/docs/precompiled

第8條:縮小大圖

如果經過上述步驟之後,你的工程里面還有一些大圖,考慮是否有必要維持這樣的大尺寸,是否能適當的縮小。

事實上,由於設計師出圖的原因,我們拿到的很多圖片完全可以適當的縮小而對視覺影響是極小的。

第9條:覆蓋第三庫里的大圖

有些第三庫里引用了一些大圖但是實際上並不會被我們用到,就可以考慮用1×1的透明圖片覆蓋。

你可能會有點不舒服,因為你的drawable下竟然包含了一些莫名其妙的名稱的1×1圖片…

第10條:刪除armable-v7包下的so

基本上armable的so也是兼容armable-v7的,armable-v7a的庫會對圖形渲染方面有很大的改進,如果沒有這方面的要求,可以精簡。 這里不排除有極少數設備會Crash,可能和不同的so有一定的關係,請大家務必測試周全後再發布。

第11條:刪除x86包下的so

與第十條不同的是,x86包下的so在x86型號的手機是需要的,如果產品沒用這方面的要求也可以精簡。

建議實際工作的配置是只保留armable、armable-x86下的so文件,算是一個折中的方案。

第12條:使用微信資源壓縮打包工具

微信資源壓縮打包工具通過短資源名稱,採用7zip對APP進行極致壓縮做到減小APP的目標,效果非常的好,強烈推薦。

詳情參考:Android資源混淆工具使用說明

原理介紹:安裝包立減1M–微信Android資源混淆打包工具 建議開啟7zip,注意白名單的配置,否則會導致有些資源找不到,粗略配置如下,

<?xmlversion="1.0"encoding="UTF-8"?><resproguard><!--defautpropertytoset--><issueid="property"><seventzipvalue="true"/><!--...--></issue><issueid="whitelist"isactive="true"><pathvalue="com.xxx.yyy.R.drawable.emoji_*"/><pathvalue="com.xxx.yyy..../></issue><issueid="compress"isactive="true"><!--...--></issue></resproguard>

第13條:使用provided編譯

對於一些庫是按照需要動態的加載,可能在某些版本並不需要,但是代碼又不方便去除否則會編譯不過。

使用provided可以保證代碼編譯通過,但是實際打包中並不引用此第三方庫,做到了控制APP大小的目標。

但是也同時就需要開發者自己判斷不引用這個第三方庫時就不要執行到相關的代碼,避免APP崩潰。

第14條:使用shape背景

特別是在扁平化盛行的當下,很多純色的漸變的圓角的圖片都可以用shape做到,代碼靈活可控,省去了大量的背景圖片。

第15條:使用著色方案

相信你的工程里也有很多selector文件,也有很多相似的圖片只是顏色不同,通過著色方案我們能大大減輕這樣的工作量,減少這樣的文件。

借助於android support庫可做到一個全版本兼容的著色方案,參考代碼:DrawableLess.java

第16條:在線化素材庫

如果你的APP支持素材庫(比如聊天表情庫)的話,考慮在線加載模式,因為往往素材庫都有不小的體積。

這一步需要開發者做到在線加載,一方面增加代碼的複雜度,一方面提高了APP的流量消耗,建議酌情選擇。

第17條:避免重復庫

避免重復庫看上去是理所當然的,但是秘密總是藏的很深,一定要當心你引用的第三方庫又引用了哪個第三方庫,這就很容易出現功能重復的庫了,比如使用了兩個圖片加載庫:Glide和Picasso。

通過查看exploded-aar目錄和External Libraries或者反編譯生成的APK,盡量避免重復庫的大小,減小APP大小。

第18條:使用更小的庫

同樣功能的庫在大小上是不同的,甚至會懸殊很大。

如果並無對某個庫特別需求而又對APP大小有嚴格要求的話,比較這些相同功能第三方庫的大小,選擇更小的庫會減小APP大小。

第19條:支持插件化

過去的一年,插件化技術雨後春筍一樣的都冒了出來,這些技術支持動態的加載代碼和動態的加載資源,把APP的一部分分離出來了,對於業務龐大的項目來說非常有用,極大的分解了APP大小。

因為插件化技術需要一定的技術保障和服務端系統支持,有一定的風險,如無必要(比如一些小型項目,也沒什麼擴展業務)就不需要了,建議酌情選擇。

第20條:精簡功能業務

這條完全取決於業務需求。

從統計數據分析砍掉一些沒用的功能是完全有可能的,甚至乾脆去掉一些花哨的功能出個輕聊版、極速版也不是不可以的。

第21條:重復執行第1到20條

多次執行上述步驟,你總能發現一些蛛絲馬跡,這是一個好消息,不是嗎?

在線評估

針對很多朋友的反饋,有必要對條例的適用範圍、易用性和風險指數做個粗略的評估,匯總如下,方便大家執行。

小結

相信經過上述步驟,一定可以把你的Android APP極大的瘦身下去。

考慮到一定的風險性,建議挑選適合自己的方法就行;同時,我也會跟蹤最新的瘦身技巧,及時補充更新。

推薦↓↓↓

?16個技術公眾號】都在這里!

涵蓋:工程師大咖、源碼共讀、工程師共讀、數據結構與算法、黑客技術和網路安全、大數據科技、編程前端、Java、Python、Web編程開發、Android、iOS開發、Linux、數據庫研發、幽默工程師等。

萬水千山總是情,點個 「好看」 行不行

分享到Facebook

 


不知道如何找適合的對象?歡迎加官方LINE → Line ID:@shesay
戀愛小秘書免費一對一諮詢!
✔追蹤我的YouTube:https://www.youtube.com/@datenami
✔追蹤我的TikTok:https://www.tiktok.com/@datnami

 

配對成功的關鍵:參加實體交友活動

erose主題派對與戀愛小秘書創辦人娜米表示:「透過各種有趣的實體活動,不僅能親眼真實見到異性,也能在活動進行中讓大家很輕鬆自然的認識彼此、聊天互動,能更快速的找到適合的對象。」

結合大數據用心篩選 + 客製化條件配對

戀愛小秘書團隊已經成功替4000位以上的未婚男女配對成功,這個驚人成果背後的秘密在於「高度客製化服務」,跟每位客戶深度訪談,瞭解客戶真正的特質及需求,從「契合度」提高速配率。

訪談結果結合專屬的人格分析測驗與數據配對分析,精緻化的操作,締造高速配率!

除此之外,戀愛小秘書團隊還會定期追蹤客戶的後續狀況,目的是希望協助客戶發展長期且穩定的伴侶關係。

實名認證防造假!隱私保護最安心!

採用「實名認證」的制度,不僅是把關顧客的身份,避免已婚人士或動機不單純者的加入,更對客戶資料嚴格保密,讓客戶們能在安全且有隱私的狀況下認識另一半。

多元有趣的主題活動,豐富你的社交生活

戀愛小秘書團隊每個月都會規劃豐富多元的實體活動,從戶外踏青、娛樂遊戲、手作、料理課程到桌遊活動,希望客戶們能從歡樂的氣氛中認識彼此。

透過實體活動讓大家先有初步的接觸,然後再為會員們做「客製化」的約會安排。

另外針對想提升自身魅力的客戶,也有投資理財、形象穿搭等講座可供選擇。

追求脫單,先勇敢跨出你的第一步

許多單身者為了心中理想的對象條件,在還沒認識新朋友時,就先限制了自己。建議以認識新朋友的心態,積極參與活動,並適當的設限,才能真正為自己帶來戀愛的機會!勇敢跨出第一步吧!

♡ 現在就和戀愛小秘書娜米聊聊吧Line ID:@shesay

♡ 追蹤娜米的臉書粉絲團

她來報好康

 

SheSay 專注在 兩性、愛情等領域
建立專屬女生觀點的品牌形象
堅持「在第一時間掌握男女的時事議題」
將時下最流行的話題網羅、呈現。

馬上測算你的戀愛密碼

戀愛小秘書-娜米

單身很久?一直被分手?
從生日就看出你的戀愛疑難雜症!
娜米的戀愛數字密碼來幫你了。