1. 程式人生 > >Android Studio 使用教程(4)---gradle專案構建

Android Studio 使用教程(4)---gradle專案構建

Android Studio 使用教程(四)之gradle專案構建

1、gradle的概念

2、gradle配置jar包,和libs資料夾匯入jar包的區別

3、簽名打包:

    (1)Studio

    (2)命令列

    (3)gradle wrapper的原理

4、BuildConfig的使用

5、簡單介紹module中build.gradle檔案引數含義

一、gradle的概念:

  • gradle是一個構建工具
  • gradle是以Groovy語言為基礎的
  • gradle主要面向的是Java語言

開啟Android Studio內建的終端,在輸入如下命令檢視gradle版本:

gradlew -v

如果是第一次執行這個命令,系統會幫我們下載gradle到本地,下載到的路徑是:

f0d528a1-b7cb-410d-978f-a5f975e24246

輸入上述命令後,檢視到gradle的版本2.2.1,如下圖所示:

74c0b9b1-ca40-49fc-bdbc-197c0786fa16

二、通過gradle來匯入jar包:

我們在上一篇文章中第二段的第3小節中講到了通過拷貝檔案到libs資料夾來匯入jar包。這次來講一下怎麼通過gradle來配置jar包。我們還是以谷歌的gjson.jar為例,如果之前已經通過拷貝檔案方式倒入過了,請先自行刪掉。

1、通過gradle配置第三方jar包

我們看到,每個module都有一個build.gradle檔案,它其實是對應module的配置檔案。關於build.gradle檔案中具體內容的含義,我們將在最後一段進行講解。

我們先來看一下名為app的這個module,它的build.gradle對應的圖形介面其實是下面這個Project Stucture:

a4eb5912-20cf-4f46-90ea-67bd27f192d8

上圖中,切換到dependencies標籤下,如下圖所示:

4f8405c6-942d-4ad1-af6c-680ed40089b9

上圖中,點選新增,然後選擇"Library dependency",彈出如下介面:

49c4a575-aec8-4f41-96c7-a667d5d1ddd7

上圖中,我們在搜尋框中輸入“gson”,然後確定,就彈出了箭頭處的我們需要的jar包,新增它即可:

646e1935-bdde-4429-9ff8-d70902d5b34f

之後我們會發現,app這個module的build.gradle中多了一行程式碼,表示引入了gson.jar:

b2841508-79d5-465d-ac3f-8ccc263b2008

其實,如果你能記得住上方這行程式碼,直接寫出程式碼來也是可以匯入的。

此時,gson這個jar包不再是出現在libs這個資料夾下了,而是出現在最下方的External Libraries中,如下圖所示:(而且是最新版本哦)

58f33bae-0e14-4d4c-886d-95811f4d88a0

2、gradle匯入jar包的特點:(和libs資料夾匯入jar包的區別)

  • gradle匯入jar包更方便,一行程式碼即可搞定。不像後者那樣還要自己去官方下載。
  • 如果官方將jar包更新了,我們只需要在build.gradle中改一下版本號就行了,不用重新去官網下載。

3、通過gradle匯入的jar包是從哪裡來的:

需要注意的是:不是所有的jar包都是可以通過gradle來匯入的。那通過gradle匯入的jar包是從哪裡來的呢?解釋如下:

我們發現HelloWorld這個project的目錄下有一個build.gradle檔案,開啟它:

b1590c7d-e046-46a5-a659-ee4ceb633054

上圖中第17行的"jcenter()"的意思是,所有通過gradle匯入的jar包都是從http://bintray.com/bintray/jcenter這個中央倉庫上扒下來的。如果你需要的jar包在這個網站上沒有,那就無法通過gradle的方式來匯入哦。

順便提一下,上圖中第8行的classpath中的gradle 1.1.0是android的一個gradle外掛(也是從中央倉庫扒下來的)。而我們自己使用的gradle版本如下圖所示:

452c7226-a262-4ccf-9b0f-8bd39ff59b42

我們自己下載好的gradle的路徑如下:

672d7347-1d2b-4acc-8dce-7ba3551357e8

三、簽名打包的兩種方式:

注:給我們自己開發的app簽名,就代表著我自己的版權,以後要進行升級,也必須要使用相同的簽名才行。簽名就代表著自己的身份(即keystore),多個app可以使用同一個簽名。

如果不知道簽名是啥意思,請自行百度哦。在eclipse中籤名的方法是:選中工程,郵件選擇"export-android-export android application",

