1. 程式人生 > >史上最詳細的Android Studio Gradle基礎教程

史上最詳細的Android Studio Gradle基礎教程

今天在研究Android Studio裡的 Gradle,看到一篇講的很詳細的部落格,這裡跟大家分享一下

什麼是Gradle?

Gradle是一種依賴管理工具,基於Groovy語言,面向Java應用為主,它拋棄了基於XML的各種繁瑣配置,取而代之的是一種基於Groovy的內部領域特定(DSL)語言。

安裝Gradle

Android Studio系列教程一--下載與安裝中新建專案成功後會下載Gradle,貌似這個過程不翻牆也是可以下載,但是訪問特別慢,建議翻牆下載。那麼下載的Gradle到什麼地方呢?

  • Mac上會預設下載到 /Users/<使用者名稱>/.gradle/wrapper/dists

     目錄

  • Win平臺會預設下載到 C:\Documents and Settings\<使用者名稱>.gradle\wrapper\dists 目錄

你會看到這個目錄下有個 gradle-x.xx-all 的資料夾, 如果下載實在太慢,但是又不想翻牆的話,可以自己手動到Gradle官網下載對應的版本,然後將下載的.zip檔案(也可以解壓)複製到上述的gradle-x.xx-all 資料夾下,不過還是建議讓它直接下載的好。

Gradle 基本概念

下面就以我的開源專案 9GAG 來詳細講解下和Gradle相關的知識, 和Gradle相關的幾個檔案一般有如下幾個:

紅色標記部分從上到下咱們來一步步分析:

1. 9GAG/app/build.gradle

這個檔案是app資料夾下這個Module的gradle配置檔案,也可以算是整個專案最主要的gradle配置檔案,我們來看下這個檔案的內容:

// 宣告是Android程式
apply plugin: 'com.android.application'

android {
    // 編譯SDK的版本
    compileSdkVersion 21
    // build tools的版本
    buildToolsVersion "21.1.1"

    defaultConfig {
        // 應用的包名
        applicationId "me.storm.ninegag"
minSdkVersion 14 targetSdkVersion 21 versionCode 1 versionName "1.0.0" } // java版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_7 targetCompatibility JavaVersion.VERSION_1_7 } buildTypes { release { // 是否進行混淆 minifyEnabled false // 混淆檔案的位置 proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } // 移除lint檢查的error lintOptions { abortOnError false } } dependencies { // 編譯libs目錄下的所有jar包 compile fileTree(dir: 'libs', include: ['*.jar']) compile 'com.android.support:support-v4:21.0.2' compile 'com.etsy.android.grid:library:1.0.5' compile 'com.alexvasilkov:foldable-layout:1.0.1' // 編譯extras目錄下的ShimmerAndroid模組 compile project(':extras:ShimmerAndroid') }

這裡需要說明幾點:

  • 檔案開頭apply plugin是最新gradle版本的寫法,以前的寫法是apply plugin: 'android', 如果還是以前的寫法,請改正過來。

  • buildToolsVersion這個需要你本地安裝該版本才行,很多人匯入新的第三方庫,失敗的原因之一是build version的版本不對,這個可以手動更改成你本地已有的版本或者開啟 SDK Manager 去下載對應版本。

  • applicationId代表應用的包名,也是最新的寫法,這裡就不在多說了。

  • android 5.0開始預設安裝jdk1.7才能編譯,但是由於mac系統自帶jdk的版本是1.6,所以需要手動下載jdk1.7並配置下,具體可以見我這篇部落格Mac下安裝和管理Java

  • minifyEnabled也是最新的語法,很早之前是runProguard,這個也需要更新下。

  • proguardFiles這部分有兩段,前一部分代表系統預設的android程式的混淆檔案,該檔案已經包含了基本的混淆宣告,免去了我們很多事,這個檔案的目錄在 <sdk目錄>/tools/proguard/proguard-android.txt , 後一部分是我們專案裡的自定義的混淆檔案,目錄就在 app/proguard-rules.txt , 如果你用Studio 1.0建立的新專案預設生成的檔名是proguard-rules.pro , 這個名字沒關係,在這個檔案裡你可以宣告一些第三方依賴的一些混淆規則,由於是開源專案,9GAG裡並未進行混淆,具體混淆的語法也不是本篇部落格討論的範圍。最終混淆的結果是這兩部分檔案共同作用的。

  • compile project(':extras:ShimmerAndroid')這一行是因為9GAG中存在其他Module,不知道Module的概念可以看下這篇部落格Android Studio系列教程二--基本設定與執行, 總之你可以理解成Android Library,由於Gradle的普及以及遠端倉庫的完善,這種依賴漸漸的會變得非常不常見,但是你需要知道有這種依賴的。

  • 以上檔案裡的內容只是基本配置,其實還有很多自定義部分,如自動打包debug,release,beta等環境,簽名,多渠道打包等,後續會單獨拿出來講解。

2. 9GAG/extras/ShimmerAndroid/build.gradle

每一個Module都需要有一個gradle配置檔案,語法都是一樣,唯一不同的是開頭宣告的是 apply plugin: 'com.android.library'

3. 9GAG/gradle

這個目錄下有個 wrapper 資料夾,裡面可以看到有兩個檔案,我們主要看下 gradle-wrapper.properties 這個檔案的內容:

#Thu Dec 18 16:02:24 CST 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.2.1-all.zip

可以看到裡面聲明瞭gradle的目錄與下載路徑以及當前專案使用的gradle版本,這些預設的路徑我們一般不會更改的,這個檔案裡指明的gradle版本不對也是很多導包不成功的原因之一。

4. 9GAG/build.gradle

這個檔案是整個專案的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'
    }
}

