亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

給Android初學者的Gradle知識普及

2019-10-21 21:38:34
字體:
來源:轉載
供稿:網友

Gradle build android 歷史

Android Tools 主頁 ,大概是2016年2月份發布 adt21.1 的時候,忽然在主頁發現了New Build System 原來是可以用gradle 來構建android項目,至于gradle是什么(既然點擊進來看了應該都知道了吧。)。然后,又看了一下RoadMap 那時候,還并不支持Proguard 打包,于是就沒看了。
android studio 發布,終于gradle 0.4 也跟著出來了,于是,先把gradle 學了一遍,然后把Gradle Plugin User Guide也認真閱讀了一下,根據我的個人體驗,如果你對gradle 毫無了解就去看Gradle Plugin User Guide 可能很多地方都一頭霧水,但是并不妨礙你用gradle 打包android 應用,只是,出現問題,你就可能很頭疼。不過,本文就是讓不會gradle 也能用上 gradle 打包android 程序

順便貼上官方為什么使用gradle 的理由

Domain Specific Language (DSL) to describe and manipulate the build logic
Build files are Groovy based and allow mixing of declarative elements through the DSL and using code to manipulate the DSL elements to provide custom logic.
Built-in dependency management through Maven and/or Ivy.
Very flexible. Allows using best practices but doesn't force its own way of doing things.
Plugins can expose their own DSL and their own API for build files to use.
Good Tooling API allowing IDE integration

1. 前言

剛學 Android 不久,對 Gradle 不懂,看了很多資料依然一知半解,我覺得這個主題可能對很多讀者也都很有幫助,所以我在整理的筆記的基礎上做了點補充與改進,希望這篇文章對你們有幫助!

2. 什么是構建工具?

我們大家都知道 Gradle 是一種構建工具,那么什么是構建工具呢?
網上一大堆的文字解釋我覺得很難理解,這里我以咱們 Android 開發來舉個例子吧。
我們以前開發都是用 Eclipse ,而 Eclipse 大家都知道是一種 IDE (集成開發環境),最初是用來做 Java 開發的,而 Android 是基于 Java 語言的,所以最初 Google 還是希望 Android 能在 Eclipse 上進行開發,為了滿足這個需求,Google 開發了一個叫 ADT (Android Developer Tools)的東西,相信以前從 Eclipse 時代過來的對 ADT 應該都不陌生,正是因為有了 ADT ,從此我們只需要碼好代碼,然后直接在 Eclipse 上進行編譯、運行、簽名、打包等一系列流程,而這背后的工作都是 ADT 的功勞。某種意義上 ADT 就是我們的構建工具。

而自 Google 推出 Android Studio 以來,就宣布默認使用 Gradle 來作為構建工具,并且之后放棄更新 ADT ,從此 Gradle 走入 Android 開發者的視野,而我也是在 AS 的 Beta 版開始接觸并學習 Gradle。

一般來說,構建工具除了以上提到的編譯、運行、簽名、打包等,還具備依賴管理的功能,什么是依賴管理呢?還是拿 Eclipse 來說,我們以前在 Eclipse 上開發 Android ,如果需要用到第三方庫的時候一般都是先下載 jar 文件,然后把 jar 文件添加到 libs 目錄,然后項目中就可以引用了。但是你不覺得這種管理方式很麻煩么?假設第三方庫有更新,需要下載最新的 Jar 文件,然后替換掉原來的,引用的庫少還好,一旦引用的第三方庫多,那簡直麻煩死,可以說這種方式只有依賴,而沒有管理。

現在大家不陌生的 Gradle 引用第三方庫方式是這樣的:
compile 'com.android.support:support-v4:24.0.1'

類似這樣的依賴方式,是不是很方便?而且很直觀,直接可以看到源地址,升級的話直接改下版本號就可以了,這就是所謂的依賴管理。
所以構建工具就是對你的項目進行編譯、運行、簽名、打包、依賴管理等一系列功能的合集,傳統的構建工具有 Make、Ant、Maven、Ivy等,而 Gradle 是新一代的自動化構建工具。

3. 什么是 Gradle ?

