gradle 編譯 Eclipse,引入依賴資源以及遷移 Android Studio

gndroid Gradle編譯學習日記之二(使用 Gradle 編譯 Eclipse,引入依賴資源以及遷移 Android Studio)


轉載出處(http://my.oschina.net/u/1785888/blog),再次感謝


在上一篇文章中,我簡單介紹了一個 Gradle 環境變量的搭建,以及如何使用 Gradle 編譯 Android 項目,但是對於國內的大部分開發人員來說,我們通常都是使用 Eclipse進行 Android 開發,對於大部分人而言從一個平臺遷移到另一個平臺所花費的成本太高。因此本文就將介紹如何通過 Gradle 編譯 Eclipse 代碼結構下的Android 項目,以及將 Eclipse 下的 Andorid 項目遷移到 Android Studio 下,讓大家更加輕鬆的轉移項目代碼。

一、在 Eclipse 下創建一個 Android 項目

相信大家都不希望我再這裏演示如何在 Eclipse 下創建一個 Android 項目,因此我也不再花費時間在這上面,先上傳一張創建後的項目結構圖:


再來一張 Gradle 的默認目錄結構圖:


通過對比兩個目錄結構圖,我們可以發現,Eclipse 默認的代碼目錄結構和 Gradle 支持的代碼目錄結構是不同的,因此,如果我們使用上一篇文章中的方法直接進行 Android 項目編譯,會發現無法進行正常編譯,原因就是沒有找到對應的 Android 配置文件。


二、配置 Gradle 的資源路徑

爲了讓 Gradle 能夠找到響應的源文件和資源文件,我們先看一下Gradle 的目錄結構,從第二張圖中我們能夠發現 Gradle 的默認編譯結構中將程序源碼分爲了幾個不同的部分:java、jni、rs、aidl,而 Eclipse 的目錄中java 和 aidl 是放置在同一個目錄下的,所以我們需要在 build.gradle 文件根據項目結構定義好對應的路徑。

定義路徑位置的代碼如下:

android {    sourceSets {        main {            manifest.srcFile 'AndroidManifest.xml'            java.srcDirs = ['src']            resources.srcDirs = ['src']            aidl.srcDirs = ['src']            renderscript.srcDirs = ['src']            res.srcDirs = ['res']            assets.srcDirs = ['assets']        }        androidTest.setRoot('tests')    }}


請把 sourceSets 部分添加到 build.gradle 中的 android 域內。

其實 Gradle 默認的源碼路徑設置位置應該是在最外層,但是由於Andorid 插件擁有自己的代碼設置,因此我們將 sourceSets 放置到 android 域內。

之後執行 

gradle check


你現在應該能夠進行正常的編譯工作了,具體如何編譯請查看我上一篇文章。


三、引入項目依賴包

What?你出錯了,不可能吧?

當然其實這是可能的,注意查看第一張圖,裏面除了 TestGradle 目錄以外,還有一個 appcompat_v7,這是項目的依賴包,如果你不進行配置,那麼 Android 編譯時無法找到他,自然會報錯。

現在我們來看看如何將依賴包引入 Android,讓他能夠正常編譯

(1)使用 maven 

之前我就說過,Gradle 能夠使用 Maven 的幾乎所有特性,因此當我們需要使用依賴包的時候,而且該依賴包在 maven 中央庫中存在的時候,我們不妨直接在配置文件中配置,配置方法也十分簡單地說,以 appcompat_v7包爲例,在 build.gradle 的最外層加入以下信息:

dependencies {    compile 'com.android.support:appcompat-v7:21.0.3'}

compile 代表着你希望在編譯的時候將某個 maven 包打入程序中,而後面的信息則是對應 maven 包的相關信息,方便從 maven 中央倉庫中進行獲取。


然後你再執行一下:

gradle check


現在是不是提示你程序能夠正常打包了呢。

(2)引入 jar 包

有時候我們在 libs 目錄下有存放 jar 包類型或者 so 鏈接庫類型的依賴資源,但是當你進行編譯時,你會發現找不到這些資源,原因只有一個: Gradle 不知道你需要編譯的資源對象在哪裏,因此我們需要手動在 build.gradle 進行路徑配置,大致方法與上面的類似,我就簡單敘述一下就好了。

打開你的 build.gradle,在 dependencise 域,沒錯,就是剛纔我們添加 appcompa_v7包的那個域,在域中我們加入一下代碼:

compile fileTree(dir: 'libs', include: ['*.jar'])


該代碼就將所有在 libs 目錄下的 jar 包引入了,如果要引入 so 庫,再加一句

compile fileTree(dir: 'libs', include: ['*/*.so'])


(3)引入依賴項目

如果你實在找不到對應的 maven 項目或者不能單純使用 jar 包進行引入,實在需要使用一個依賴工程,那我們就得考慮通過將依賴項目先轉換爲 Gradle 類型的 Android Library,然後再進行項目關聯。

面對這種情況,我們可以像 Eclipse 一樣將應用項目和依賴工程放在同一目錄下,方便關聯。

我們先將 TestGradle 中 build.gradle 中關於 appcompat 依賴包得引用去掉

在頂層目錄中,我們建立一個 build.gradle 和 setting.gradle 文件分別存放項目依賴

build.gradle 用於存放通用的配置信息,例如通用依賴:

// Top-level build file where you can add configuration options common to all sub-projects/modules.buildscript {    repositories {        jcenter()    }    dependencies {        classpath 'com.android.tools.build:gradle:1.0.0'        // NOTE: Do not place your application dependencies here; they belong        // in the individual module build.gradle files    }}allprojects {    repositories {        jcenter()    }}


setting.gradle 用於存放項目信息,例如這裏,我們可以像這樣命名:

include ':TestGradle',':appcompat_v7'


TestGradle 和 appcompat_v7分別爲應用項目和依賴工程的名稱,如果你的工程是在某個子目錄下,那麼你可以使用類似於‘:libraries:lib1'這種形式標明在 libraries 文件夾下的 lib1文件夾也是一個 Gradle 項目

之後我們進入 appcomp_v7目錄,建立對應的 build.gradle 配置文件,由於我們在上層目錄中已經創建了一個 build.gradle 並且配置了通用的依賴信息,因此在這個配置文件中我們可以不必寫入 buildscript 的相關屬性。

apply plugin: 'com.android.library'android {    compileSdkVersion 21    buildToolsVersion "21.1.2"}


這裏需要留意的是,這裏的插件類型是' com.android.library' 標明他是一個依賴包。另外如果你的項目配置是 Eclipse 目錄類型,請根據上文,配置對應的源碼位置。

如此一來,你已經配置好了相關的依賴工程,接下來我們需要將這個依賴工程配置到主工程中。

方法爲在主工程 build.gradle 中加入

dependencies {    compile project(':appcompat_v7')}

之後你再使用 Gradle 命令行就能夠針對本地的依賴庫進行編譯。


四、使用 Android Studio 引入工程

這裏簡單說說如何通過 Android Studio 使用 Eclipse 的項目目錄結構進行開發。

其實方法並不複雜,通過上面的步驟我們已經成功的配置好了一個 Gradle 工程的相關環境,因此我們只需要通過點擊 File->ImportProject,選中 appcompat_v7和 TestGradle 所在的父目錄即可,然後一路 Next,之後,你能看到你的項目被引入到了 Android Studio 中


除了代碼結構以外,與 Android Studio 建的一模一樣有沒有!!!


本篇博文就到這裏,主要介紹瞭如何通過建立 Gradle配置文件將 Eclipse 項目徹底導入 Android Studio。希望大家喜歡,看到這裏的點個贊可好。


發佈了23 篇原創文章 · 獲贊 1 · 訪問量 2萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章