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

來源:互聯網
上載者:User

標籤:android   android studio   gradle   

大家如果喜歡我的部落格,請關注一下我的微博,請點擊這裡(http://weibo.com/kifile),謝謝

轉載請標明出處(http://blog.csdn.net/kifile),再次感謝


Android Gradle編譯學習日記(基於 Android Studio 1.0):

 

Android Gradle編譯學習日記之一(搭建 Gradle 環境以及編譯 Android 應用)


在上一篇文章中,我簡單介紹了一個 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。希望大家喜歡,看到這裡的點個贊可好。

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.