Ant,Maven與Gradle的概念的理解

轉載地址:http://www.jianshu.com/p/cd8fe9b16369#html

 

 

咱們仍是以AndroidStudio 2.1.1爲例來說。java

用AndroidStudio就逃不開跟Gradle打交道,有人說這個東西很簡單,就是一些配置,不用管,但我認爲不是,引入一個工程編譯都沒法經過,而你又不知道錯在哪,這怎麼行呢?仍是有必要了解一下的。其實我本身也不是很熟悉Gradle,這裏只能是把我瞭解的簡單說一下,若有不正確歡迎指正。linux

1、基本概念

那麼什麼是Gradle呢?我不想複製網上那些話了,太難懂。其實我理解的話,在AndroidStudio中,它就是個打包apk的工具,它能夠把你寫的Java代碼、C++代碼和資源文件通過編譯、連接等操做,最終打包成一個apk,有人把這個過程叫作「構建(build)」,好吧,咱們也這麼叫,Gradle就是用來構建項目的一個工具。android

這裏先給你們推薦一個連接,講的至關不錯,我當初也是看這篇文章的:git

Grade入門github

咱們下面也是基於這篇文章作一個簡單的歸納。shell

2、Gradle與Ant、Maven之間的關係

其實在AndroidStudio出來以前,咱們在eclipse中也有構建項目的概念,當時用的實際上是一款叫作ant的工具,google給咱們集成到SDK中了,是Apach基金組織推出的一個構建項目的工具,咱們當初之因此能把一大堆Java代碼和圖片打包成一個apk主要靠它。windows

而後熟悉J2EE開發的同窗可能用過一款叫作maven的工具,什麼叫maven呢?maven也是Apach基金組織推出的一款工具,簡單的說就是幫咱們下載jar包、而且經過配置xml文件使jar包能被咱們的Java代碼引用的一個工具,咱們用eclipse作Android開發時其實不多有用到maven,都是直接從網上下載個jar包拷到工程目錄下用。那麼在使用Gradle以後,咱們在Android項目中也能夠用maven了,想用什麼jar包,直接填寫在gradle配置文件中,jar包就會自動幫咱們下載到工程中,還能經過配置讓jar包時刻保持最新版本,若是你網絡條件好的話,用maven仍是比較方便的。api

那麼Gradle其實就是融合了ant和maven的功能,即能構建項目,又能從網上的maven網站中自動幫咱們下載jar包。瀏覽器

3、AndroidStudio中與Gradle相關的文件

打開AndroidStudio,新建一個工程,就能夠看到以下目錄結構:


AndroidStudio中跟Gradle配置相關的文件

若是你看到的目錄結構跟圖中不同,請點擊目錄頂端的區域,切換工程視圖顯示方式,默認的視圖形式的名稱叫作Android,推薦使用Project。

(1)從圖中能夠看出,在app模塊下,有一個build.gradle文件,這個gradle文件是整個項目中最重要的一個gradle文件,咱們從此主要跟這個文件打交道;

(2)grade-wrapper.properties文件,這個文件中主要是告訴開發工具,若是咱們的電腦中找不到Gradle工具,那麼要到哪一個網址去下載Gradle工具,下載哪一個版本的;

(3)整個工程目錄下的build.gradle文件,這個文件跟模塊下的build.gradle文件名字相同,可是是負責整個工程全部模塊的構建的(一個工程有可能包含多個模塊,好比你的項目中還可能有一個Library);

(4)settings.gradle文件,這個文件最簡單,就是告訴gradle工具我這個工程中包含哪幾個模塊;

OK,如今一個一個來解釋這幾個文件中的內容,不按上邊的顯示順序了,先挑簡單的來講吧:

一、先來講一下settings.gradle,由於這個文件是最簡單的,打開這個文件,你會看到以下內容:

 


settings.gradle

看到了吧,只有一行,include ':app',意思是咱們這個工程中目前只有一個模塊,模塊的名字叫作app,書寫格式是include關鍵字後邊跟一對單引號,單引號中是模塊名稱,名稱前邊還加了一個冒號,不要問爲何,這就是規定,若是你的工程中有多個模塊,那麼就是多對單引號,好比

include ':app',':library'

中間用英文逗號隔開便可;

