EclipseADT與AndroidStudio項(xiàng)目共享

最新更新,提供一個(gè)demo,進(jìn)一步將android studio的目錄結(jié)構(gòu)進(jìn)行調(diào)整

https://github.com/vickyleu/EclipseLike



先說(shuō)下Android Studio的使用感受吧!記得Android Studio剛發(fā)布1.0預(yù)覽版本的時(shí)間是2014年底-2015年初的樣子,之前一直使用的Eclipse編寫(xiě)項(xiàng)目,由于濤哥推薦,有機(jī)會(huì)接觸到AS.當(dāng)天說(shuō),晚上就回家下載了一個(gè)體驗(yàn).

剛開(kāi)始的時(shí)候是十分抵觸AS的,濤哥說(shuō)IDEA是最好的Java IDE,我當(dāng)時(shí)還嗤之以鼻.首先是快捷鍵的轉(zhuǎn)變,編寫(xiě)項(xiàng)目時(shí)各種水土不服.Gradle取代Ant編譯打包,Eclipse上的automatically build也不復(fù)存在.這就意味著每次構(gòu)建項(xiàng)目的時(shí)間大大加長(zhǎng),當(dāng)時(shí)還沒(méi)有給筆記本換CPU和上SSD,從創(chuàng)建工程到生成apk,每一步都需要花費(fèi)大量的時(shí)間在gradle同步上面,而我又是急性子,之前有一次在家寫(xiě)代碼的時(shí)候,剛想到一個(gè)思路,準(zhǔn)備寫(xiě)下來(lái)時(shí)突然gradle又開(kāi)始興風(fēng)作浪,寫(xiě)也寫(xiě)不了,關(guān)又關(guān)不掉,怒氣值瞬間爆表,一巴掌就把電腦打藍(lán)屏了......

隨著一年多的版本更迭,現(xiàn)在的gradle依然不改本色,只不過(guò)相較于之前的版本還是好了很多,在編譯效率方面基本上差別也不是那么大了,畢竟SSD現(xiàn)在白菜價(jià).持續(xù)服用兩三個(gè)月以后,也漸漸習(xí)慣了AS的操作方式,當(dāng)我某天突然心血來(lái)潮又去開(kāi)了個(gè)Eclispe項(xiàng)目懷下舊時(shí),我竟然發(fā)現(xiàn)自己Eclipse的代碼格式化都不記得了.寫(xiě)xml文件半天沒(méi)提示,新版API的布局預(yù)覽也看不了,想看類和方法的引用各種不方便,想查看源碼還要我attach source jar,隨便引用一個(gè)recyclerView還需要copy類庫(kù)到workspace,到頭來(lái)才發(fā)現(xiàn)Eclipse簡(jiǎn)直是反人類.Eclipse Adt已經(jīng)停更多少年了,仍然有大批守舊派不肯歸順AS陣營(yíng),項(xiàng)目中的協(xié)同開(kāi)發(fā)尤為重要,一個(gè)人寫(xiě)項(xiàng)目可以不管不顧,但是要顧慮到其他同事的話也就只能屈就了.

說(shuō)到Eclipse與AS的區(qū)別,其實(shí)質(zhì)上就是構(gòu)建系統(tǒng)的區(qū)別,而我們發(fā)現(xiàn)兩個(gè)構(gòu)建系統(tǒng)只是在文件結(jié)構(gòu)上略有區(qū)別,所引用的索引文件并不會(huì)產(chǎn)生任何沖突.而AS是支持自定義各目錄路徑的,那么我們就可以從文件結(jié)構(gòu)上對(duì)項(xiàng)目進(jìn)行重新調(diào)整,以達(dá)到兩種IDE都能編輯的效果.

首先來(lái)分析下Eclipse Adt的文件結(jié)構(gòu):

Eclipse Adt結(jié)構(gòu)
Eclipse中關(guān)鍵的文件

其中.project文件是保存項(xiàng)目名稱的,project.properties是保存標(biāo)記的SDK和引用的類庫(kù)的,如果是AS項(xiàng)目轉(zhuǎn)Eclipse項(xiàng)目時(shí)就需要這幾個(gè)文件,當(dāng)然直接復(fù)制其他項(xiàng)目的也行,稍作修改就能在eclipse中打開(kāi)了


然后是AndroidStudio的文件結(jié)構(gòu)


