freeline使用入門

一. freeline簡介
Freeline的GitHub地址: https://github.com/alibaba/freeline
其官方介紹如下:

Freeline is a fast build and deployment tool for Android. Caching reusable class files and resource indices, it enables incrementally building Android apps, and optionally deploying the update to your device with hot swap.
Developed and used by Ant Fortune (about us) Android Team, Freeline has been significantly saving time in daily work. Inspiring by Buck and Instant Run but faster than ever, Freeline can finish an incremental build in just a few seconds. No more recompile and reinstall again and again before seeing your modifications, Freeline brings life-changing development experience for Android.
.
中文說明

下面是其原理說明
[Freeline原理] (https://yq.aliyun.com/articles/59122?spm=5176.8091938.0.0.1Bw3mU)

從中可以看出freeline加速的三駕馬車是: 緩存、并行支竹、Hot Swap (Instant Run原理)

二. 配置

  1. 配置根目錄下的build.gradle文件
    在項(xiàng)目根目錄下的build.gradle文件中添加freeline插件:
    classpath 'com.antfortune.freeline:gradle:0.8.1',
    如下:
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'
        classpath 'com.antfortune.freeline:gradle:0.8.1'
    }
}
allprojects {
    repositories {
        jcenter()
    }
}
  1. 配置主module下的build.gradle文件
    a. 應(yīng)用插件 (放在android插件之后)
    apply plugin: 'com.antfortune.freeline'
    b. 添加freeline配置
    android {} 中添加, 如下:

freeline {
hack true
//如果你定義了productFlavor, 記得把下面的注釋放開, 把{Your-productFlavor}替換成你相應(yīng)的productFlavor
//productFlavor '{Your-productFlavor}'
}


  c. (**這一步可以和下面的"3"同時(shí)省略 --- [參考這里](https://github.com/alibaba/freeline/issues/280)**) 在dependencies塊中添加對(duì)freeline的依賴, 如下:

    ```
dependencies {    
      // others 
      // ....

      // dependencies for freeline
      debugCompile 'com.antfortune.freeline:runtime:0.8.1'
      //如果release包不想依賴freeline, 可以改成`releaseProvided com.antfortune.freeline:runtime-no-op:0.8.1'`, 后面會(huì)進(jìn)行說明. 
      releaseCompile 'com.antfortune.freeline:runtime-no-op:0.8.1' 
      testCompile 'com.antfortune.freeline:runtime-no-op:0.8.1'
}
  1. (這一步可以和上面的"c"同時(shí)省略 --- 參考這里) 在代碼中初始化freeline
    在你自定義的Application的onCreate方法里面加上下面這句:
    FreelineCore.init(this);

三. 運(yùn)行

  1. 由于freeline依賴于python, 所以你首先要安裝python2.7+的運(yùn)行環(huán)境

  2. 始化你freeline (僅第一次), 在項(xiàng)目根目錄下執(zhí)行下列命令:
    ./gradlew initFreeline
    這一步會(huì)下載freeline的相關(guān)依賴, 會(huì)在項(xiàng)目根目錄下生成freeline.py文件和freeline目錄

    freeline依賴文件和目錄

  3. 現(xiàn)在可以開始運(yùn)行你的程序了, 執(zhí)行命令
    python freeline.py , 首次運(yùn)行 可以加上-f選項(xiàng) (python freeline.py -f) ,
    -f選項(xiàng)會(huì)強(qiáng)制執(zhí)行clean任務(wù), 然后再執(zhí)行build任務(wù)
    當(dāng)然你也可以查看freeline的幫助, 執(zhí)行命令: python freeline.py -h
    首次運(yùn)行會(huì)比較慢, 因?yàn)樾枰x取項(xiàng)目信息, 生成文件, 計(jì)算依賴 ......

    首次使用freeline構(gòu)建項(xiàng)目

    當(dāng)然如果你覺得每次都輸入命名來構(gòu)建項(xiàng)目不方便, 你也可以安裝freeline的插件, Preferences -> Plugin -> Browse repositories ... -> 輸入freeline -> 安裝插件, 操作如下圖:
    安裝freeline插件

    安裝之后會(huì)在AS的工具欄多了個(gè)freeline的按鈕, 如下, 以后運(yùn)行點(diǎn)擊這個(gè)按鈕就可以了
    更改代碼后直接點(diǎn)擊此按鈕運(yùn)行項(xiàng)目, 不用再輸入命令運(yùn)行啦 !!

    第一次運(yùn)行項(xiàng)目, 45秒, 輸出如下:
    第一次運(yùn)行項(xiàng)目的log輸出.png

    頁面如下:
    初始頁面.png

    然后我更改一下頁面, 再用freeline運(yùn)行只花了1.4秒!!!!! 輸出如下:
    更改后運(yùn)行的log輸出.png

    更改后的頁面, 如下:
    更改后的頁面

