Android常用構建工具介紹

 

                         本文來自http://blog.csdn.net/liuxian13183/ ,引用必須註明出處!

本篇包含:Freeline、JFrog、Jenkins的介紹。

Freeline:

Instant Run爲我們提供了增量更新的方式,支持 gradle2.0和Android4.0以上版本,讓構建項目變的快速,同時由於multiDex出現,增量更新也變的簡單,但現實狀況是Studio編譯依然卡卡。

Facebook的Buck是不錯的,但它只支持Linux開發機;而Alibaba 開源的Freeline卻可以在Windows機器上使用,根據依賴關係充分利用緩   存最少編譯,並開啓SocketServer保證crash同時也可以進行編譯,最終實現全量編譯和增量編譯同時進程,提高2-3倍的編譯速度。   

注意事項

1、只能使用2.2以上的gradle版本和python2.7及以下版本,配置好環境變量

2、使用jcenter編譯而非mavenCenter,因爲某些gradle後者沒有

3、此文件裏的gradle版本需要更換,csdn限制只能傳80M以內的文件,大家只好到官網下載,地址:gradle3.3

4、

主項目的build.gradle加入如下內容:

buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.antfortune.freeline:gradle:0.8.5'
    }
}

 

apply plugin: 'com.antfortune.freeline'

 

dependencies {
    compile 'com.antfortune.freeline:gradle:0.8.5'
}

目前最高版本是0.8.5

 

5、配置完,在Android Studio的Terminal裏執行如下命令,代表從國內鏡像下載,要快的多。

gradlew initFreeline -Pmirror

其他特色Features

  • 支持標準的多模塊 Gradle 工程的增量構建
  • 併發執行增量編譯任務
  • 進程級別異常隔離機制
  • 支持 so 動態更新
  • 支持 resource.arsc 緩存
  • 支持 retrolambda
  • 支持 DataBinding
  • 支持各類主流注解庫
  • 支持 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+ 的設備。

限制Limitations

 

  • 第一次增量資源編譯的時候可能會有點慢
  • 不支持刪除帶 id 的資源,否則可能導致 aapt 編譯出錯
  • 暫不支持抽象類的增量編譯
  • 不支持開啓 Jack 編譯
  • 不支持 Kotlin/Groovy/Scala

官方地址:https://github.com/alibaba/freeline/

JFrog構建:

用法,把獨立的模塊分享成一個子項目,編譯成aar使用。

作用是

1、依賴子項目,可以加速主項目的編譯速度

2、獨立子項目,方便專人維護和升級

3、做基礎配置的構建,讓主項目只做精力。

網上教程比較多,我就不再寫了,推薦方案

遠程構建:https://www.jianshu.com/p/37ac9e7e03f3

本地構建:http://blog.aha-nstd.com/2017/03/08/set-up-a-local-jfrog-artifactory/

構建常見問題:

1、409錯誤,conflict,已經存在此版本號,需要升級一下版本號;

2、刪除老版本號,繼續上傳,結果依賴還是老版本號的,刪除本地緩存無效,那麼也要升級一下版本號;

3、透傳依賴,官方不推薦使用,因爲子項目也可能依賴同樣的第三方項目,如果Api不同,則容易引發系統崩潰,方案是自己編寫pom腳本,爲gralde的project選項,增加dependencies-denpendency依賴。

 

Jenkins構建:

用法,通過git拉取相應分支的代碼,根據腳本打出相應渠道、類型等手機應用包。

作用是

1、解放了開發,防止一邊寫代碼,一邊打包的場景出現,影響開發速度和質量;

2、分離了業務,新功能和解決Bug歸"RD",打包測試歸"QA",界面驗收歸"UE",功能驗收和發佈歸“PM”;

可本地構建(自己電腦 ),也可遠程構建(放公司服務器)。

推薦教程:http://blog.csdn.net/mabeijianxi/article/details/52680283

 

Apk打包前後的差別:

打包前

打包後:

表明:代碼編譯後,進行了自動優化。

指令重排指多線程,共同執行一個局部代碼時,產生不確定的執行結果。

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