前言:
本來很久之前想弄這玩意,不過因為各種原因,所以沒弄。
今天有位前輩提出需求。說想讓Eclipse的Android項目逐步走向Android Studio,但是又擔心Android Studio一時三刻適應不過來。
說能不能不改變源代碼的主要工作目錄(在Eclipse的android project root/的 src、res、lib、AndroidManifest.xml四個目錄)來在Android Studio上開發呢?
大前提:
我當看到這篇博客的看官已經對Android Studio有足夠熟悉
(怎么才算足夠熟悉呢?)
1.起碼你的Android Studio已經能運行起來。而不是像其他的同學說。我的Android Studio一直跑不起來。
2.知道Android的構建工具是Gradle是什么玩意?起碼你環境(命令行CMD)上敲入gradle -v 能見到你的Gradle version
3.知道Android Studio的Project相當於Eclipse的Workspaces ,Module 相當於Eclipse的project
4.知道Android Studio的Android Module root目錄分布 (build,libs,src以及build.gradle文件),以及里面都是些什么東西。
開始正文吧:
如果已經投向Android Studio的同學大可以不看這篇玩意。因為你們已經很熟悉Android Studio了。
1.如上題目。Eclipse與Android Studio這兩個IDE的Android項目因為工作目錄不相同,所以不能很好的兼容開發。
如果看了某些文章的話。(http://www.tuicool.com/articles/2q6fMr),
知道Android project 打包方式 (Eclipse使用Ant,Android studio 是用Gradle)
那既然他們本來不一樣的打包方式,怎么切換IDE來進行開發呢?
2.我們知道Google 為了讓更多的Android開發者的IDE從Eclipse 轉去Android Studio。就有一個操作。就是能直接把導入Eclipse的Android project
看到這里。同學說。你這是廢話嘛?下面還要繼續看不?
雖然可以直接導入項目,但是導入進去后,發現項目在Android Studio的工作目錄已經發生翻天覆地的變化了。(其實就是變成了Android studio的項目而已)
3.正因為有上面兩點,所以本文才有需求出現。
(其實本文工作原理很簡單的。就是為了適應在Android studio上運行而改變一下Gradle的腳本,至於Gradle的腳本怎么寫。下面會提到。)
准備工作:
1.新建好一個能運行的(HelloWorld) 的Android 項目。
2.右擊該死的項目導出


我假如你只打開一個項目。后面的步驟就一直Next就好了。
3.為了明顯表現多了哪些文件。所以就用SVN的項目來做Demo。

如圖的多出的文件(build.gradle,gradlew,gradlew.bat)與及文件夾(gradle)
其中只有build.gradle和文件夾(gradle/wrapper)中的gradle-wrapper.properties有用。
(別急着刪除其余的,其他你只是不用修改他而已,不是讓你刪除它。
(gradlew,gradlew.bat 這兩玩意是給 玩 “命令行” 的人用的。至於你用哪一個呢?就看你哪個系統了。
后話:我一開始都感覺這兩玩意是沒有用的。
(因為我配置Gradle在環境了。一直用着gradle命令。沒有用gradlew,這個后面帶有w的gradlew)
其實這個gradlew是你當前項目中的gradle命令。
如果你執行gradle編譯這個項目。很可能遇到這樣的話
[
Gradle version 1.10 is required. //你當前項目需要用的版本
Current version is 2.3. //你環境用的gradle版本
If using the gradle wrapper,
try editing the distributionUrl in %項目目錄%\gradle\wrapper\gradle-wrapper.properties to gradle-1.10-all.zip
]
或者某些無聊的問題。
))
所以如果你不想出錯的話。一般就用gradlew.bat來操作吧。畢竟別人項目指定這個版本。
gradle-wrapper.properties 這個文件說有用,也可以,說沒有用,也可以
(這個文件控制你用哪一個版本的Gradle來構建項目,
因為某些原因(也跟人品有關系的),突然就用不了,
人品好時就不用換就能用了。
人品不好就需要你更換一下版本號。
至於版本號,你第一次用的話,就只能上去https://services.gradle.org/distributions/這里找一下。(這個是標配的網址),
有些時候慢得可憐。你大可以上官網下載。https://gradle.org/downloads/,下好再丟到相應版本號文件下面就好。
還有其他方法的。不過本人比較懶。而且公司網絡是HK的。所以很快就下載好了。
)
build.gradle 只是把你的Eclipse的信息翻譯在這個配置文件(這玩意就是你在Android studio打包用的)
4.現在你的項目已經整合了Gradle了。現在只能試試能用不。
我本人Eclipse已經裝了StartExplorer 這個插件,所以直接在這個項目下打開CMD,敲入gradle -gui(這個是gradle 源生圖形化工具)
然后你就見到基於你那個build.gradle的所有命令了

(我當時人品不好又遇到這個問題,至於解決方案,上面講了。自己看看上面吧。)
5.我假設你已經在剛才的Gradle圖形化工具執行(gradle installBug或者 gradle iB(駝峰命令。你懂的))成功。
那我們就轉移去Android Studio中導入我們這個項目。
這點是有要求的。
一般我們導入項目。就是傻乎乎的導入項目的目錄
如果這樣導入的話。Android Studio就當你的項目是Eclipse項目導入進來(只是不幫你變化項目目錄結構),不過Android Studio只識別一個build.gradle文件。
這是你如果是一個剛剛使用Android studio的同學。 這回你慘了。你肯定花上不止一兩個小時。解決這樣的問題。(心里有千萬只草泥馬跑過,在埋怨Android studio的開發者)
正確的做法是在導入時,點擊你的剛剛在Eclipse導出的build.gradle文件來導入到Android Studio。

這時。同學們就看到你的Eclipse的項目在Android studio這個IDE了。
6.這時看到清楚一點的同學。發現怎么與Eclipse的目錄不一樣呢?
其實實際上目錄上沒有發生改變。只是。你的項目還有問題!
這個問題在下面的 0:Message 一般錯誤都在這里顯示的。
看到上面兩張圖都有一個共同的錯誤吧,因為你當前Android studio使用依賴包是 1.2.3
而你的build.gradle文件依賴着還是下面這句
dependencies {
classpath 'com.android.tools.build:gradle:0.12.+'
}
所以你先把你的 classpath 'com.android.tools.build:gradle:0.12.+' 改為 classpath 'com.android.tools.build:gradle:1.2.3'
這是你再保存。按一下 "Ctrl + F9" 運行一下項目。
這時又出現一個錯誤了。(這里我黏貼一下吧。因為很多人遇到這個錯誤)
Error:Unable to load class 'org.codehaus.groovy.runtime.typehandling.ShortTypeHandling'.
Possible causes for this unexpected error include:<ul><li>Gradle's dependency cache may be corrupt (this sometimes occurs after a network connection timeout.)
<a href="syncProject">Re-download dependencies and sync project (requires network)</a></li><li>The state of a Gradle build process (daemon) may be corrupt. Stopping all Gradle daemons may solve this problem.
<a href="stopGradleDaemons">Stop Gradle build processes (requires restart)</a></li></ul>In the case of corrupt Gradle processes, you can also try closing the IDE and then killing all Java processes.

解決辦法就是:就是把你的gradle-wrapper.properties換一下。換一個高級一點的Gradle Version. 這個然后在編譯一下,這時奇跡出現了。

你的Android Studio 項目目錄居然變成Eclipse那樣,這時,如果沒有什么意外。就可以直接點擊那個三角符號。運行項目了。
(雖然在項目工作根目錄中多了不少的文件,不過那些文件不影響項目的開發和打包,所以來說,算可以跨IDE開發了)
本文就說到這里吧。去吧。騷年。好好體驗Android studio吧。
