2016-01-20 47 views
0

在構建棒棒糖,我可以通過運行編譯我的變化:如何有效地構建AOSP(棉花糖)?

make clean-framework clean-services clean-services.core services.core services framework && make snod 

然而,這是不可靠的棉花糖。有時會起作用,其他時候我的更改不會被編譯。我也看到這產生了一個無法啓動的版本,迫使我做一個完整的make -j8,這需要我的機器近一個小時。

我是否缺少新的構建目標?任何意見是極大的讚賞。

謝謝。

+1

您是否正確設置了USE_CCACHE?當我做一個名義上的改變並運行「make -jN」時,它通常會在幾分鐘內編譯出棉花糖。 – Chris

+0

@Chris是的,我在''.bashrc'中有'export USE_CCACHE = 1',並且已經確認它正在工作。 – BLuFeNiX

+0

你可能錯過了一些依賴。 執行以下操作,比較完整版本與部分版本之後的img文件,以便了解缺失的位置。 –

回答

0

我的部分版本無法啓動的原因是由於dex pre-optimization。啓用dexpreopt後,您無法重新編譯系統映像的某些部分,因爲它們是在編譯時一起進行字節對齊和優化的。禁用dexpreopt並執行make clobber && make -j6後,我能夠完成部分構建,沒有任何問題。

要禁用dexpreopt,設置在終端以下變量:

export WITH_DEXPREOPT=false 
export DISABLE_DEXPREOPT=true 

提示:添加上面你build/envsetup.sh或您.bashrc,這樣你就不必每次都記住。提示2:還有一個DONT_DEXPREOPT_PREBUILTS,但我從來沒有遇到過這個問題,所以我將它設置爲默認值,即false。如果將此變量設置爲true,那麼設備在閃光燈啓動後需要很長時間(輕鬆一個多小時),因爲它必須首先優化所有內容。