AS文件結(jié)構(gòu)圖


根目錄中關(guān)鍵的文件
項(xiàng)目module中關(guān)鍵文件

以上就是兩個(gè)IDE中關(guān)鍵的build配置文件,他定義了使用的構(gòu)建系統(tǒng)版本以及項(xiàng)目路徑和一些依賴信息


我們?cè)賮?lái)看看源碼目錄和資源等文件的結(jié)構(gòu)


AS中資源文件和清單文件在java同級(jí)目錄中

在AS中包名前面多了一個(gè)java文件夾,java目錄下就是包名結(jié)構(gòu)了,和Eclipse一樣,而它的上級(jí)目錄是src/main. ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

??(我這里是純C語(yǔ)言編寫(xiě)項(xiàng)目,所以刪掉了java目錄)


eclipse的資源文件和清單文件

eclipse的清單文件資產(chǎn)文件清單文件都在根目錄,src目錄下就是包名結(jié)構(gòu)

======================================================

總結(jié)一下就是Eclipse和AS在文件目錄結(jié)構(gòu)上多了一個(gè)module,即app目錄

====================================================

下面開(kāi)始實(shí)戰(zhàn)演練

Eclipse項(xiàng)目無(wú)痛轉(zhuǎn)AS項(xiàng)目

至此我們可以隨便新建一個(gè)空的AS項(xiàng)目了,創(chuàng)建項(xiàng)目后,由于src結(jié)構(gòu)不同,為了避免文件錯(cuò)亂,刪除掉app目錄中的src文件夾

刪除app module下的src目錄

那么Eclipse項(xiàng)目只需要在現(xiàn)有的空AS結(jié)構(gòu)中把整個(gè)根目錄中的文件拷貝到app目錄下


拷貝替換過(guò)后的結(jié)構(gòu)

至此項(xiàng)目遷移完成了百分之90,這時(shí)候打開(kāi)AS項(xiàng)目的話,會(huì)發(fā)現(xiàn)IDE報(bào)錯(cuò),沒(méi)辦法定位新的文件結(jié)構(gòu),

這時(shí)候就要用到gradle來(lái)重新定位文件目錄了,在AS中一個(gè)module的目錄對(duì)應(yīng)一個(gè)build.gradle文件,他可以設(shè)置使用的SDK版本,編譯版本,混淆設(shè)置,以及各種插件和依賴等等等等

廢話不多說(shuō),看圖


module的build文件


module的build.gradle文件包含三個(gè)分支,android,dependencies,repositories

最上層為使用的插件,其中android分支中支持修改sourceSet,而sourceSet就是我們項(xiàng)目遷移的關(guān)鍵,文件結(jié)構(gòu)重新鏈接

android {//在android分支中添加如下DSL語(yǔ)句

sourceSets {

main {

manifest.srcFile'AndroidManifest.xml'

java.srcDirs = ['src']

resources.srcDirs = ['src']

aidl.srcDirs = ['src']

renderscript.srcDirs = ['src']

res.srcDirs = ['res']

assets.srcDirs = ['assets']

jniLibs.srcDirs = ['libs']

}

defandStr ="tests/androidTest/"

androidTest {

java.srcDirs = [andStr +'src']

resources.srcDirs = [andStr +'src']

aidl.srcDirs = [andStr +'src']

renderscript.srcDirs = [andStr +'src']

res.srcDirs = [andStr +'res']

assets.srcDirs = [andStr +'assets']

}

deftestStr ="tests/test/"

test {

java.srcDirs = [testStr +'src']

resources.srcDirs = [testStr +'src']

aidl.srcDirs = [testStr +'src']

renderscript.srcDirs = [testStr +'src']

res.srcDirs = [testStr +'res']

assets.srcDirs = [testStr +'assets']

}

debug.setRoot('build-types/debug')

release.setRoot('build-types/release')

main.java.srcDirs +='src/main/kotlin'

}

}


當(dāng)當(dāng)當(dāng)當(dāng)當(dāng),gradle同步一下,新鮮的EclipseStudio項(xiàng)目就出爐了!!!!

至于想把現(xiàn)有AS項(xiàng)目轉(zhuǎn)換為類Eclipse結(jié)構(gòu)的同學(xué),仿照上面的邏輯就能無(wú)痛轉(zhuǎn)換,Eclipse的配置文件隨便找找其他項(xiàng)目的copy過(guò)來(lái)就行了