1、方式1:通過Android Studio進行簽名:

選中app這個module,選擇選單欄"Build-Generate signed apk":

30d1daba-bdb4-4dde-9324-89293482a84e

彈出如下介面:

5a3058ac-cba2-44d1-84cf-b77b246bb4d1

上圖中,如果你是第一次使用簽名,就單擊紅框部分建立一個新的簽名;如果你之前有過簽名的檔案,就選擇藍框部分進行匯入即可。那我就先選擇紅框部分吧:

70ae6ac4-ed0b-4938-b3f5-229dba3fea29

3b69eb78-a2bc-408b-b49f-272b46b32a31

3ef16884-13b8-453f-bad5-b9dba1a667f7

f757b8aa-277b-45f0-9afd-403adc82082c

上圖中,點選"finish"之後,可以看到Android Studio的最下方顯示:Gradle正在執行assembleRelease這樣一個任務,如下圖所示:

bf6076fd-480d-48b4-bb1a-e2bfee785e5e

生成簽名好的apk之後,會彈出提示:

8b42d822-e3a2-4c66-aea4-6b2b4e83fef3

77cd9b25-b0f0-4f0b-85ec-c00b4e13b61b

2、方式2:通過命令列的方式進行簽名:

(1)載入Key Store:

我們先刪掉上面的通過第一種方式所簽名的apk檔案。接下來進行第二種方式來簽名,即命令列的方式。

開啟Project Stucture圖形化介面:

03458b6c-92b8-42be-ab1d-e2c3097570eb

d6d07e96-330b-40c6-bc22-32fc37391144

上圖中,選中app這個module,然後切換到singning標籤欄,緊接著點選新增,然後生成release簽名信息,緊接著點選"OK"。接著做如下操作:

c638147d-7741-4c63-9d3a-0066ac959219

上圖中,切換到Build Types標籤,將Signing config選擇為"release",即將剛剛生成的release簽名信息配置進去。

操作完成之後,我們可以看到app這個module的build.gradle檔案多出瞭如下紅框部分的程式碼:

f59c1858-e26a-41a4-96b5-f7e32eb6c8ac

然後執行選單欄的"build-clean Project":

a7af4c5b-23c2-4997-8d6f-47940c1a0f1c

(2)生成realease版本的apk:

緊接著在命令列Terminal輸入如下命令:(AS已經將命令列Terminal整合到了軟體當中)

gradlew assembleRelease

如果執行成功,效果如下:

74e21bb0-7afc-4bc6-9103-a4748f2003bf

生成的簽名好的apk在如下位置:

b8f81109-cf7f-4649-a4da-a4bb91a3c96a

3、為什麼要使用gradlew命令而不是gradle命令:

在HelloWorld工程目錄下有一個gradle資料夾,在gradle/wrapper目錄下有一個gradle-wrapper.properties檔案,開啟它:

c5bb106f-081e-40d8-816e-ea04a4814977

上圖代表著HelloWorld這個工程所依賴的gradle的版本資訊。上圖的紅線表示,如果我們的工程中沒有gradle,軟體會根據這個url去下載gradle,終於知道為啥第一次開啟AS時會這麼慢了吧?

如果我們執行了gradlew命令,實際上是執行上面的gradle wrapper,然後找到我們已經下載好的gradle 2.2.1。如果現在有很多個工程,但是每個工程的gradle版本都不一樣,我就必須要將每個版本的gradle都要配置到環境變數當中,而執行了gradlew命令,就會避免這個麻煩。

四、BuildConfig檔案:

BuildConfig是IDE自動生成的一個類,在elipse中即存放在gen目錄下(如R檔案)。而在Adroid Studio中,BuildConfig檔案存放的位置是:app/build/generated/source/buildconfig/dubug/<packagename>/BuildConfig.java中。如下圖所示:

42c80b8f-7e10-4e57-bacb-178a0ae4fc56

五、module中build.gradle檔案引數含義:

主要是module的build.gradle,截圖如下:

1518e471-4c75-4610-89f5-47ba9bc701f8

01行:apply plugin: 'com.android.application'    表示該module是這個應用程式的module

15行:applicationId "com.smyhvae.helloworld"    應用程式的包名

16、17行:向下相容的最小版本、編譯版本。    注:在app/src/main/AndroidManifest.xml中不再出現這個資訊了。

23行:需不需要利用24行的proguard檔案來混淆程式碼。在release狀態下,最好改為true。