Android效能優化之Android安裝包大小優化
隨著應用業務功能的日益複雜,使用的第三方庫和SDK也會日益增加,這樣導致的直接後果就是安裝包的體積日漸增加,除了使用外掛化的手段,減少安裝包的體積,我們還可以從以下幾個方面著手,進行安裝包大小的優化。
程式碼混淆
ProGuard是一個開源的Java程式碼混淆器,並且預設整合到Android SDK中,它具有以下功能:
壓縮:移除無效的類、屬性、方法等。
優化:移除沒用的結構。
混淆:把類名、屬性名、方法名替換為一到兩個字母
Gradle配置
開啟minifyEnabled 開啟混淆
開啟shrinkResources 我們在打包的時候預設會把沒有用到的資源(比如圖片)也打包成app,徒增了應用的大小。現在我們可以利用Gradle來優雅的去除沒有用到的資原始檔了!就是在gradle中配置shrinkResources true,這個依賴於minifyEnabled,所以mini fyEnabled也要為true才會生效。
buildTypes { debug { minifyEnabled true shrinkResources true } release { minifyEnabled true shrinkResources true proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }
資源優化
使用Android Lint刪除冗餘資源
Step 1. 單擊選單欄中的Analyze -> Run Inspection by Name,彈出工具選擇框
Step 2. 在彈出的輸入框中輸入Unused resources,回車進入掃描前目錄設定對話方塊
Step 3. 選擇需要掃描的目錄或者整個工程,單擊OK開始
Step 4. 掃描完成後生成報告,可在Android Studio中直接檢視並刪除確認無用的資原始檔。
注:Android Lint不會分析assets資料夾下的資源,因為assets檔案可以通過檔名直接訪問,不需要通過具體的引用,Lint無法判斷資源是否被用到。
資原始檔最少化
在這方面有以下一些建議:
- 儘量使用一套圖片資源,遇到一些圖片在不同解析度手機上變化差異過大的情況時,再考慮在相應資料夾下放入這個特定的圖片
- 使用一套圖、一套佈局、多套dimens.xml檔案,在使用最小資源的情況下,解決多解析度適配
- 使用輕量級的第三方庫
- 減少專案中的預置圖片,預置圖片改成有伺服器下發,儘可能將程式與資源分離。
圖片優化
tinypng有失真壓縮
png換成jpg
jpg換成webp
其中安裝jpg轉webp工具: brew install webp
轉換命令:cwebp -q 50(或者75) input.jpg output.webp
大圖縮小
覆蓋aar裡一些預設的大圖,主module(apk)會覆蓋依賴module的資原始檔,但是values會合並
相關推薦
Android效能優化之Android安裝包大小優化
隨著應用業務功能的日益複雜,使用的第三方庫和SDK也會日益增加,這樣導致的直接後果就是安裝包的體積日漸增加,除了使用外掛化的手段,減少安裝包的體積,我們還可以從以下幾個方面著手,進行安裝包大小的優化。 程式碼混淆 ProGuard是一個開源的Java程式碼混淆器
Unity之IOS和Android安裝包大小優化
簡介 蘋果對於IOS執行檔的大小是有明確的限制的,其中TEXT段的大小不能超過80M,否則提審將會被蘋果拒絕,同時,如果TEXT段過於太大,那麼在蘋果進行加密之後,很容易出現解壓失敗等各種異常,最終導致遊戲無法正常執行。因此,理論上我們應該儘可能保持我們的執行檔TEX
Android 安裝包大小優化(Apk瘦身)
目錄 1. 為什麼? APK越大,在下載安裝過程中,耗費的流量會越多,安裝等待的時間也會越長,安裝包的大小對下載的失敗率也有影響。而對於應用本身,就意味著下載轉化率會越低,在競品中,使用者更願意選擇功能多,體驗號,安裝包最小的應用。
iOS 安裝包大小優化
安裝包大小優化主要是三個方面:資源、編譯、可執行檔案 1. 資源: 1.1 刪除無用的圖片資源,工具:LSUnusedResources 1.2 資源壓縮 1.3 不常用資源改為下載 2. 編譯優化:
Android 減小安裝包大小(一)Lint
前言 Android Studio提供了一套靜態程式碼分析工具。它可以檢查出:xml檔案中 unused resources沒有使用到的資源等等。 這篇文章的主題是APK Reduce Size。 所以第一步,用Lint來 Check unused res
Android 減小安裝包大小(二) 利用 APK Analyzer 為應用“瘦身”
你可以從頂端選單欄中的 Build 找到 Analyze APK。 專業提示:你也可以拖拽 APK 檔案到編輯欄中開啟。 APK Analyzer 讓你可以開啟並審查存於你電腦中的 APK 檔案的內容,不管它是通過本地 Android Studio 工程構建,還是需要從伺服器上或者其他構件倉庫中構建後得到
Android效能優化之:XML佈局檔案優化
Android中XML佈局檔案的使用非常頻繁,在載入XML佈局的時候,如果對XML檔案其進行優化,將會提高載入的效率。 HierarchyViewer工具 再開始介紹之前先說一下HierarchyViewer工具的使用。 不合理的佈局會使我們的應用程式
【朝花夕拾】Android效能篇之(一)序言及JVM
序言 筆者從事Anroid開發有些年頭了,深知掌握Anroid效能優化方面的知識的必要性,這是一個程式設計師必須修煉的內功。在面試中,它是面試官的摯愛,在工作中,它是程式碼質量的攔路虎,其重要性可見一斑。在團隊中,效能優化的工作又往往由經驗豐富的老師傅來
Android效能測試之冷啟動時間
冷啟動是Android效能測試中的重要指標,即應用從程序未建立到完全啟動的時間,一般要求時長<1.5s,過長需要考慮優化。 獲取冷啟動時間的方法: 1.用命令列 adb shell am start
Android 效能分析之TraceView使用(應用耗時分析)
文章概覽: TraceView概述 trace檔案的3種生成方式 Android studio 直接生成(推薦) 嵌入程式碼程式碼生成 使用DDMS來生成 TraceView介面及引數介紹 使用TraceView分析,定位問題 相關資料 Trace
【朝花夕拾】Android效能篇之(六)Android程序管理機制
一、Android程序管理的特殊設計 Linux系統對程序的管理方式是一旦程序活動停止,系統就會結束該程序。儘管Android基於Linux Kernel,但在程序管理上,卻採取了另外一種獨特的設計:當程序活動停止時,系統並不會立刻結束它,而是會盡可能地將該程序儲存在記憶體中,在以後的某個時間,
Android RabbitMQ使用之RabbitMQ安裝及配置
Rabbit安裝 準備 Erlang: http://www.erlang.org/downloads Rabbit: http://www.rabbitmq.com/download.html Er
Android效能提升之強引用、軟引用、弱引用、虛引用使用
背景:收到公眾投稿,《從面試題中看Java的Reference(引用)》,分析的很不錯,總感覺少了實際的例子和應用場景。於是結合自己工作中場景,小總結一下。看下Agenda如下: 強引用 軟引用 弱引用 什麼時候使用軟引用,什麼時候使用弱引用? 虛引用 一、強引用
Unity3D遊戲開發之如何減少安裝包大小
第一步要做的就是:看看哪些檔案是最佔空間的,那麼它們就是首選優化物件了。 你可以在剛剛完成一次build之後在“Editor Log”中找到這些資訊。 如何開啟Editor Log: 在Mac上看起來就是這樣的了: 可以看出這份log提供了一份資源總括:各種型別資源
Android效能測試之fps獲取
關鍵點 在testerhome看到一個好的帖子,說的是fps的獲取方式,值得好好研究一下。 獲取的方式是通過下面的命令獲取 adb shell dumpsys SurfaceFlinger --latency <window_activity> 命令意義
Android開發環境之eclipse安裝
早有想法開發Android的APK,也聽說現在傻瓜式的APK創作方式很容易,控制元件什麼的都很好操作之類的,但是一直沒有找到合適的入口。後來看了羅昇陽的《Android系統原始碼情景分析》,裡面有“Hello World”的詳細程式碼結構,遂在已有的開發平臺上實驗了一
Android輔助功能之自動安裝apk
原理:1、當有apk安裝時,包名為com.android.packageinstaller的apk會彈出安裝授權框,會引起介面視窗的變化 2.AccessbilityService可以監聽到介面視窗的變化 步驟: 1.寫一個類繼承AccessibilityService並
【朝花夕拾】Android效能篇之(七)Android跨程序通訊
前言 Android系統的執行由大量相互獨立的程序相互協助來完成的,所以Android程序間通訊問題,是做好Android開發高階工程師必須要跨過的一道坎,也是面試時經常被問及到的知識點。但是,我們是否真的清楚,Android中都有哪些方式實現跨程序通訊
Android安全測試之BurpSuite抓包
安卓APP測試,少量工作在Android元件等端側,大部分還是集中在網路通訊上。因此測試過程中,網路抓包很重要,一般來說APP會採用HTTP協議,Websocket,Socket協議。其中HTTP協議的最多,Websocket是後起之秀,Socket最
我的Android進階之旅------>Java檔案大小轉換工具類 (B,KB,MB,GB,TB,PB之間的大小轉換)
Java檔案大小轉換工具類 (B,KB,MB,GB,TB,PB之間的大小轉換) 有時候要做出如下所示的展示檔案大小的效果時候,需要對檔案大小進行轉換,然後再進行相關的程式碼邏輯編寫。 /*** * 儲存大小(單位)轉換器. */