二、grade-wrapper.properties是第二簡單的文件了,打開這個文件能夠看到下圖所示內容:


grade-wrapper.properties

上面已經說了,這個文件就是告訴系統若是咱們的電腦上沒有Gradle工具,要到哪一個網址下載,因此整個文件最重要的一行就是最後一行了,其中https\中的反斜槓是一個轉義符,不用糾結它,上面的那些distributionPath之類的配置是告訴系統若是須要下載Gradle工具的,下載完要保存在哪裏,這個不用太糾結;

三、整個工程下的build.gradle文件,打開這個文件能夠看到以下所示內容:


整個工程下的build.gradle

這個文件也很簡單,主要分紅兩個結點,buildscript結點是標明Gradle工具自己要怎麼配置,Gradle工具自己要從哪一個maven倉庫下載,咱們這裏默認使用的是一個叫作jcenter的maven倉庫,所謂maven倉庫其實就是個網站,jcenter的網址是http://jcenter.bintray.com,用瀏覽器打開能夠看到裏邊按目錄存放了不少jar包和其它的庫文件,除了jcenter以外,經常使用的maven倉庫還有mavenCentral等。

下邊的allprojects標籤的意思是咱們工程裏邊全部模塊的通用配置,這裏只規定全部模塊中要用到的jar包也都從jcenter這個maven倉庫中獲取 ,在allprojects標籤下配置的好處是你不須要再在每一個模塊下的build.gradle中單獨配置了,若是你想在每一個模塊下單獨指定用哪一個maven倉庫,那麼你在這個全局的build.gradle中也能夠不寫;

四、接下來就到最複雜的,也是最經常使用的了,就是咱們模塊下的build.gradle文件,打開這個文件,能夠看到以下圖所示內容:


模塊下的build.gradle

我挑幾個重要的點說吧,不重要的就不說了,從上往下看:

(1)apply plugin標籤

首先第一行,apply plugin,這個是Gradle工具規定的寫法,意思是咱們要使用什麼插件來構建項目,後邊跟的是插件名稱,com.android.application是Google經過Gradle的api,使用Groovy語言編寫的一個插件,用於構建Android主工程,至關於eclipse中的ADT插件。

若是這個模塊是一個Library的話,應該引入的插件叫作'com.android.library',若是你熟悉Gradle的api的話也能夠寫本身的插件,github上有許多輔助Android開發的插件,下載下來就是個jar包,能夠引入AndroidStudio中,有興趣的能夠去了解一下;

(2)版本以及包名等常規配置

再下邊的android標籤下就是咱們主要關注的地方了,compileSdkVersion是咱們要用Android哪一個版本的api,等同於eclipse項目中project.properties文件配置的target=android-xx,xx是版本號,好比target=android-23;

buildToolsVersion,這個是構建工具的版本號,與咱們在代碼中調用的api沒什麼關係,是打包用的,建議用比較新的版本,由於我曾經用比較舊的19.0.1版本時發現不少坑;

applicationId,這個就是咱們應用的惟一標識:包名。在eclipse中是配置在AndroidManifest.xml文件中的,在AndroidStudio中改成配置在build.gradle中了,這裏注意若是你這個模塊是Library,那麼要把這行刪掉,若是你在Library模塊中也配置了applicationId的話到時候會在手機屏幕上看到兩個應用圖標,很怪;

應用版本號應該不用說了,用過eclipse的同窗應該很熟悉了,無非就是把之前在AndroidManifest.xml文件中配置的東西搬到這裏來而已;

(3)buildTypes標籤,這個是重點

再下邊的buildTypes,這個標籤大有文章,代表咱們能夠打哪些類型的apk包,新建工程中只有一個release類型,意思是正式發佈的apk要怎麼打包。

buildTypes下除了release標籤,默認的還有一個叫作debug的標籤。在這些標籤下,咱們能夠指定要用到的混淆文件在哪一個目錄下,簽名文件(keystore)在哪一個目錄下,簽名文件的密碼之類的,若是你沒配置的話就使用默認值,若是想改的要怎麼改呢?以下圖:


自定義打包類型

