本篇以Github上最熱門的MaterialDesign庫, MaterialDesignLibrary 來介紹怎樣使用Android Sudio導入開源項目的,若是你和我同樣剛剛從Eclipse轉到AS,那本篇文章很是適合你。java
若是不引入任何第三方庫,不作自動化分渠道打包等操做,那能夠在徹底不瞭解Gradle的狀況下進行Android項目的開發。但若是要想導入Github上的熱門項目,必須首先熟悉Gradle。android
Gradle是以Groovy爲基礎,面向java應用,基於DSL語法的自動化構建工具。是google引入,替換ant和maven的新工具,其依賴兼容maven和ivy。git
簡單來講,Gradle就是Andriod Studio引入的一種自動構建工程的工具,很好的解決了Android項目的構建。大概能解決如下開發過程當中的痛點:github
· 不用把第三方庫下載下來 。之前用Eclipse必須得把第三方庫下載下來,而後在本身的項目中引入那個第三方library才行。但使用Gradle,幾行代碼就搞定第三方庫的依賴,下降了耦合性。app
· 不用手動修改N次代碼,把代碼打N個包發到N個市場 。之前可能須要針對不一樣的渠道發不一樣的APK文件包,如今只須要在gradle中的幾行代碼就能一次生成多個渠道包。具體可參考此文章: 如何經過Gradle實現一套代碼開發不一樣特性的APK 。maven
若是你用AS新建一個項目,那此項目的默認項目結構如圖所示,圖中打開的文件是TestMe/build.gradle,已經給出了每句話的含義。ide
圖中新建項目名爲TestMe,使用了Project的目錄結構。此目錄下可見如下幾個gradle文件,分別是:工具
· TestMe/build.gradle,全局gradle,在這個文件裏的設置會在整個項目裏通用。gradle
· TestMe/app/build.gradle,模塊的gradle,僅在app模塊通用。ui
· TestMe/settings.gradle,用於指定哪一個目錄是模塊model。裏面的內容默認是 include ':app' ,表示app這個文件夾是一個模塊。
而Test
Me/app/build.gradle文件內容如圖所示,具體解釋參見圖中註釋。
咱們的目標是把MaterialDesignLibrary項目在AS裏面成功運行,並在手機上運行成功。
首先,用git的clone命令將 MaterialDesignLibrary 下載到本地。
進入AS,File->Import Project,而後找到MaterialDesignLibrary目錄,雙擊該目錄下的build.gradle便可導入項目。
能夠看導入好的Github上的MaterialDesignLibrary項目包含兩個module,包括MaterialDesignDemo和一個MaterialDesign。
· MaterialDesign的build.gradle文件第一行爲: apply plugin: 'com.android.library' ,表示這是一個Library。
· MaterialDesignDemo的build.gradle文件第一行爲: apply plugin: 'com.android.application' ,表示這是一個應用。
他的這個項目使用的是引用本地已有的MaterialDesign庫,而本文第三部分要講的是引用網上中心庫的MaterialDesign庫。兩種方法均可以,但後一種更加方便更經常使用,第一種方法不太經常使用。 第二步以後,可能會出現不少錯,下邊是常見錯誤:
注意:必定要確保根目錄下的setting.gradle裏面
是 include ':MaterialDesign', ':MaterialDesignDemo' 。表示以上兩個文件夾都是module
compile 'com.github.navasmdc:MaterialDesign:1.5@aar' 便可,以下:
dependencies {
// 編譯libs目錄下的全部jar包
compile fileTree(dir: 'libs', include: ['*.jar']) //多個文件
//compile files('libs/foo.jar') //單個文件這樣寫
compile 'com.android.support:appcompat-v7:22.0.0' //編譯第三方庫
compile 'com.github.navasmdc:MaterialDesign:1.5@aar'}
.............
4.常見錯誤
Error:failed to find Build Tools revision 21.1.1
Install Build Tools 21.1.1 and sync project
是由於該開源庫對應的Build Tools的版本你的AS裏面沒有。解決方法是點擊他的連接進行下載。或者更改每一個model裏面的build.gradle文件中的 buildToolsVersion "21.1.1" 爲本機裏面有的Build Tolls版本。
.............................................................................
Error:failed to find target android-18 : /Users/xujin/develop/adt-bundle-mac-x86_64-20140702/sdk
Install missing platform(s) and sync project
是由於該開源庫對應的android sdk的版本你的機器裏面沒有。解決方法同上,要麼下載,要麼改改配置。更改每一個model裏面的build.gradle文件中的 compileSdkVersion 21 爲本機裏面有的sdk版本。
.............................................................................
Error:(44, 30) 錯誤: -source 1.6 中不支持 diamond 運算符 (請使用 -source 7 或更高版本以啓用 diamond 運算符)
出錯的緣由是由於代碼中有 List<Car> cars = new ArrayList<>(); ,java在1.7引入了鑽石運算符 <> ,解決辦法有兩種。一是更改編譯的java sdk版本,而是將出錯代碼改成 List<Car> cars = newArrayList<Car>();
.................................................................................
Error:(37) No resource identifier found for attribute ‘checked’ in package ‘com.gc.materialdesign’
是由於第37行的 materialdesign:checked="true" ,命名空間materialdesign裏面沒有checked屬性,改爲check便可,代碼以下。(以前遇到過,姑且說說。)
<com.gc.materialdesign.views.CheckBox
android:id="@+id/checkBox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:background="#1E88E5"
materialdesign:check="true"
/>