allprojects {
    repositories {
        jcenter()
    }
}

內容主要包含了兩個方面:一個是宣告倉庫的源,這裡可以看到是指明的jcenter(), 之前版本則是mavenCentral(), jcenter可以理解成是一個新的中央遠端倉庫,相容maven中心倉庫,而且效能更優。另一個是聲明瞭android gradle plugin的版本,android studio 1.0正式版必須要求支援gradle plugin 1.0的版本。

5. 9GAG/settings.gradle

這個檔案是全域性的專案配置檔案,裡面主要宣告一些需要加入gradle的module,我們來看看9GAG該檔案的內容:

include ':app', ':extras:ShimmerAndroid'

檔案中的 appextras:ShimmerAndroid 都是module,如果還有其他module都需要按照如上格式加進去。

相關推薦

詳細Android Studio Gradle基礎教程

今天在研究Android Studio裡的 Gradle,看到一篇講的很詳細的部落格,這裡跟大家分享一下 什麼是Gradle? Gradle是一種依賴管理工具,基於Groovy語言,面向Java應用為主,它拋棄了基於XML的各種繁瑣配置,取而代之的是一種基於Groo

詳細Python爬取電影教程,還不會那也是沒誰了

摘要: 作為小白,爬蟲可以說是入門python最快和最容易獲得成就感的途徑。因為初級爬蟲的套路相對固定,常見的方法只有幾種,比較好上手。選取網頁結構較為簡單的貓眼top100電影為案例進行練習。 重點是用上述所說的4種方法提取出關鍵內容。一個問題採用不同的解決方法有助於拓展思維,通過不斷練

詳細的正則表示式教程

正則表示式 正則表示式的作用: 在實際開發過程中經常會有查詢符合某些複雜規則的字串的需要,比如:郵箱、圖片地址、手機號碼等,這時候想匹配或者查詢符合某些規則的字串就可以使用正則表示式了。 正則表示式概念 正則表示式就是記錄文字規

【轉】詳細的Composer安裝tp5教程

amp href packagist 中間 ref create 中國 src 兩個 http://www.thinkphp.cn/topic/52362.html Composer安裝tp5教程1.下載composer先介紹幾個網站Composer官網https://

詳細Android Studio系列教程四--Gradle基礎

原文連結:http://stormzhang.com/devtools/2014/12/18/android-studio-tutorial4/ 其實很早之前也寫了一篇Gradle的基礎部落格,但是時間很久了,現在Gradle已經更新了很多,所以暫且結合Stduio 1

Android Studio獲取開發版SHA1值和發布版SHA1值的詳細方法

nal code tail JD rip 通過 提示 打開 tor 前言:使用百度地圖時需要秘鑰,申請秘鑰時需要SHA1值,所以今天就總結一下怎麽獲取這個值。 正常情況下: 一、獲取開發版SHA1: 在此我直接用AndroidStudio提供的命令控制臺了,畢竟做Andro

Android Studio獲取開發版SHA1值和釋出版SHA1值的詳細方法

前言: 今天我想把百度地圖的定位整合到專案中來,想寫個小小的案例,實現一下,但在整合百度地圖時首先要申請祕鑰,申請祕鑰要用到SHA1值,所以今天就來總結一下怎樣去獲取這個值吧,希望對大家有幫助。 正常情況下: 一、獲取開發版SHA1: 在此我直接用Android