如上圖所示,咱們須要在android標籤下調用一個signingConfigs標籤,這個標籤其實也是com.android.application插件中的,在下邊隨意增長配置,myConfig這個名字是隨意起的,默認的有兩個:release和debug,若是你想修改默認的打包配置就到這兩個標籤下改,若是想本身寫一個就像圖中這樣寫一個myConfig就能夠了,裏邊寫上用哪一個keystore文件,keystore的密碼,而後不要忘了在buildTypes標籤引用就能夠了;

那麼這些標籤訂義好以後要怎麼使用呢?最經常使用的使用方式就是經過命令行要調用,在AndroidStudio中自帶命令行工具,打開以後就能夠自動定位到當前工程目錄下,而後在命令行輸入:

./gradlew build構建類型名稱

便可執行相應的構建任務,以下圖所示:


打開命令行工具並輸入命令

其中構建類型名稱就是咱們在buildTypes下配置的構建類型標籤的名稱,而且要以大寫字母開頭(這也是規定),好比上圖中輸入

./gradlew buildDebug

就會執行咱們在buildTypes下配置的debug標籤下的任務,而後在app/build/outputs/apk目錄下會生成一個apk文件,以下圖所示:


用命令行生成的apk文件

其實「任務」也是Gradle中的基本概念之一,Gradle把作一件相對完整的事情叫作一個任務,好比你在命令行輸入

./gradlew clean

就會執行"clean"任務,咱們也能夠自定義buildTypes,好比下圖所示的這樣:


自定義buildType

名字隨便起,而後咱們在命令行輸入

./gradlew buildMyBuildType

就能夠執行咱們自定義的任務了;

(4)dependencies標籤

這個標籤下就是咱們依賴的jar包,第三方庫,或者library工程,以下圖所示:


dependencies

這幾行是新建工程默認生成的,其中第一行

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

這一行的配置很重要,代表咱們工程中要用到的jar包均可以放在app下的libs目錄中,有了這一行配置,咱們就能夠放心的把jar包放在libs目錄下,而不須要再作額外的配置了,跟eclipse下基本同樣了,是否是很方便;

而後再往下

compile 'com.android.support:appcompat-v7:23.4.0'

這一行就是代表到maven庫中找v7支持包,仔細觀察的話,這句話中單引號中內容被冒號分紅了三個部分,com.android.support是這個支持包在maven庫中的存放路徑,appcompat-v7是這個包的名稱,23.4.0是這個包的版本,有了這個配置,Gradle工具就會到咱們在全局gradle文件中指定的maven庫中下載相應的支持包了,其中版本號這個東西頗有意思,你能夠不寫23.4.0,你能夠寫成23.4.+,意思就是若是支持包出了新版本,好比出了23.4.1,那麼就用23.4這個分支下的最新版本,若是寫成23.+,就是始終使用23這個版本下最新的分支版本,若是乾脆寫成一個+號,好比像下面這樣

compile 'com.android.support:appcompat-v7:+'

就是告訴編譯器,我要始終使用最新版的v7支持包,是否是比咱們手動拷貝jar包或aar包要靈活多了,不過仍是不建議這樣寫,由於gradle會始終訪問網絡去查詢有沒有新的包,國內的網速你懂的,並且你也沒法肯定最新的包是否是必定適合你,有沒有兼容舊版的代碼。

而後dependencies標籤下還能夠配置咱們引用了哪些Library模塊(對應eclipse下的Library工程),若是咱們的app主模塊有引用Library工程,就必定要在dependencies標籤下指定Library,像下面這樣:

compile project(':my-library-module')

project後面括號中的內容要與前面所說的settings.gradle文件中寫的模塊名稱一致,也是以冒號開頭,而且用單引號括起來。

OK,關於Gradle配置的內容暫時先說這麼多吧,由於我也不是很懂,更詳細的內容必定要看一下文章開頭推薦的那個連接Gradle入門,這篇文章講的很淺顯,也很全面。


 

隨着Android Studio愈來愈完善,更多的開發者捨棄掉Eclipse。可是新的IDE與以往的Eclipse有很大區別,這致使部分開發者望而卻步,其中一個你們以爲比較麻煩的是Android Studio採用的新的構建系統,gradle。那麼這篇文章我將對gradle進行一個簡單介紹(主要講gradle配合Android Studio的使用),但願幫助你們熟悉gradle。

一. gradle是什麼?

