Compile、Make和Build的區別(as make, build, clean, run)

Compile、Make和Build的區別 - 熔 巖 - 51CTO技術博客

http://lavasoft.blog.51cto.com/62575/436216/html

 

針對Java的開發工具,通常都有Compile、Make和Build三個菜單項,完成的功能的都差很少,可是又有區別。
 
編譯,是將源代碼轉換爲可執行代碼的過程。編譯須要指定源文件和編譯輸出的文件路徑(輸出目錄)。Java的編譯會將java編譯爲class文件,將非java的文件(通常成爲資源文件、好比圖片、xml、txt、poperties等文件)原封不動的複製到編譯輸出目錄,並保持源文件夾的目錄層次關係。
 
在Java的集成開發環境中,好比Eclipse、IDEA中,有經常有三種與編譯相關的選項Compile、Make、Build三個選項。這三個選項最基本的功能都是完成編譯過程。但又有很大的區別,區別以下:
一、Compile:只編譯選定的目標,無論以前是否已經編譯過。
 
二、Make:編譯選定的目標,可是Make只編譯上次編譯變化過的文件,減小重複勞動,節省時間。(具體怎麼檢查未變化,這個就不用考慮了,IDE本身內部會搞定這些的)
 
三、Build:是對整個工程進行完全的從新編譯,而無論是否已經編譯過。Build過程每每會生成發佈包,這個具體要看對IDE的配置了,Build在實際中應用不多,由於開發時候基本上不用,發佈生產時候通常都用ANT等工具來發布。Build由於要所有編譯,還要執行打包等額外工做,所以時間較長。
 

上面的文章已經說的很明白了:compile, make都編譯,但make是增量編譯,compile是全新編譯, build整個工程的全新編譯,要生成binary的。
 
下面是關於as/idea make project, clean project, make module, build的區別,寫的很是好,一看就懂:

Android Studio中Make Project,Clean Project,Rebuild Project區別 – 移安分享
http://www.91yian.com/278.htmljava

這裏以Android Studio2.1.1爲例,親自驗證過,見下圖:ide

屏幕快照 2016-05-24 下午1.44.58         屏幕快照 2016-05-24 下午2.11.13

  1. Make Project:編譯Project下全部Module,通常是自上次編譯後Project下有更新的文件,不生成apk。
  2. Make Selected Modules:編譯指定的Module,通常是自上次編譯後Module下有更新的文件,不生成apk。
  3. Clean Project:刪除以前編譯後的編譯文件,並從新編譯整個Project,比較花費時間,不生成apk。
  4. Rebuild Project:先執行Clean操做,刪除以前編譯的編譯文件和可執行文件,而後從新編譯新的編譯文件,不生成apk,這裏效果其實跟Clean Project是一致的,這個不知道Google搞什麼鬼~~
  5. Build APK:前面4個選項都是編譯,沒有生成apk文件,若是想生成apk,須要點擊Build APK。
  6. Generate Signed APK:生成有簽名的apk。

注意:工具

  1. 對於Clean和Rebuild看到最後的效果是同樣的。
  2. 平時小的改動直接用Make Project就能夠,能夠看到只有它有快捷方式,代表這個功能要常常用。對於一些大的改動好比更新lib,大功能修改等,用Clean或Rebuild,畢竟這兩個編譯起來要費時間。
  3. 若是有的時候死活編譯不過,多試試Clean吧,會有意想不到的效果!
相關文章
相關標籤/搜索