上面說了,Gradle 是新一代的自動化構建工具,它是一個獨立的項目,跟 AS、Android 無關,官方網站:https://gradle.org/ , 類似 Ant、Maven這類構建工具都是基于 xml 來進行描述的,很臃腫,而 Gradle 采用的是一種叫做 Groovy 的語言,語法跟 Java 語法很像,但是是一種動態語言,而且在 Java 基礎上做了不少改進,用起來更加簡潔、靈活,而且 Gradle 完全兼容 Maven、Ivy,這點基本上宣布了 Maven、Ivy 可以被拋棄了,Gradle 的推出主要以 Java 應用為主,當然目前還支持 Android、C、C++。

4. Gradle 與 Android Studio 的關系

上面也提到,Gradle 跟 Android Studio 其實沒有關系,但是 Gradle 官方還是很看重 Android 開發的,Google 在推出 AS 的時候選中了 Gradle 作為構建工具,為了支持 Gradle 能在 AS 上使用,Google 做了個 AS 的插件叫 Android Gradle Plugin ,所以我們能在 AS 上使用 Gradle 完全是因為這個插件的原因。在項目的根目錄有個 build.gradle 文件,里面有這么一句代碼:
classpath 'com.android.tools.build:gradle:2.1.2'

這個就是依賴 gradle 插件的代碼,后面的版本號代表的是 android gradle plugin 的版本,而不是 Gradle 的版本,這個是 Google 定的,跟 Gradle 官方沒關系。關于 android gradle plugin 的更多信息可以到這里查看,這里列舉了 android gradle plugin 每個版本的具體變化與具體功能:

http://tools.android.com/tech-docs/new-build-system

友情提示,需要科學上網!

5. Gradle Wrapper

現在默認新建一個項目,然后點擊 AS 上的運行,默認就會直接幫你安裝 Gradle ,我們不需要額外的安裝 Gradle 了,但是其實這個 Gradle 不是真正的 Gradle ,他叫 Gradle Wrapper ,意為 Gradle 的包裝,什么意思呢?假設我們本地有多個項目,一個是比較老的項目,還用著 Gradle 1.0 的版本,一個是比較新的項目用了 Gradle 2.0 的版本,但是你兩個項目肯定都想要同時運行的,如果你只裝了 Gradle 1.0 的話那肯定不行,所以為了解決這個問題,Google 推出了 Gradle Wrapper 的概念,就是他在你每個項目都配置了一個指定版本的 Gradle ,你可以理解為每個 Android 項目本地都有一個小型的 Gradle ,通過這個每個項目你可以支持用不同的 Gradle 版本來構建項目。

理解了 Gradle Wrapper 的概念就好辦了,以下的所有操作都是基于 Gradle Wrapper 的。

默認我們在 AS 上第一次創建項目會自動下載 Gradle 的,這個過程很漫長,出奇的慢,但是第一次之后就ok了,接下來就是教大家用命令行測試下,請大家在終端或者 AS 帶的終端上切換到所在項目的目錄,然后輸入 ./gradlew -v (win用戶直接輸入 gradlew -v) ,即可以查看當前項目所用的 gradle 的版本,gradlew 即為 gradle wrapper 的縮寫,如果你是第一次執行命令行,那么會出現一個下載的提示,緊接著會打印一個個的點,這個過程很漫長,依賴你的網速,時間幾分鐘到幾十分鐘不等。

有人有疑問,我 AS 上明明已經可以正常運行該項目的,說明 Gradle 已經下載過了,為什么命令行還要再下載一次?我也一直有這個疑問,理論上是不該再下載的,但是事實他就是要重新下載一次,我猜測可能是bug吧。

如果下載完成輸入 ./gradlew -v 出現如下結果,證明你的項目是ok的,否則就是你的項目配置有問題了。

6. Android 項目包含的 Gradle 配置文件

這里姑且以我很早在 GitHub 開源的 9GAG 項目為例,來稍微介紹下一個完整的 Android 項目包含的基本 Gradle 相關的配置文件:
咱們來一步步分析:
9GAG/app/build.gradle
這個文件是 app 文件夾下這個 Module 的 gradle 配置文件,也可以算是整個項目最主要的 gradle 配置文件,具體里面的配置以后再介紹。

9GAG/extras/ShimmerAndroid/build.gradle
每一個 Module 都需要有一個 gradle 配置文件,語法都是一樣,唯一不同的是開頭聲明的是
apply plugin: ‘com.android.library'

