1. 程式人生 > >Android秒級編譯方案-FreeLine

Android秒級編譯方案-FreeLine

Freeline 是什麼?

Freeline 是一款 Android 平臺上的秒級編譯方案,能夠顯著地提高 Android 工程的編譯速度

為什麼使用FreeLine

隨著Android app 工程越來越大,module越來越多,構建越來越慢有時能有十幾min;FreeLine除了首次比較慢外,以後基本都是10s以內,能極大提高開發者效率,有效解決開發者的痛點

FreeLine支援的特性

  • 支援標準的多模組 Gradle 工程的增量構建
  • 併發執行增量編譯任務
  • 程序級別異常隔離機制
  • 支援 so 動態更新
  • 支援 resource.arsc 快取
  • 支援 retrolambda
  • 支援 DataBinding
  • 支援各類主流注解庫(APT)
  • 支援 Windows,Linux,Mac 平臺

以下列表為 Freeline 支援的熱更新情況:

` Java drawable, layout, etc. res/values native so
add
change
remove x -


Freeline 已經分別在 API 17,19,22,23的 Android 模擬器、Android 6.0 Nexus 6P 以及 Android 4.4 錘子手機上經過測試。如果想要充分體驗 Freeline 增量編譯的速度的話,最好使用 Android 5.0+ 的裝置

接入

方法一:AndroidStudio外掛

首先按照freeLine外掛 進入Preferences → Plugins → Browse repositories 輸入freeline關鍵字 安裝外掛,安裝完畢重啟AS;在工具欄會出現

這裡寫圖片描述

點選freeline外掛按鈕,就可以享受freeline的便捷了,注意首次會執行耗時的全量編譯過程。

首次使用freeline時,freeline外掛會檢測你的app是否配置了freeline,如果沒有配置會彈窗提示,直接點選”確定”,此時外掛會自動修改app 配置檔案,並自動安裝 Freeline 的依賴檔案

方法二:手動配置

  1. 進入project 根 build.gradle檔案 新增freeline依賴

    buildscript {
        repositories {
            jcenter()
        }
        dependencies {
            classpath 'com.android.tools.build:gradle:2.2.2'
    
            // NOTE: Do not place your application dependencies here; they belong
            // in the individual module build.gradle files
            classpath 'com.antfortune.freeline:gradle:0.8.6'//add freeline dependencies
        }
    }
  2. 進入主工程module 編輯build.gradle

    apply plugin: 'com.antfortune.freeline'
    
    android{
        ...
    }
  3. 在命令列執行以下命令來下載 freeline 的 python 和二進位制依賴

    gradlew initFreeline //for Windows[CMD]
    /gradlew initFreeline // for Linux/Mac

    對於國內的使用者來說,如果你的下載的時候速度很慢,你也可以加上引數,執行

    gradlew initFreeline -Pmirror

    這樣就會從國內映象地址來下載

    配置成功後以後每次除錯就可以使用下面命令或者點選AS工具欄”freeline”按鈕

    python freeline.py

FreeLine缺陷

  • 第一次增量資源編譯的時候可能會有點慢,因為需要額外傳遞一個完整的資源包
  • 不支援刪除帶id的資源,否則可能導致aapt編譯出錯
  • 暫不支援抽象類的增量編譯
  • 部分 APT 外掛可能需要單獨適配
  • 不支援開啟 Jack 編譯
  • 不支援 Kotlin / Groovy / Scala

更多詳情