【Android】一步一步教你從Eclipse移植專案到Android Studio(1.4)
今天搞了差不多一整天,終於成功把原來在Eclipse的專案移植到了Android Studio上面。其實網上關於如何做移植已經有不少文章了,而且Android Develop的官網也有介紹,但是差不多網上的版本都已經過時,因為Android Studio和Gradle的版本更新實在是太快了。。。(彷彿隱隱約約看到了從Swift1開始使用到Swift2.x之後的語法變化導致專案大面積語法修改的悲劇。。。)
好了,言歸正傳,詳細記錄一下整個過程。
首先說一下大前提:
我的Eclipse版本是Mars.1,不過這個Eclipse版本應該不是問題,反正匯出的Gradle的幾個檔案還是要手動修改的。
我的Android Studio的版本是1.4,目前已經有1.5了,我就裝了差不多有1周,就出了1.5,還沒來得及更新,這個問題也不大。建議大家先自己把Studio的環境搭好,然後自己寫一個Hello World除錯一下,因為後面有些東西如果你事先除錯好了,可能會節省一些工作量。
在匯出專案前最好備份一下你的工程。我的專案就是匯出以後因為多了一些Gradle的檔案,所以還用Eclipse編譯的時候會出一些error。如果你的也出了一些類似於“In gradle projects always user http://schemas.android.com/apk/res-auto for.....”的錯誤,不要慌張,你能看到你的工程裡面有個綠色圖示的Gradle,把那個刪除,然後重啟Eclipse,應該就ok了。
第一步,從Eclipse匯出工程
1. File --> Export
2. 選擇Generate Gradle build files,點選Next
3. 這個是告訴我們一些關於匯入Studio的Tips,可以直接Next
4. 選中你的工程
這裡說一下,我的主專案是 zj_tzqu,然後SlidingMenuLib是一個資源專案,也就是說,在project.properties檔案中是這樣引入的:
android.library.reference.1=../SlidingMenuLib
5. 勾選 Force overriding of existing files
如果不選中,就有可能會出現上面的提示。當然,這是因為我之前嘗試了好多次,所以已經在檔案中有相應的Gradle的檔案了,保險起見,直接覆蓋掉原來的檔案。
6. 點選Finish,然後就匯出了。
第一步就算完成了,其實第一步基本上沒有把你的原程式做一些語法的修改,只是多了一些Gradle的配置的檔案,我把他們都截了出來,就是這幾個:
第二步:修改Gradle配置檔案
主要修改的就是上圖中的兩個紅框標出來的。
1. gradle --> wrapper --> gradle-wrapper.properties
可以看到我通過Eclipse匯出來的版本號是1.12,那截止到2015年11月26日,最新的gradle版本是2.9、 1.12是14年12月份的版本,可見Google對Studio的厚愛,就像Apple 對Swift一樣。。。
2. build.gradle
注意圖中的紅框內容是我改過的了。為什麼改成1.3.0 因為我看了一眼我的Studio的hello world的工程的build.gradle檔案,發現裡面的gradle是1.3.0,所以就改成了一樣的。我沒有試驗如果改成比如2.9.0這樣的行不行。但是既然hello world可以正常執行,那就表示這樣的配置是ok的。這也是為什麼在開頭的時候我建議大家先搭好Studio的環境,然後跑一下hello world證實你的環境是OK的。
來最後一步,
第3步,匯入Android Studio
把我們之前5個和Gradle相關的檔案(夾),帶上工程的兩個資料夾(1.4步驟中選中的兩個資料夾)一起拷貝出來,到一個新的資料夾下面。為什麼要這樣,1是Studio在匯入的時候提示我們不要直接匯入Eclipse workspace的工程;2是我的Studio是裝在Mac上的,Eclipse是在Windows上面的 - -!
1. 我們選擇Import project(Eclipse ADT, Gradle, etc.)
我之前在網上查的都是說要選擇 Import Non-Android Studio project, 但是估計是Studio的版本不同,Studio 1.4 根本就沒有這一項,但是看了一眼前幾項也不是,然後注意這裡面有Gradle關鍵字,所以就試一試吧。
2. 選擇build.grade 或者settings.gradle都可以,看到介面上面的提示了吧,我選擇的是build.grade,就是我們上面改動過的檔案。
3. 手動下載grade-2.9-all.zip
其實如果你的Studio環境沒問題,就是會開始正常用gradle編譯專案了,但是如果你第一次使用,那你一定會出現我的問題,就是Gradle sync的時候出錯。原因當時就是我們親愛的GFW了,即便是我翻牆通過Studio下載grande,速度也是慢的1B啊,所以這裡我們可以自己下載gradle版本然後再放到相應的路徑下面:
基本上網上都引用了這樣一段話,為什麼不推薦我們自己下載,因為其實Studio是在路徑下面多了一個25位的標識碼
在gradle-2.9-all的下面,其實是有一個資料夾的,這個資料夾會根據不同使用者生成不同的,你們的肯定不會是我這個。
所以,最好的辦法是先讓Studio自動生成這個資料夾,也就是我們做完第2步之後,其實Studio已經在試圖download我們設定的gradle版本,如果你去資料夾裡面看,會發現有一個.zip.lck 和另外一個.zip.park的檔案。但是一個是0k,一個是下載了一半的檔案,如果沒有翻牆,這個過程非常非常慢。
所以,我們看到這個路徑已經建好了以後,就可以直接去官網上下載對應的版本了。注意,如果是Mac上,Safiri會自動把zip包解壓縮了,如果你重新壓縮Safiri下載的檔案成zip放到路徑下面,會出這樣的““Error:Gradle distribution 'https://services.gradle.org/distributions/gradle-2.9-all.zip' contains too many directories. Expected to find exactly 1 directory.””
所以,要不把safiri的自動解壓功能關閉了,要不就換個瀏覽器下載,總之不要動下載下來的那個gradle-2.9-all.zip的包。
然後把這個包放到25位唯一碼的資料夾下面。
重新試一下sync gradle,你就會發現,gradle開始build我們的工程了。之後就很順利了,很快工程就建立好了。
到此,整個工程的匯入就算全部完成了。
在附送兩個小Tips:
1. 有的同學可能習慣了Eclipse的樣式佈局,初次接觸Studio會發現work space區域很不習慣
這是系統預設的佈局,那我們可以通過切換到Project模式來看,這樣就和Eclipse的佈局非常像了。
2. 如果你發現移植過來的程式碼中的註釋內容全部都亂掉了,而且在Gradle初次編譯的時候,你發現有很多錯誤提示: “編碼 UTF8的不可對映字元”,但是我們的程式沒有問題,是可以執行的,就是註釋部分看不了。
很簡單,在右下角
點選UTF-8 選擇 GB2312 就ok了。
注意,可能是這部分的程式碼是你從第三方拿過來直接湊上去的,很容易出現編碼上的問題,只需要改變這個檔案的編碼格式就可以了。不要動全域性的設定。
好了,好好享受Android Studio帶給大家極致版的Coding 體驗吧~~~