四. release與debug區(qū)分 (不將freeline代碼打包進(jìn)release包中)

  1. 如果省略了上面"c"和"3"步驟, 那么代碼對(duì)freeline就沒有依賴了, 因此打debug可以使用freeline, 而release則用常規(guī)方法打包 (用常規(guī)的gradlew打包就行./gradlew :app:assembleRelease). 目前官方的使用教程里是沒有"c"和"3"步驟的, 只有你在build.gradle里面設(shè)置了applicationProxy false, 才需要"c"和"3"步驟, 參考: FreelineCore.init()的作用是什么吁系,為什么調(diào)不調(diào)都可以给僵?
  2. 如果用了"c"和"3"步驟那么, 那么可以將release依賴改成下面這樣:
    releaseProvided 'com.antfortune.freeline:runtime-no-op:0.8.1'
    這樣打包的時(shí)候, freeline的庫代碼不會(huì)被打包進(jìn)apk中.
    .
    代碼初始化的地方改成這樣:
    if(BuildConfig.DEBUG) FreelineCore.init(this);
    這這樣打releae包時(shí), BuildConfig.DEBUG是false, 編譯器會(huì)優(yōu)化掉這段代碼, 因此去掉了代碼中對(duì)freeline的依賴.
    這樣打出來的apk包也不會(huì)包含freeline相關(guān)的代碼 !!

五. 總結(jié)

  1. 遇到一個(gè)坑, 請(qǐng)看這里
  2. 如果你不能忍受打包的蝸牛速度, 那就趕緊使用freeline吧 -- .
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市添怔,隨后出現(xiàn)的幾起案子炉峰,更是在濱河造成了極大的恐慌,老刑警劉巖绩聘,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異耗啦,居然都是意外死亡凿菩,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門帜讲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蓄髓,“玉大人,你說我怎么就攤上這事舒帮。” “怎么了?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵玩郊,是天一觀的道長肢执。 經(jīng)常有香客問我,道長译红,這世上最難降的妖魔是什么预茄? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮侦厚,結(jié)果婚禮上耻陕,老公的妹妹穿的比我還像新娘。我一直安慰自己刨沦,他們只是感情好诗宣,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著想诅,像睡著了一般召庞。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上来破,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天篮灼,我揣著相機(jī)與錄音,去河邊找鬼徘禁。 笑死诅诱,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的送朱。 我是一名探鬼主播娘荡,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢(mèng)啊……” “哼骤菠!你這毒婦竟也來了它改?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤商乎,失蹤者是張志新(化名)和其女友劉穎央拖,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體鹉戚,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鲜戒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了抹凳。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片遏餐。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖赢底,靈堂內(nèi)的尸體忽然破棺而出失都,到底是詐尸還是另有隱情柏蘑,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布粹庞,位于F島的核電站咳焚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏庞溜。R本人自食惡果不足惜革半,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望流码。 院中可真熱鬧又官,春花似錦、人聲如沸漫试。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽商虐。三九已至觉阅,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秘车,已是汗流浹背典勇。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留叮趴,地道東北人割笙。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像眯亦,于是被迫代替她去往敵國和親伤溉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容