??Android 安裝包體積優化 ??

      網友投稿 907 2025-04-01

      實際開發應用時,包體積優化是必不可少的。畢竟手機內存有限,如果包體積過大很多用戶會直接放棄(以前手機內存很小的時候,這個真的很重要),現在由于手機內存大了(512G已經擋不住了),現在的用戶更關注流暢度和美觀作為參考,但是該有的優化還是要優化的,畢竟要盡善盡美嘛。上一篇文章我們了解了安裝包的結構。

      本文主要分兩部分:

      安裝包監控、

      安裝包大小優化。

      實際開發應用時,包體積優化是必不可少的。畢竟手機內存有限,如果包體積過大很多用戶會直接放棄(以前手機內存很小的時候,這個真的很重要),現在由于手機內存大了(512G已經擋不住了),現在的用戶更關注流暢度和美觀作為參考,但是該有的優化還是要優化的,畢竟要盡善盡美嘛。上一篇文章我們了解了安裝包的結構。

      本文主要分兩部分:

      安裝包監控、

      安裝包大小優化。

      安裝包監控

      android studio 的 APK Analyser

      這是 android studio 提供的一個 APK 檢測工具,通過它可以查看一個 apk 文件內部各項內容所占的大小,并且按照大小排序顯示。因此我們很容易觀察到 APK 中哪一部分內容占用了最大空間。APK Analyzer 的使用非常簡單,只要將需要分析的 APK 文件拖入 Android Studio 中即可(直接點擊項目中的apk也可以),顯示內容類似下圖所示:

      從上圖中可以看出classes.dex都代碼文件,不是很好東,看圖片也占用了比較大的資源空間,因此可以針對性地對其做壓縮優化等操作。(我這個項目是個demo所以顯得代碼占比較多。實際項目中肯定是圖片資源占比相對較大)

      從上圖看出,實際上 APK Analyzer 的作用不光是查看 APK 大小,從它的名字也能看出它是用來分析 APK 的,因此可以使用它來分析一些優秀 APK 的目錄結構、代碼規范,甚至是使用了哪些動態庫技術等。

      Matrix中 的 ApkChecker(傳送)

      Matrix是微信終端自研和正在使用的一套APM(Application Performance Management)系統。 Matrix-ApkChecker 作為Matrix系統的一部分,是針對android安裝包的分析檢測工具,根據一系列設定好的規則檢測apk是否存在特定的問題,并輸出較為詳細的檢測結果報告,用于分析排查問題以及版本追蹤。

      安裝包優化實踐

      Lint查找無用文件

      使用 Lint 查看未引用資源。Lint 是一個靜態掃描工具,它可以識別出項目中沒有被任何代碼所引用到的資源文件。具體使用也很簡單,只要在 Android Studio 中點擊 Analyze -> Inspect Code,如下所示:

      選中整個項目,如下所示

      如果項目中有未被使用資源,則 Lint 會在窗口 Inspection Result 中顯示,類似結果如下:

      低效布局權重:提供優化方案。

      上面就是未使用的資源:會使應用程序變大,并降低構建速度。

      還有很多就不多介紹了,感興趣的可以去玩玩。

      啟用壓縮、混淆和優化功能

      ??Android 安裝包體積優化 ??

      當你使用 Android Studio 3.4 或 Android Gradle 插件 3.4.0 及更高版本時,R8 是默認編譯器,用于將項目的 Java 字節碼轉換為在 Android 平臺上運行的 DEX 格式。不過,當您使用 Android Studio 創建新項目時,縮減、混淆處理和代碼優化功能默認處于停用狀態。

      debug{ // 啟用代碼收縮、模糊處理和優化 minifyEnabled true // 資源縮減 shrinkResources true //包括與打包在一起的默認ProGuard規則文件 //R8配置文件。 proguardFiles getDefaultProguardFile( 'proguard-android-optimize.txt'), 'proguard-rules.pro' }

      文件優化

      圖片優化

      降低圖片bit

      不需要太精致的圖片可以將圖中32 bit降至16 bit或者8 bit,

      使用 VectorDrawable 圖片

      UI小姐姐能提供最好不能提供,咱們自己自己造。

      Android Studio 中點擊 File > New > Vector Asset

      Clip Art 項為固有的矢量圖,我們直接用即可,而Local file(SVG,PSD)選項,則是我們需要轉換的了,剩下的提示進行就可以啦。

      使用 tint 著色器

      純色圖片,僅修改顏色就要再導入一張圖片,比較占資源,這時我們使用tint就避免浪費資源和時間。

      tools:igore的作用就是忽略一些指定錯誤,或者 抑制警告。

      使用 webp 格式圖片

      使用webp格式的圖片可以在保持清晰度的情況下減小圖片的磁盤大小,是一種比較優秀的,google推薦的圖片格式。

      選中圖片>右鍵>選擇

      圖片由.png轉為.webp

      三方庫優化

      在 App 中會引入各種三方的"輪子",但是在引入之前最好權衡一下是否需要將其代碼全部引入,造成不必要的代碼或者資源也被打包到 APK 中。

      例如Facebook全家桶,你不可能全部用到僅導入部分即可,如登入和分享

      dependencies { // Facebook Core only (Analytics) implementation 'com.facebook.android:facebook-core:11.1.0' // Facebook Login only implementation 'com.facebook.android:facebook-login:11.1.0' // Facebook Share only implementation 'com.facebook.android:facebook-share:11.1.0' // Facebook Messenger only implementation 'com.facebook.android:facebook-messenger:11.1.0' // Facebook App Links only implementation 'com.facebook.android:facebook-applinks:11.1.0' // Facebook Android SDK (everything) implementation 'com.facebook.android:facebook-android-sdk:11.1.0' } 僅需導入 dependencies { implementation 'com.facebook.android:facebook-login:11.1.0' implementation 'com.facebook.android:facebook-share:11.1.0' }

      例如XRecyclerView一個 RecyclerView 實現了 pullrefresh 、loadingmore 和 header featrues。你可能僅用到 loadingmore,那你就可以將關于loadingmore部分截取出來。而不用導入整個包。

      關于 App Bundle

      這個功能就跟ios一樣了,他們就是將所有資源全部打到項目中,然后App Store,根據安裝設備的屬性,來選取相應資源打包進行下載。

      谷歌的 Dynamic Delivery 功能就天然地解決了這個問題,通過 Google Play Store 安裝 APK 時,也會根據安裝設備的屬性,只選取相應的資源打包到 APK 文件中。

      如下圖,你上傳的700MB大小的aab,但是你下載的話會有兩套資源打在apk中,但是用戶下載僅一套資源700MB。

      但是 App Bundle 目前只適合在 Google Play Store 上發布的項目,國內目前還是通過各家的插件化方案來實現動態部署,一定程度上也可以算作減少安裝包大小的方案。

      還有一個騷操作,就是前期資源打包,后續資源用戶邊玩邊下載,缺點可能造成卡頓和浪費流量,僅供參考

      Android Android Studio 移動APP

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。

      上一篇:(二)python3 只需3小時帶你輕松入門——基本變量
      下一篇:excel表格怎么插行
      相關文章
      亚洲精品免费视频| 亚洲AV永久无码精品| 亚洲码在线中文在线观看| 国产亚洲免费的视频看| 激情综合色五月丁香六月亚洲| 亚洲福利精品一区二区三区| 日韩国产精品亚洲а∨天堂免| 亚洲αⅴ无码乱码在线观看性色| 亚洲中文字幕无码mv| 亚洲精品乱码久久久久久蜜桃图片 | 全亚洲最新黄色特级网站| 亚洲精品NV久久久久久久久久| 亚洲国产精品国自产拍电影| 亚洲一区二区女搞男| 久久精品国产精品亚洲下载| 亚洲国产精品成人网址天堂| 怡红院亚洲红怡院在线观看| 国产午夜亚洲精品不卡电影| 亚洲国产精品毛片av不卡在线| 国产精品亚洲二区在线| 亚洲精品国产高清不卡在线| 亚洲av麻豆aⅴ无码电影 | 色婷婷亚洲十月十月色天| 亚洲av无码一区二区乱子伦as| 久久久综合亚洲色一区二区三区| 亚洲av日韩av无码黑人| 亚洲视频在线视频| 亚洲精品国产福利片| 亚洲制服在线观看| 亚洲一卡一卡二新区无人区| 色偷偷噜噜噜亚洲男人| 亚洲免费无码在线| 亚洲精品国产精品乱码在线观看| 亚洲av无码一区二区三区网站| 亚洲黄色片免费看| 国产.亚洲.欧洲在线| 亚洲av无码片vr一区二区三区| 亚洲成AV人网址| 国产亚洲3p无码一区二区| 亚洲视频在线一区| 亚洲中文字幕无码爆乳app|