9GAG/gradle
這個目錄下有個 wrapper 文件夾,里面可以看到有兩個文件,我們主要看下 gradle-wrapper.properties 這個文件的內容:

可以看到里面聲明了 gradle 的目錄與下載路徑以及當前項目使用的 gradle 版本,這些默認的路徑我們一般不會更改的,這個文件里指明的 gradle 版本不對也是很多導包不成功的原因之一。

9GAG/build.gradle
這個文件是整個項目的 gradle 基礎配置文件,默認的內容就是聲明了 android gradle plugin 的版本。

9GAG/settings.gradle
這個文件是全局的項目配置文件,里面主要聲明一些需要加入 gradle 的 module,我們來看看 9GAG 該文件的內容:

7. 如何正確導入下載的開源項目?

我們經常會在 GitHub 發現一些優秀的開源項目,然后想要下載學習,然而第一步一般都是把源碼導入到 AS 里,然后運行起來看下效果,但是經常會運行失敗,這里我來給大家說下導入開源項目的正確姿勢:

下載一個Demo,先打開每個 module下的 gradle 文件,即 app 目錄下的 build.gradle 以及各個 library 下的 build.gradle ,首先查看 compileSdkVersion 和 buildToolsVersion,因為有些時候你本地的版本和下載的版本不一致,那么就會導致失敗。

然后就是檢查 gradle-wrapper ,Google 有些時候要求不同的 AS 支持不同的 gradle 版本。比如 AS 1.0 的時候要求必須使用 gradle 1.x 的版本,等到 AS 2.0 的時候,Google 不支持 gradle1.x 的版本,這個時候你必須手動更新下 android gradle plugin 的版本,然后重新同步下。

檢查以上兩個地方基本就可以導入并運行了,如果還有其他問題,那可能就是環境或者項目本身的問題了。

8. 認識下幾個命令

上面提到了,假設我們沒有 IDE ,只有類似 Sublime、Atom、Vim這種輕量編輯器怎么辦?那我們就沒法開發 Android 了么?然而只要有構建工具,不需要 IDE 我們一樣有辦法開發,這個時候我們就需要用到幾個有用的 Gradle 命令了:

./gradlew -v 版本號

./gradlew clean 清除9GAG/app目錄下的build文件夾

./gradlew build 檢查依賴并編譯打包

這里注意的是 ./gradlew build 命令把 debug、release 環境的包都打出來,如果正式發布只需要打 Release 的包,該怎么辦呢,下面介紹一個很有用的命令 assemble , 如

./gradlew assembleDebug 編譯并打Debug包

./gradlew assembleRelease 編譯并打Release的包

