Chapter8:關於Android開發中使用Gradle的一些補充

Chapter8:關於Android開發中使用Gradle的一些補充

8.1 持續繼承

  • 爲Android設置Ci的方式很多,廣泛使用的有:

    • Jenkins
    • TeamCity
    • Travis CI

8.2 減少APK文件大小

  • ProGuard

    • ProGuard是一個Java工具,不僅可以縮減APK文件大小,還可以在編譯期優化、混淆和預檢驗代碼。它可以通過應用的所有代碼路徑,查找未使用的代碼,並將其刪除;也會重命名你的類和字段,在一定程度上加大反編譯難度。
  • 自動資源縮減

    • 在構建中將 shrinkResources 屬性設爲true。

      android{
          buildTypes{
              release{
                  minifyEnabled true
                  shrinkResources true
              }
          }
      }
      
    • 運行 shrinkReleaseResource任務,可以看見縮小多少。

    • 命令 gradle clean assembleRelease -info,可以打印出構建的額外信息,包含不會輸出的資源。

    • 注意:自動資源縮減可能刪除過多資源,比如那些被動態使用的資源。可以在 /res/raw/ 目錄下創建 keep.xml文件定義例外。(最終構建的輸出不包含keep.xml文件)

      <?xml version="1.0" encoding="utf-8">
      <resources xmlns:tools="http://schemas.android.com/tools"
      	tools:keep="@layout/keep_me,@layout/also_used_*"/>
      
  • 手動資源縮減

    • 去除某種語言文件或某個密度圖片。

    • 如果只保留英語、丹麥語和荷蘭語的字符串:

      android{
          defaultConfig{
              resConfigs "en", "da", "nl"
          }
      }
      
    • 同樣針對密度圖片:

      android{
          defaultConfig{
              resConfigs "hdpi", "xhdpi", "xxhdpi"
          }
      }
      
  • 參考官方Doc:啓用壓縮、混淆和優化功能

8.3 加速構建

  • 開啓並行構建:(gradle.properties)

    org.gradle.parallel=true
    
  • 啓動Gradle daemon

    • 它會在你第一次運行構建時,開啓一個守護進程。任何後續構建都將複用該守護進程,從而減少啓動成本。使用Gradle,該進程就會存活,空閒3h後會終止。配置在 gradle.properties

      org.gradle.daemon=true
      

      Android Studio默認開啓;但使用命令行構建時是默認關閉的。

  • 調整Java虛擬機參數

    • 對構建直接影響的兩個參數是 XmsXmx

    • Xms:設置初始內存大小。

    • Xmx:設置最大內存。

    • 配置在 gradle.properties

      org.gradle.jvmargs=-Xms256m -Xmx1025m
      

      k:千字節;m:兆字節;g:千兆字節

  • configureondemand

    • 當項目中存在多個模塊時。它會指出哪一個模塊配置有改變,哪一個沒有。
  • 補充:可以通過 --profile 標誌在 build/reports/profile 目錄下生成分拆報告,告訴你構建過程那一部分最爲耗時。

    在這裏插入圖片描述

8.4 忽略Lint

  • 遷移項目時,可能會出現很多錯誤,可以採用臨時的解決方案,禁用 abortOnError

    android{
        lintOptions{
            abortOnError false
        }
    }
    

8.5 分割APK

  • 可以根據密度或**ABI(application binary interface)**分割APKs。

8.6 參考資料

  • Gradle For Android
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章