gradle跟ant/maven同樣,是一種依賴管理/自動化構建工具。可是跟ant/maven不同,它並無使用xml語言,而是採用了Groovy語言,這使得它更加簡潔、靈活,更增強大的是,gradle徹底兼容maven和ivy。更多詳細介紹能夠看它的官網:http://www.gradle.org/

二.爲何使用gradle?

更容易重用資源和代碼;
能夠更容易建立不一樣的版本的程序,多個類型的apk包;
更容易配置,擴展;
更好的IDE集成;

三.gradle入門需知

1.基本配置:

首先明確gradle跟maven同樣,也有一個配置文件,maven裏面是叫pom.xml,而在gradle中是叫build.gradle。Android Studio中的android項目一般至少包含兩個build.gradle文件,一個是project範圍的,另外一個是module範圍的,因爲一個project能夠有多個module,因此每一個module下都會對應一個build.gradle。這麼說有點抽象,看下面這個圖:

這是一個android工程的project視圖,上面那個是module下的build.gradle文件。下面那個是project下的build.gradle文件。這兩個文件是有區別的,project下的build.gradle是基於整個project的配置,而module下的build.gradle是每一個模塊本身的配置。下面看下這兩個build.gradle裏面的內容:

project#build.gradle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
// Top-level build file where you can add configuration options common to all sub-projects/modules.
 
buildscript {
     //構建過程依賴的倉庫
     repositories {
     jcenter()
}
//構建過程須要依賴的庫
dependencies {
      //下面聲明的是gradle插件的版本
      classpath 'com.android.tools.build:gradle:1.1.0'
      // NOTE: Do not place your application dependencies here; they belong
      // in the individual module build.gradle files
}
}
//這裏面配置整個項目依賴的倉庫,這樣每一個module就不用配置倉庫了
allprojects {
      repositories {
           jcenter()
      }
}

注:你們可能很奇怪,爲何倉庫repositories須要聲明兩次,這實際上是因爲它們做用不一樣,buildscript中的倉庫是gradle腳本自身須要的資源,而allprojects下的倉庫是項目全部模塊須要的資源。因此你們千萬不要配錯了。

module#build.gradle:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
//聲明插件,這是一個android程序,若是是android庫,應該是com.android.library
apply plugin: 'com.android.application'
android {
      //安卓構建過程須要配置的參數
      compileSdkVersion 21//編譯版本
      buildToolsVersion "21.1.2"//buildtool版本
      defaultConfig {//默認配置,會同時應用到debug和release版本上
      applicationId "com.taobao.startupanim"//包名
      minSdkVersion 15
      targetSdkVersion 21
      versionCode 1
      versionName "1.0"
}
  buildTypes {
      //這裏面能夠配置debug和release版本的一些參數,好比混淆、簽名配置等
      release {
          //release版本
          minifyEnabled false//是否開啓混淆
          proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'//混淆文件位置
      }
}
}
dependencies {
      //模塊依賴
      compile fileTree(dir: 'libs', include: ['*.jar'])//依賴libs目錄下全部jar包
      compile 'com.android.support:appcompat-v7:21.0.3'//依賴appcompat庫
}

defaultConfig中是一些基本配置,它會同時應用到debug/release版本上,下面列舉了全部可配項及對應的值:

buildTypes結點很重要,這裏能夠配置構建的版本的一些參數,默認有兩個構建版本release/debug,固然你能夠自定義一個構建版本,好比叫foo,而後經過gradlew assembleFoo就能夠生成對應的apk了。

buildTypes裏還有不少可配置項,下面列舉了全部可配項以及debug/release版本的默認值:

如今你們對build.gradle已經初步瞭解了,咱們再看下其餘一些與gradle相關的文件:
 
1.gradle.properties:
 
從名字上就知道它是一個配置文件,沒錯,這裏面能夠定義一些常量供build.gradle使用,好比能夠配置簽名相關信息如keystore位置,密碼,keyalias等。
 
2.settings.gradle:
 
這個文件是用來配置多模塊的,好比你的項目有兩個模塊module-a,module-b,那麼你就須要在這個文件中進行配置,格式以下:
1
include ':module-a',':module-b'
3.gradle文件夾:
 