文件的操作,gradle的配置就不再?gòu)?fù)述了,下面講一下eclipse配置文件的修改


修改過(guò)后的目錄結(jié)構(gòu)

其中.project可以定義當(dāng)前工程在Eclipse中顯示的工程名,project.properties設(shè)置當(dāng)前使用API版本和工程是否為類庫(kù)工程

.project打開(kāi)以后的結(jié)構(gòu),name字段為自定義的工程名

因?yàn)槲募莄opy過(guò)來(lái)的,其中.project中的name字段必須修改,不然你導(dǎo)入Eclipse時(shí)如果當(dāng)前workspace中有同名工程是導(dǎo)入不了的.


project.properties打開(kāi)以后的結(jié)構(gòu)

target為標(biāo)記的API版本,

android.library為true時(shí)表示當(dāng)前工程為類庫(kù)工程,否則可以不寫(xiě)直接刪除掉


Tips!!!!!!!!!:所轉(zhuǎn)換的工程因?yàn)榻Y(jié)構(gòu)問(wèn)題,不支持導(dǎo)入到其他工作區(qū),IDE copy的情況下不會(huì)保留原有結(jié)構(gòu)

AS下只允許open project,Eclipse下打開(kāi)工程不允許copy to workspace

追加一點(diǎn)小技巧

在eclipse中我們的library project不是和當(dāng)前project同目錄的,如果library project又和其他工程有關(guān)聯(lián)的情況下,每一個(gè)工程拷貝一份也是不現(xiàn)實(shí)的,如果library需要修改,這種情況也增加了維護(hù)成本,稍有疏忽可能會(huì)造成其他copied遺漏或錯(cuò)亂,在eclipse中這個(gè)問(wèn)題很好解決,因?yàn)橹恍枰砑觢ibrary鏈接就行了,而AS中首先是通過(guò)settings.gradle掛載module,然后在通過(guò)每一個(gè)module去依賴project,我們就需要定義外部library路徑來(lái)掛載module

通過(guò)定義項(xiàng)目路徑尋找到需要使用的庫(kù)


在需要使用library的module中依賴library即可



===================本章完結(jié)======================

userLibrary及其他IDE特性后續(xù)文章會(huì)補(bǔ)充.......

也可以關(guān)注本人的GitHub地址("https://github.com/vickyleu"),不定期更新一些小知識(shí)小技巧

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末拓售,一起剝皮案震驚了整個(gè)濱河市地熄,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌是鬼,老刑警劉巖肤舞,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異均蜜,居然都是意外死亡李剖,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)囤耳,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)篙顺,“玉大人,你說(shuō)我怎么就攤上這事充择〉旅担” “怎么了?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵椎麦,是天一觀的道長(zhǎng)宰僧。 經(jīng)常有香客問(wèn)我,道長(zhǎng)铃剔,這世上最難降的妖魔是什么撒桨? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮键兜,結(jié)果婚禮上凤类,老公的妹妹穿的比我還像新娘。我一直安慰自己普气,他們只是感情好谜疤,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著现诀,像睡著了一般夷磕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上仔沿,一...
    開(kāi)封第一講書(shū)人閱讀 51,698評(píng)論 1 305
  • 那天坐桩,我揣著相機(jī)與錄音,去河邊找鬼封锉。 笑死绵跷,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的成福。 我是一名探鬼主播碾局,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼奴艾!你這毒婦竟也來(lái)了净当?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎像啼,沒(méi)想到半個(gè)月后俘闯,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡埋合,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年备徐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了萄传。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片甚颂。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖秀菱,靈堂內(nèi)的尸體忽然破棺而出振诬,到底是詐尸還是另有隱情,我是刑警寧澤衍菱,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布赶么,位于F島的核電站,受9級(jí)特大地震影響脊串,放射性物質(zhì)發(fā)生泄漏辫呻。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一琼锋、第九天 我趴在偏房一處隱蔽的房頂上張望放闺。 院中可真熱鬧,春花似錦缕坎、人聲如沸怖侦。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)匾寝。三九已至,卻和暖如春荷腊,著一層夾襖步出監(jiān)牢的瞬間艳悔,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工女仰, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留猜年,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓董栽,卻偏偏與公主長(zhǎng)得像码倦,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子锭碳,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容