1. 程式人生 > >Android效能優化之Android安裝包大小優化

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無法判斷資源是否被用到。

  資原始檔最少化

  在這方面有以下一些建議:

  1. 儘量使用一套圖片資源,遇到一些圖片在不同解析度手機上變化差異過大的情況時,再考慮在相應資料夾下放入這個特定的圖片
  2. 使用一套圖、一套佈局、多套dimens.xml檔案,在使用最小資源的情況下,解決多解析度適配
  3. 使用輕量級的第三方庫
  4. 減少專案中的預置圖片,預置圖片改成有伺服器下發,儘可能將程式與資源分離。

  圖片優化

  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程式碼混淆器

UnityIOS和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之間的大小轉換) 有時候要做出如下所示的展示檔案大小的效果時候,需要對檔案大小進行轉換,然後再進行相關的程式碼邏輯編寫。 /*** * 儲存大小(單位)轉換器. */