值得注意的是,以上所有命令都是在終端里執行,并且必須要切換到所在項目的根目錄下執行,win系統直接執行 gradlew 。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作具有一定的參考學習價值,謝謝大家對VEVB武林網的支持。如果你想了解更多相關內容請查看下面相關鏈接


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品久久久久久搜索| 超碰97人人做人人爱少妇| 午夜精品一区二区三区av| 在线看国产精品| 久久精品国产免费观看| 欧美日韩午夜激情| 亚洲va久久久噜噜噜久久天堂| 欧美网站在线观看| 国产va免费精品高清在线观看| 亚洲自拍偷拍视频| 欧美激情videos| 在线观看日韩专区| 亚洲成人av片| 久久精品视频一| 中文字幕国产亚洲| 伊人久久综合97精品| 精品视频在线播放| 国产男人精品视频| 亚洲黄色有码视频| 欧美寡妇偷汉性猛交| 91亚洲精品久久久久久久久久久久| 奇米四色中文综合久久| 欧美激情精品久久久久久免费印度| 国产日韩在线亚洲字幕中文| 97超碰蝌蚪网人人做人人爽| 国产精自产拍久久久久久蜜| 欧美国产日韩免费| 日本精品久久久久久久| 亚洲国产美女精品久久久久∴| 91成人在线观看国产| 久久久亚洲网站| 亚洲风情亚aⅴ在线发布| 日韩精品电影网| 欧美韩日一区二区| 欧美午夜精品久久久久久浪潮| 久久精品人人爽| 高跟丝袜一区二区三区| 日韩在线观看免费高清| 中文字幕精品网| 亚洲成人黄色网址| 久久久久久久亚洲精品| 欧美风情在线观看| 亚洲毛片在线免费观看| 亚洲精品小视频| 96pao国产成视频永久免费| 亚洲黄色在线看| 亚洲精品之草原avav久久| 亚洲精品综合精品自拍| 国产精品久久av| 国产91在线播放精品91| 久久久欧美精品| 久久国产天堂福利天堂| 精品日本美女福利在线观看| 国产91露脸中文字幕在线| 中国日韩欧美久久久久久久久| 日韩电影免费观看中文字幕| 精品视频久久久| 成人乱人伦精品视频在线观看| 亚洲综合视频1区| 国产www精品| 欧美日韩综合视频网址| 日本久久精品视频| 亚洲码在线观看| 国产精品999| 91精品久久久久久久久久另类| 亚洲激情视频在线播放| 一区二区日韩精品| 国产精品美女免费看| 国产成人精品国内自产拍免费看| 亚洲一区制服诱惑| 国产精品久久久久国产a级| 狠狠躁天天躁日日躁欧美| 欧美一级电影久久| 中文字幕亚洲欧美一区二区三区| 亚洲精品丝袜日韩| 精品视频中文字幕| 亚洲性视频网站| 琪琪第一精品导航| 久久精品一区中文字幕| 国产精品自拍偷拍视频| 欧美孕妇毛茸茸xxxx| 中文国产成人精品| 国产日韩欧美日韩大片| 久久成人精品一区二区三区| 国产婷婷97碰碰久久人人蜜臀| 亚洲色图25p| 成人性教育视频在线观看| 97超级碰碰人国产在线观看| 欧美高清无遮挡| 97免费视频在线| 久久国产精品电影| 北条麻妃一区二区在线观看| 国产一区二区三区四区福利| 91精品国产色综合久久不卡98| 欧美小视频在线观看| 久久免费国产视频| 亚洲国产天堂久久国产91| 欧美另类暴力丝袜| 日韩欧美极品在线观看| 国产午夜精品免费一区二区三区| 亚洲成人国产精品| 日韩人体视频一二区| 日韩有码视频在线| 亚洲精品视频中文字幕| 北条麻妃一区二区三区中文字幕| 亚洲精品网址在线观看| 亚洲成人久久久| 国产aⅴ夜夜欢一区二区三区| 黄色成人av在线| 不卡av在线网站| 91热福利电影| 最近2019中文字幕在线高清| 热久久视久久精品18亚洲精品| 国产成人高清激情视频在线观看| 成人激情在线观看| 欧美日韩激情美女| 亚洲一区二区久久久久久久| 国产噜噜噜噜久久久久久久久| 欧美日韩国产成人在线观看| 欧美精品aaa| 亚洲视频综合网| 成人午夜一级二级三级| 日韩欧美成人网| 欧美专区第一页| 国产精品久久久久久久久影视| 国产精品男女猛烈高潮激情| 亚洲欧美日韩爽爽影院| 久久精品视频网站| 国内精品400部情侣激情| 欧美激情一级精品国产| 精品国偷自产在线视频99| 国产精品盗摄久久久| 亚洲国产精品久久| 国内揄拍国内精品| 91九色单男在线观看| 综合136福利视频在线| 伊人男人综合视频网| 日韩高清电影免费观看完整| 日韩电影大全免费观看2023年上| 久久精品国产成人精品| 欧美电影在线观看网站| 久久久www成人免费精品张筱雨| 乱亲女秽乱长久久久| 久久成人在线视频| 91精品久久久久久久久中文字幕| 日韩欧美国产黄色| 日韩成人在线视频网站| 欧美日韩高清在线观看| 欧美一级视频在线观看| 在线成人中文字幕| www.久久久久| 国产精品极品尤物在线观看| 亚洲国语精品自产拍在线观看| 欧美日产国产成人免费图片| 欧美孕妇孕交黑巨大网站| 91免费在线视频| 国内精久久久久久久久久人| 欧美国产在线视频| 综合激情国产一区| 国产精品黄色影片导航在线观看| 亚洲美女性视频| 亚洲黄色免费三级| 丝袜亚洲另类欧美重口| 亚洲精品综合久久中文字幕|