詳細Android Studio系列教程(一)--下載和安裝

背景 相信大家對Android Studio已經不陌生了,Android Studio是Google於2013 I/O大會針對Android開發推出的新的開發工具,目前很多開源專案都已經在採用,Google的更新速度也很快,明顯能感覺到這是Android開發的未來,那

詳細Android Studio系列教程(一)

本文為個人原創,歡迎轉載,但請務必在明顯位置註明出處! 背景 相信大家對Android Studio已經不陌生了,Android Studio是Google於2013 I/O大會針對Android開發推出的新的開發工具,目前很多開源專案都已經在採用,Google的更新速度也很快,明顯能感覺到這是A

詳細Android Studio系列教程

http://www.cnblogs.com/stormzhang/p/4204398.html 你還沒有在使用Android Studio + Gradle麼?那就有點太落伍了,下面自己原創總結了Android Studio的一系列教程,圖文並茂非常詳細,即使你是小

詳細Android Studio百度地圖(BaiDuMap)開發教程,可以當作官方文件的教科書級別教程

本文是續寫一一哥作品,(一些大神沒想過要寫出來的,而笨小白又不懂的,,稍有完善。) 原文:http://blog.csdn.net/syc000666/article/details/50756551 由於工作原因,需要用到地圖模組,之前一直是用Eclipse開發百度地圖

詳細Android系統SystemUI 啟動過程詳細解析

Android 系統 SystemUI 介紹 Android 的 SystemUI 其實就是 Android 的系統介面,它包括了介面上方的狀態列 status bar,下方的導航欄Navigation Bar,鎖屏介面 Keyguard ,電源介面 PowerUI,近

數字貨幣基礎常識及常用網站、軟體、APP彙總!詳細

一、 什麼是數字貨幣?....................................................................................................................................... 3 二、 數字

一步步教你搭建Android開發環境(有圖有真相)--“自吹自擂:詳細囉嗦、最新的搭建教程

宣告:轉摘請註明http://blog.csdn.net/longming_xu/article/details/28241045 前言:為什麼要寫這麼一篇文章?網上介紹Android開發環境搭建的文章一片一片的,我為什麼要自己”重複的去造輪子“呢?原因有三個:第一個

Android原生第一課-瞭解目錄結構和其用處(詳細

學的東西,很久沒用就會忘記,所以寫個東西記錄一下。 這是我之前用Android Studio 建的專案。 目錄檔案 作用 .gradle gradle專案產生資料夾(自動編譯工具產生的檔案) .idea IDEA專案資料夾(開發工具產生的檔案) app

Gradle詳細解析

前言 對於Android工程師來說編譯/打包等問題立即就成痛點了。一個APP有多個版本,Release版、Debug版、Test版。甚至針對不同APP Store都有不同的版本。在以前ROM的環境下,雖然可以配置Android.mk,但是需要依賴整個Android原始碼,而且還不能完全做到滿足條件,很多事情

詳細Windows版本搭建安裝React Native環境配置

gin windows系統 adl 搭建環境 tools 想要 變量 rep home 說在前面的話: 感謝同事金曉冰傾情奉獻本環境搭建教程 之前我們已經講解了React Native的OS X系統的環境搭建以及配置,鑒於各大群裏有很多人反應在Windows環境搭建出現各種

移植QT5.6到嵌入式開發板(詳細的QT移植教程

文件傳輸 嵌入式環境 ubun 導致 字庫 etc -a led fill 目前網上的大多數 QT 移植教程還都停留在 qt4.8 版本,或者還有更老的 Qtopia ,但是目前 Qt 已經發展到最新的 5.7 版本了,我個人也已經使用了很長一段時間的 qt5.6 for

詳細nodejs版本管理器nvm的安裝與使用(附註意事項和優化方案)

技術 註意 nod core 遇到 target 快速 方式 get 使用場景 在Node版本快速更新叠代的今天,新老項目使用的node版本號可能已經不相同了,node版本更新越來越快,項目越做越多,node切換版本號的需求越來越迫切,傳統卸載一個版本在安裝另一個版本的方

XX-NET詳細完整教程

偽造 不用 app 分享圖片 AS 版本 firefox 配置過程 自動切換 前言   XX-NET,系GAE類代理,即通過可用Google ip連接Google App Engine項目,然後把所有tcp請求發送給Google App Engine,最終實現科學式網絡的