這裏面有兩個文件,gradle-wrapper.jar和gradle-wrapper.properties,它們就是gradle wrapper。gradle項目都會有,你能夠經過命令gradle init來建立它們(前提是本地安裝了gradle而且配置到了環境變量中)。
 
4.gradlew和gradlew.bat:
 
這分別是linux下的shell腳本和windows下的批處理文件,它們的做用是根據gradle-wrapper.properties文件中的distributionUrl下載對應的gradle版本。這樣就能夠保證在不一樣的環境下構建時都是使用的統一版本的gradle,即便該環境沒有安裝gradle也能夠,由於gradle wrapper會自動下載對應的gradle版本。
 
gradlew的用法跟gradle如出一轍,好比執行構建gradle build命令,你能夠用gradlew build。gradlew即gradle wrapper的縮寫。
 
2.gradle倉庫:
 
gradle有三種倉庫,maven倉庫,ivy倉庫以及flat本地倉庫。聲明方式以下:
1
2
3
4
5
6
7
8
9
maven{
       url "..."
}
ivy{
       url "..."
}
flatDir{
       dirs 'xxx'
}

有一些倉庫提供了別名,可直接使用:

1
2
3
4
5
repositories{
      mavenCentral()
      jcenter()
      mavenLocal()
}
3.gradle任務:
 
gradle中有一個核心概念叫任務,跟maven中的插件目標相似。
gradle的android插件提供了四個頂級任務
1
2
3
4
assemble 構建項目輸出
check 運行檢測和測試任務
build 運行assemble和check
clean 清理輸出任務

執行任務能夠經過gradle/gradlew+任務名稱的方式執,執行一個頂級任務會同時執行與其依賴的任務,好比你執行

1
gradlew assemble

它一般會執行:

1
2
gradlew assembleDebug
gradlew assembleRelease
這時會在你項目的build/outputs/apk或者build/outputs/aar目錄生成輸出文件
 
注:linux下執行構建任務須要首先更改gradlew腳本的權限,而後才能執行該腳本:
1
2
chmod +x gradlew
./gradlew assemble

能夠經過:

1
gradlew tasks

列出全部可用的任務。在Android Studio中能夠打開右側gradle視圖查看全部任務。

四.常見問題

1.導入本地jar包:
 
跟eclipse不太同樣,android studio導入本地jar除了將jar包放到模塊的libs目錄中之外,還得在該模塊的build.gradle中進行配置,配置方式是在dependencies結點下進行以下聲明:
1
compile files('libs/xxx.jar')

若是libs下有多個jar文件,能夠這樣聲明:

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

2.導入maven庫:

1
compile 'com.android.support:appcompat-v7:21.0.3'

可見,格式爲

1
compile 'groupId:artifactId:version'
3.導入某個project:
你的app是多模塊的,假設有兩個模塊app和module-A,而且app模塊是依賴module-A的,這時候咱們就須要在app模塊的build.gradle中的dependencies結點下配置依賴:
1
compile project(':module-A')

而且你須要在settings.gradle中把module-A模塊包含進來:

1
include ':module-A',':app'

此外,這種狀況下module-A模塊是做爲庫存在的,於是它的build.gradle中的插件聲明一般應該是這樣的:

1
apply plugin: 'com.android.library'

並且,做爲library的模塊module-A的build.gradle文件的defaultConfig中是不容許聲明applicationId的,這點須要注意。

4.聲明三方maven倉庫:
可能你項目須要的一些庫文件是在大家公司的***上,這時候repositories中僅有jcenter就不行了,你還須要把***地址配到裏面來,注意,應該配到project的build.gradle中的allprojects結點下或者直接配到某個模塊中若是僅有這個模塊用到。
配置方式:
1
2
3
4
5
repositories{
      maven{
           url="http://mvnrepo.xxx.com"
      }
}

5.依賴三方aar文件:

1
compile 'com.aaa.xxx:core:1.0.1@aar'

6.將庫項目導出爲aar:
首先你的項目必須是一個庫項目,build.gradle中進行配置:

1
apply plugin : 'com.android.library'

而後你能夠在命令行中進到項目目錄,執行以下gradle任務:

1
gradlew assembleRelease//確保該目錄下有gradlew文件

生成的aar在/build/output/aar文件夾中
7.引用本地aar:
首先將aar文件放到模塊的libs目錄下,而後在該模塊的build.gradle中聲明flat倉庫:

