在我們有兩個(gè)Android Studio工程的情況時(shí),我們想使用一個(gè)作為library工程導(dǎo)入到另一個(gè)工程作為一個(gè)module。我們可以使用Android Studio很容易的做到。
讓我們假設(shè)我們有兩個(gè)工程:MyApplication和MyLibrary,我們想導(dǎo)入MyLibrary到MyApplication作為一個(gè)module。
首先我們需要從MyLibrary工程中找到module中的build.gradle文件,它通常在app目錄下,除非你修改了module的名稱(chēng)。
注意builde.gradle文件的plugin是‘com.android.application’。為了使用這個(gè)工程作為一個(gè)library工程,我們需要修改為 ‘com.android.library’。文件的內(nèi)容就像這樣:
試著sync一下工程,會(huì)出現(xiàn)一個(gè)錯(cuò)誤: Library projects cannot set applicationId(類(lèi)工程不能設(shè)置applicationId)。
我們可以刪除gradle文件中的applicationId這行,在defaultConfig 括號(hào)里面。
MyLibrary 工程就修改完了。然后我們?cè)贛yApplication 工程中導(dǎo)入MyLibrary 作為一個(gè)module。
在MyApplication 工程中, 點(diǎn)擊File -> New -> Import Module。
出現(xiàn)一個(gè)對(duì)話框
從MyLibrary工程中找到你想要導(dǎo)入的Module目錄。通常它是app module除非你給了它另一個(gè)名稱(chēng)。
如果在MyApplication工程中Module使用相同的名稱(chēng)將會(huì)出現(xiàn)錯(cuò)誤。為了從一個(gè)library工程導(dǎo)入一個(gè)修改的Module,我們可以給它一個(gè)版本號(hào)在Module名稱(chēng)設(shè)置框。
修改Module的名稱(chēng)為my-library,導(dǎo)入成功。
到這一步差不多已經(jīng)完成,最后一步是在MyApplication 工程中修改依賴(lài)。很多人會(huì)忘了做這一步。
打開(kāi)工程結(jié)構(gòu)對(duì)話框,選擇app Module(可以有別的名稱(chēng)),在右側(cè)點(diǎn)擊依賴(lài)標(biāo)簽。
找到加號(hào)并點(diǎn)擊它,從彈出菜單中選擇module依賴(lài)。
然后選擇我們剛從MyLibrary工程中導(dǎo)入的library module。
點(diǎn)擊OK,就完成了。
IDE會(huì)在MyApplication/app/build/gradle file文件添加好依賴(lài)。依賴(lài)部分就像下面的一樣:
dependencies{
compile fileTree(dir:‘libs‘,include:[‘*.jar‘])
compile‘com.android.support:appcompat-v7:22.2.0‘
compile project(‘:my-library‘)
}
它可能工作的挺好,但這有一個(gè)很重要的問(wèn)題,MyLibrary工程有它自己的依賴(lài)。例如,MyApplication和MyLibrary使用support libraries,這有可能會(huì)發(fā)生沖突。
我們可以在gradle中通過(guò)transitive配置依賴(lài)避免這個(gè)問(wèn)題。
我們可以修改這行
compileproject(‘:my-library‘)
為
compile(project(‘:my-library‘)){
transitive=false;
}
這個(gè)問(wèn)題就可以避免。Done!