2015-09-01 154 views
6

在過去的幾天裏,我一直在努力改善項目的構建時間,但沒有運氣。我不介意不得不等待1m40s的清潔構建,但是如果我在一個java文件中插入一行,我將獲得與清理構建相同的構建時間。我一定在做錯事,但我根本找不到任何文檔或堆棧溢出問題,這些問題指向正確的方向。我設法收集了一些我將集中在這裏的信息,希望能夠更好地理解該主題的人解釋爲什麼我會得到這些糟糕的構建時間。Android Studio - Gradle增量構建

這裏有雲:

  • 我明白,在我的build.gradle文件這個選項就是我所追求的。

    android { 
        dexOptions { 
         incremental true 
        } 
    ... 
    

    輝煌增量構建。然而,這對我來說不起作用,顯然是因爲我的項目在棒棒糖之前使用了multidex功能來與android版本進行retrocompatibility。

  • 尋求救援!使用Proguard,我可以縮小我的可執行文件並刪除所有未使用的方法。我在proguard minify中遇到了一些錯誤,但能夠正確設置並使其正常工作。大!每個構建需要20代左右的時間。不幸的是,沒有什麼是免費的,並且proguard gradle任務需要大約2分50秒才能運行。比我最初的情況還要糟糕。

有沒有解決這個問題的方法?

+0

在全局Gradle設置中啓用「脫機工作」有幫助嗎? – nhaarman

+0

不幸的是,沒有。在我的構建過程中非常耗時的任務是dex的生成。實際上,獲取依賴關係非常快。 –

回答

10

終於找到了解決辦法。它一直在官方文檔中,我只是需要更深入地瞭解構建過程以瞭解所說的內容。

增量構建和multidex確實是不兼容的選項。但是,對於sdk版本,通過重建受影響的dex文件,可以爲multidex apks創建21+個增量版本。進一步的信息可以在這裏找到:

http://developer.android.com/tools/building/multidex.html

+0

你有沒有考慮過使用BUCK? https://www.google.com/search?q=buck+facebook&ie=utf-8&oe=utf-8 –

+0

我會研究它,謝謝你的建議!我不確定我是否可以在工作中使用它,但我一定會在我的個人項目中嘗試。 –

3

我沒有直接回答如何與搖籃解決這個問題,但我有一個建議,可以幫助你提高你的構建速度。

最近我遇到了同樣的問題:我們的構建花了近4分鐘。我嘗試了不同的構建選項,但沒有獲得明顯的利潤。

經過一番研究,我碰到了Jrebel for Android。它類似於類固醇上的「即時跑步」。它支持多種類型的更改(UI,方法,字段等)並實時更新應用程序,而無需重新創建活動(因此可以節省狀態)。通常,需要十幾秒鐘才能應用任何類型的更改。

該工具不是免費的,但它們提供不同的定價選項和試用帳戶,因此您可以試用它。它適用於Android Studio或Eclipse平常的插件,安裝非常簡單。

更新

現在他們甚至免費版本:link to post

0

我試過這個選項今日(二零一七年十一月十三日),得到了下面的生成警告:

警告:android.dexOptions.incremental屬性不推薦使用,它對構建過程沒有影響。

然後我搜索了警告消息,答案證實,自從一個更新的Gradle版本以來,該條目已被棄用。請參閱android.dexOptions.incremental property is deprecated