1
2
3
4
5
repositories{
     flatDir{
           dirs 'libs'
     }
}

最後在dependencies結點下依賴該aar模塊:

1
2
3
dependencies{
       compile (name:'xxx',ext:'aar')
}
8.排除依賴:
當出現依賴衝突的時候能夠經過排除依賴解決,具體方式以下:
1
2
3
compile (group:'xxx',name:'xxx',version:'xxx'){
       exclude group:'xxx',module:'xxx'//module對應的就是artifactId
}

9.多dex支持(打包65k方法數限制)

 首先在build.gradle的buildConfig中增長以下配置:
1
multiDexEnabled true

接着,在dependencies結點下增長以下依賴:

1
2
3
dependencies{
compile 'com.android.support:multidex:1.0.0'
}

最後,讓你的Application繼承MultiDexApplication,若是你的應用沒有聲明Application,能夠在manifest文件的application結點下增長name屬性,值爲android.support.multidex.MultiDexApplication。

詳細內容參見官方文檔。

10.自動移除不用資源

能夠在buildTypes結點中增長以下配置:

1
2
3
4
5
6
buildTypes{
      release{
            minifyEnabled true
            shrinkResources true
      }
}

11.忽略lint錯誤:

能夠在build.gradle文件中的android結點下增長以下配置:

1
2
3
4
5
android{
      lintOptions{
            abortOnError false
      }
}

12.聲明編譯的java版本

能夠在build.gradle文件中的android結點下增長以下配置:

1
2
3
4
compileOptions {
      sourceCompatibility JavaVersion.VERSION_1_7
      targetCompatibility JavaVersion.VERSION_1_7
}

13.應用簽名配置

首先在module的build.gradle中增長這些字段:

1
2
3
4
storeFiles:keystore文件存儲位置,一般是.jks文件
storePassword 密碼
keyAlias keystore別名
keyPassword 密碼

具體配置方式爲:

首先在build.gradle的android結點下增長以下配置:

1
2
3
4
5
6
7
8
9
10
11
signingConfigs {
      //debug版本的簽名配置,一般不用配,由於有默認的debug簽名
      debug {
      }
      release {
           storeFile file("key.jks")
           storePassword "123456"
           keyAlias "mykey"
           keyPassword "123456"
      }
}

注:debug的默認簽名爲:

1
signingConfig android.signingCongfigs.debug

位置爲

1
${home}\.android\debug.keystore

而後在buildTypes結點下的對應版本中添加上面的配置:

1
2
3
4
5
buildTypes{
      release{
           signingConfig signingConfigs.release
      }
}

固然,release不是固定的名稱,你能夠隨便取,好比這樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
android {
      signingConfigs {
           debug {
                 storeFile file("debug.keystore")
           }
           myConfig {
                 storeFile file("other.keystore")
                 storePassword "android"
                 keyAlias "androiddebugkey"
                 keyPassword "android"
           }
      }
      buildTypes {
           foo {
                debuggable true
                jniDebuggable true
                signingConfig signingConfigs.myConfig
          }
     }
}

真實開發中,把密碼配置到build.gradle中不是很好的作法,最好的作法是放在gradle.properties中:

1
2
3
4
RELEASE_STOREFILE=xxx.jks
RELEASE_STORE_PASSWORD=123456
RELEASE_KEY_ALIAS=mykey
RELEASE_KEY_PASSWORD=123456

而後直接引用便可:

1
2
3
4
storeFile file(RELEASE_STOREFILE)
storePassword RELEASE_STORE_PASSWORD
keyAlias RELEASE_KEY_ALIAS
keyPassword RELEASE_KEY_PASSWORD

14.定製buildConfig:

在build.gradle中配置:

1
2
3
4
5
6
7
8
buildTypes{
       release{
             buildConfigField "string","type","\"release\""
       }
       debug{
             buildConfigField "string","type","\"debug\""
       }
}

這樣就會在BuildConfig類中生成type字段:

1
2
3
4
//build/generate/source/buildConfig/release/包名/   路徑下的BuildConfig.java
public static final String type = "release"
//build/generate/source/buildConfig/debug/包名/    路徑下的BuildConfig.java
public static final String type = "debug
相關文章
相關標籤/搜索