標籤:android 項目遷移 android studio eclipse
一直以來,公司開發都是用eclipse,但是隨著我們應用不斷成長,項目結構越來越龐大,項目間依賴關係變得很複雜,用eclipse管理顯得非常吃力,經常一個同事更改依賴項目之後,別人在更新,都會出現問題,因為這些事情浪費很多時間。最終決定遷移到Android Studio。但是遷移的過程中還是遇到了很多問題,通過這篇部落格,把遷移過程中遇到的問題,以及每個問題的解決方案,記錄一下,也希望能協助到有同樣需求的同學。
這裡就不詳細介紹從eclipse匯入到Android Studio的過程了。
1.亂碼
用eclipse開發時編碼用的是GBK,而android studio中使用的是UTF-8,所以在build的時候,項目中的溫度符號,以及一些中文注釋就會出現亂碼。
解決方案
統一編碼,我們把編碼都改成UTF-8. Android studio通過如下方式改項目和檔案的編碼:
File -> Other Settings -> Default Settings -> 搜尋File Encodings ->改三個地方的編碼(IDE Encoding,Project Encoding,Default encoding for properties files)
2. 重複圖片我們有一個Library是從主專案中抽取出來的,抽取的過程中很多圖片從主專案中copy出來之後,忘記刪除了,匯入到Android studio之後,build的過程就會出錯,不過錯誤資訊中有提示重複的檔案,我們只需要根據提示把不用的圖片刪掉。3. Unable to execute dex: method ID not in [0, 0xffff]: 65536對於這個問題,google官方給出瞭解釋,http://developer.android.com/tools/building/multidex.html,大概意思就是:當你的應用以及應用依賴的library達到一定的Size之後,在build的時候就會提示這個錯誤,說明你的應用已經達到了Android app構建架構的限制大小。android虛擬機器限制了每一個DEX檔案能夠引用的method的個數為65536, 它包括Android Framework,Library,以及自己項目中的methods總和。
解決方案給我們的應用產生多個DEX檔案,需要在build.gradle,檔案中配置:
android { defaultConfig { ... multiDexEnabled = true }}另外,還要使用MultiDexApplication類,如果你的應用中已經有Application類,需要讓它繼承自MultiDexApplication,再實現attachBaseContext方法,代碼如下:
protected void attachBaseContext(Context base) {super.attachBaseContext(base);MultiDex.install(this);}4. OutOfMemoryError: GC overhead limit exceeded在build.gradle檔案中做如下配置:
android {...dexOptions { incremental true javaMaxHeapSize "4g" }}5. java.util.zip.ZipException: duplicate entry during packageAllDebugClassesForMultiDex報錯資訊如下:
Error:Execution failed for task ':ezweather_original:packageAllDebugClassesForMultiDex'.> java.util.zip.ZipException: duplicate entry: android/support/annotation/ColorRes.class
解決方案,在build.gradle中添加如下配置:
configurations { all*.exclude group: 'com.android.support', module: 'support-v4' }
這時候app終於能運行起來了...
著作權聲明:本文為博主原創文章,未經博主允許不得轉載。
eclipse到Android Studio的項目遷移