android gradle 插件已經發展到0.5.7,同時gradle 本身也到了1.8,相比兩個月前,android gradle 更快,更完善,也更好用了,為了讓各位androider 早日用上gradle這樣的神器,特地寫一篇關于gradle一些奇葩錯誤的解決指南.
以前我們寫的時候會這麼寫
不過,由于android gradle 插件的開發還是很活躍的,而且目前而言,可能還存在一些我們不知道的坑,但是,别人踩過,後邊,官方修複,為了不踩坑,我建議android gradle 始終保持最新版本,寫法如下:
有時候,我們的代碼使用utf-8 儲存的,但是,進行gradle build 的環境是gbk這類的,這時候會包如下錯誤:
15: 錯誤: 編碼GBK的不可映射字元
這個時候我們就需要手動的設定編譯時編碼類型.
出現這個問題的原因一般是由于我們這樣的寫法導緻:
某個相同的jar包,被複制到了build目錄導緻重複編譯使編譯時失敗,
由于這個問題android support v4 出現的比較多,是以同類型的都歸類為v4 問題吧.
要避免這個問題,我們盡量少使用依賴某個目錄下所有包,畢竟android項目不想java web項目動不動就有好幾十jar 包依賴.要修複這個v4,原理很簡單,可以使用依賴maven的寫法.
用指定依賴包的方式打包,我們會發現,最終打包後的jar沒有了*.so檔案,這個時候,我們需要自定義一個tasks,寫如下:
這樣,在編譯時,就會自動把libs目錄下的<code>**/*.so</code> 檔案複制到apk裡面了.
在最新版本的gradle 0.5.7 中,建構多管道包比之前簡單多了,在以前,你需要這麼寫:
要替換某個類型的檔案需要自己手動寫,管道多了,這代碼量是可想而知的多,在0.5.7中,進行了一個約定規則,建構,管道包你隻需
在項目的根目錄下建立一個<code>build-types</code>的目錄,在建立對應管道的子目錄,然後把一些,諸如要替換<code>AndroidManifest.xml</code>,裡面友盟管道号什麼的,直接把xml複制進去就行,gradle在建構項目的時候,會自動的優先使用<code>build-types</code>下目錄檔案的目錄,諸如,根據不同管道,不同國家換個程式圖示什麼的,都隻要放到目錄下即可.
本文轉自youxiachai 部落格,原文連結: http://blog.51cto.com/youxilua/1303922 如需轉載請自行聯系原作者