1. <nobr id="easjo"><address id="easjo"></address></nobr>

      <track id="easjo"><source id="easjo"></source></track>
      1. 
        

      2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
      3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>
          貴州做網站公司
          貴州做網站公司~專業!靠譜!
          10年網站模板開發經驗,熟悉國內外開源網站程序,包括DEDECMS,WordPress,ZBlog,Discuz! 等網站程序,可為您提供網站建設,網站克隆,仿站,網頁設計,網站制作,網站推廣優化等服務。我們專注高端營銷型網站,企業官網,集團官網,自適應網站,手機網站,網絡營銷,網站優化,網站服務器環境搭建以及托管運維等。為客戶提供一站式網站解決方案?。?!

          buildgradle軟件下載(Android中build.gradle文件的作用是什么)

          來源:互聯網轉載 時間:2024-05-02 10:11:26

          一、什么是Gradle

          gradle是一個項目構建工具,java開發中有兩個大名鼎鼎的項目構建Maven,Ant,其中maven簡單易控深受開發者喜愛。
          項目構建工具是什么?能干嗎?

          開發某些項目時,需要很多jar或者庫的支持,還沒開始開發就下載了n多個庫,浪費了時間不說,這些庫之間兼容性又無法保證。刪了?白下載了。不刪?又不兼容。此時就需要使用項目構建工具,簡單的說就是一個可以根據簡單的配置文件自動去下載相應包/庫的軟件。自動的還很簡單,不用豈不虧了。多個項目構建工具各有特點,但是核心思想一樣。

          簡單的說,Gradle是一個構建工具,它是用來幫助我們構建app的,構建包括編譯、打包等過程。我們可以為Gradle指定構建規則,然后它就會根據我們的“命令”自動為我們構建app。Android Studio中默認就使用Gradle來完成應用的構建。有些同學可能會有疑問:”我用AS不記得給Gradle指定過什么構建規則呀,最后不還是能搞出來個apk?!?實際上,app的構建過程是大同小異的,有一些過程是”通用“的,也就是每個app的構建都要經歷一些公共步驟。因此,在我們在創建工程時,Android Studio自動幫我們生成了一些通用構建規則,很多時候我們甚至完全不用修改這些規則就能完成我們app的構建。

          有些時候,我們會有一些個性化的構建需求,比如我們引入了第三方庫,或者我們想要在通用構建過程中做一些其他的事情,這時我們就要自己在系統默認構建規則上做一些修改。這時候我們就要自己向Gradle”下命令“了,這時候我們就需要用Gradle能聽懂的話了,也就是Groovy。Groovy是一種基于JVM的動態語言,關于它的具體介紹,感興趣的同學可以文末參考”延伸閱讀“部分給出的鏈接。

          我們在開頭處提到“Gradle是一種構建工具”。實際上,當我們想要更靈活的構建過程時,Gradle就成為了一個編程框架——我們可以通過編程讓構建過程按我們的意愿進行。也就是說,當我們把Gradle作為構建工具使用時,我們只需要掌握它的配置腳本的基本寫法就OK了;而當我們需要對構建流程進行高度定制時,就務必要掌握Groovy等相關知識了。限于篇幅,本文只從構建工具使用者的角度來介紹Gradle的一些最佳實踐,在文末“延伸閱讀”部分給出了幾篇高質量的深入介紹Gradle的文章,其中包含了Groovy等知識的介紹。

          二、Gradle的基本組分

          1.Project和Task

          在Gradle中,每一個待構建的工程是一個Project,構建一個Project需要執行一系列Task,比如編譯、打包這些構建過程的子過程都對應著一個Task。具體來說,一個apk文件的構建包含以下Task:Java源碼編譯、資源文件編譯、Lint檢查、打包以生成最終的apk文件等等。

          2.插件

          插件的核心工作有兩個:一是定義Task;而是執行Task。也就是說,我們想讓Gradle能正常工作,完成整個構建流程中的一系列Task的執行,必須導入合適的插件,這些插件中定義了構建Project中的一系列Task,并且負責執行相應的Task。
          在新建工程的app模塊的build.gradle文件的第一行,往往都是如下這句:

          apply plugin: 'com.android.application'

          這句話的意思就是應用“com.android.application“這個插件來構建app模塊,app模塊就是Gradle中的一個Project。也就是說,這個插件負責定義并執行Java源碼編譯、資源文件編譯、打包等一系列Task。實際上"com.android.application"整個插件中定義了如下4個頂級任務:

          assemble: 構建項目的輸出(apk)

          check: 進行校驗工作

          build: 執行assemble任務與check任務

          clean: 清除項目的輸出

          當我們執行一個任務時,會自動執行它所依賴的任務。比如,執行assemble任務會執行assembleDebug任務和assembleRelease任務,這是因為一個Android項目至少要有debug和release這兩個版本的輸出。

          3.Gradle配置文件

          我們在Android Studio中新建一個工程,可以得到如下的工程結構圖:

          上面我們說過,Android Studio中的一個Module即為Gradle中的一個Project。上圖的app目錄下,存在一個build.gradle文件,代表了app Module的構建腳本,它定義了應用于本模塊的構建規則。我們可以看到,工程根目錄下也存在一個build.gradle文件,它代表了整個工程的構建,其中定義了適用于這個工程中所有模塊的構建規則。

          接下來我們介紹一下上圖中其他幾個Gradle配置文件:

          gradle.properties: 從它的名字可以看出,這個文件中定義了一系列“屬性”。實際上,這個文件中定義了一系列供build.gradle使用的常量,比如keystore的存儲路徑、keyalias等等。

          gradlew與gradlew.bat: gradlew為Linux下的shell腳本,gradlew.bat是Windows下的批處理文件。gradlew是gradle wrapper的縮寫,也就是說它對gradle的命令進行了包裝,比如我們進入到指定Module目錄并執行“gradlew.bat assemble”即可完成對當前Module的構建(Windows系統下)。

          local.properties: 從名字就可以看出來,這個文件中定義了一些本地屬性,比如SDK的路徑。

          settings.gradle: 假如我們的項目包含了不只一個Module時,我們想要一次性構建所有Module以完成整個項目的構建,這時我們需要用到這個文件。比如我們的項目包含了ModuleA和ModuleB這兩個模塊,則這個文件中會包含這樣的語句:include ':ModuleA', ':ModuleB'。

          4.構建腳本

          首先我們來看一下工程目錄下的build.gradle,它指定了真個整個項目的構建規則,它的內容如下:

          //Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/modules.buildscript{repositories{google()jcenter()//構建腳本中所依賴的庫都在jcenter倉庫下載}dependencies{classpath'com.android.tools.build:gradle:3.2.1'//指定了gradle插件的版本//NOTE:Donotplaceyourapplicationdependencieshere;theybelong//intheinpidualmodulebuild.gradlefiles}}allprojects{repositories{google()jcenter()//當前項目所有模塊所依賴的庫都在jcenter倉庫下載}}taskclean(type:delete){deleterootProject.buildDir}

          我們再來簡單介紹下app模塊的build.gradle的內容:

          applyplugin:'com.android.application'//加載用于構建Android項目的插件android{//構建Android項目使用的配置compileSdkVersion28//指定編譯項目時使用的SDK版本defaultConfig{applicationId"com.example.ssts.myapplication"//包名minSdkVersion15//指定支持的最小SDK版本targetSdkVersion28//針對的目標SDK版本versionCode1versionName"1.0"testInstrumentationRunner"android.support.test.runner.AndroidJUnitRunner"}buildTypes{//針對不同的構建版本進行一些設置release{//對release版本進行的設置minifyEnabledfalse//是否開啟混淆proguardFilesgetDefaultProguardFile('proguard-android.txt'),'proguard-rules.pro'//指定混淆文件的位置}}}dependencies{//指定當前模塊的依賴implementationfileTree(dir:'libs',include:['*.jar'])implementation'com.android.support:appcompat-v7:28.0.0'implementation'com.android.support.constraint:constraint-layout:1.1.3'testImplementation'junit:junit:4.12'androidTestImplementation'com.android.support.test:runner:1.0.2'androidTestImplementation'com.android.support.test.espresso:espresso-core:3.0.2'}

          三、常見配置

          整個工程的build.gradle通常不需我們改動,這里我們介紹下一些對模塊目錄下build.gradle文件的常見配置。

          1.依賴第三方庫

          當我們的項目中用到了了一些第三方庫時,我們就需要進行一些配置,以保證能正確導入相關依賴。設置方法很簡單,比如我們在app模塊中中用到了Fresco,只需要在build.gradle文件中的dependencies塊添加如下語句:

          dependencies{...compile'com.facebook.fresco:fresco:0.11.0'}

          這樣一來,Gradle會自動從jcenter倉庫下載我們所需的第三方庫并導入到項目中。

          2.導入本地jar包

          在使用第三方庫時,除了像上面那樣從jcenter倉庫下載,我們還可以導入本地的jar包。配置方法也很簡單,只需要先把jar文件添加到app\libs目錄下,然后在相應jar文件上單擊右鍵,選擇“Ad As Library”。然后在build.gradle的dependencies塊下添加如下語句:

          compilefiles('libs/xxx.jar')

          實際上我們可以看到,系統為我們創建的build.gradle中就已經包含了如下語句:

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

          這句話的意思是,將libs目錄下的所有jar包都導入。所以實際上我們只需要把jar包添加到libs目錄下并“Ad As Library"即可。

          3.依賴其它模塊

          假設我們的項目包含了多個模塊,并且app模塊依賴other模塊,那么我們只需app\build.gradle的denpendencies塊下添加如下語句:

          compileproject(':other')

          4.構建輸出為aar文件

          通常我們構建的輸出目標都是apk文件,但如果我們的當前項目時Android Library,我們的目標輸出就是aar文件。要想達到這個目的也很容易,只需要把build.gradle的第一句改為如下:

          applyplugin:'com.android.library'

          這話表示我們使用的插件不再是構建Android應用的插件,而是構建Android Library的插件,這個插件定義并執行用于構建Android Library的一系列Task。

          5.自動移除不再使用的資源

          只需進行如下配置:

          android{...}buildTypes{release{...shrinkResourcestrue...}}}

          6.忽略Lint錯誤

          在我們構建Android項目的過程中,有時候會由于Lint錯誤而終止。當這些錯誤來自第三方庫中時,我們往往想要忽略這些錯誤從而繼續構建進程。這時候,我們可以只需進行如下配置:

          android{...}buildTypes{release{...shrinkResourcestrue...}}}

          7.集成簽名配置

          在構建release版本的Android項目時,每次都手動導入簽名文件,鍵入密碼、keyalias等信息十分麻煩。通過將簽名配置集成到構建腳本中,我們就不必每次構建發行版本時都手動設置了。具體配置如下:

          signingConfigs{myConfig{//將"xx"替換為自己的簽名文件信息storeFilefile("xx.jks")storePassword"xx"keyAlias"xx"keyPassword"xx"}}android{buildTypes{release{signingConfigsigningConfigs.myConfig//在release塊中加入這行...}}...}

          真實開發中,我們不應該把密碼等信息直接寫到build.gradle中,更好的做法是放在gradle.properties中設置:

          RELEASE_STOREFILE=xxx.jksRELEASE_STORE_PASSWORD=xxxRELEASE_KEY_ALIAS=xxxRELEASE_KEY_PASSWORD=xxx

          然后在build.gradle中直接引用即可:

          signingConfigs{myConfig{storeFilefile(RELEASE_STOREFILE)storePasswordRELEASE_STORE_PASSWORDkeyAliasRELEASE_KEY_ALIASkeyPasswordRELEASE_KEY_PASSWORD}}

          看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注本站行業資訊頻道,感謝您對本站的支持。

          c語言中正確的字符常量是用一對單引號將一個字符括起表示合法的字符常量。例如‘a’。數值包括整型、浮點型。整型可用十進制,八進制,十六進制。八進制前面要加0,后面...

          2022年天津專場考試原定于3月19日舉行,受疫情影響確定延期,但目前延期后的考試時間推遲。 符合報名條件的考生,須在規定時間登錄招考資訊網(www.zha...

          :喜歡聽,樂意看。指很受歡迎?!巴卣官Y料”喜聞樂見:[ xǐ wén lè jiàn ]詳細解釋1. 【解釋】:喜歡聽,樂意看。指很受歡迎。2. 【示例】:這是...

          2022年4月20日消息,騰訊旗下休閑娛樂游戲《QQ堂》將正式停止中國大陸地區的運營。這款游戲將于今日11點關閉服務器,屆時玩家將不能正常登錄游戲。同時,游戲服務器的官網、論壇、專屬客服也均關閉?!禥Q堂》于2004年12月29日推出,是騰訊的大型游戲處女作,至今已運營逾17年,曾是很多人的童年。2021年12月,《QQ堂》因項目組戰略計劃,宣布停運。消息一出一度沖上熱搜,不少網友紛紛直呼,&ld...

          建行所推出的結算通卡,和儲蓄卡的本質都是一樣的,都屬于借記卡的一種,但是在具體的功能方面,建行的結算通卡又有一些特色的地方,和儲蓄卡不太一樣,那么建行結算通卡屬于一類卡嗎?建行結算通卡和儲蓄卡的區別有哪些呢!建行結算通卡屬于一類卡嗎?建行的結算通卡是準貸卡,是建行為方便商戶結算使用而推出的一款銀行卡,因此不是一類卡也不是二類卡。建行的結算通卡具有建行的普通借記卡的所有功能,如儲蓄貸款、轉賬、各類繳...

          什么是平倉盈虧?平倉盈虧與持倉盈虧相對。期貨交易者在實際平倉時所發生的損益。分為即日平倉盈虧和延至平倉盈虧。即日平倉盈虧指當日開倉并平倉的盈虧,延至平倉盈虧指以前開倉當日平倉的盈虧。平倉盈虧就是你把手上的單子平倉后當天賺了或者虧了的錢,要是你的單子是今天開的倉就很好算,但是要是你的單子是以前開的那么平倉盈虧是按昨天結算價計算的。結算價是指當日收盤后,用來結算你盈虧的價格。股市里常用收盤價計算盈虧,...

          TOP
          国产初高中生视频在线观看|亚洲一区中文|久久亚洲欧美国产精品|黄色网站入口免费进人
          1. <nobr id="easjo"><address id="easjo"></address></nobr>

              <track id="easjo"><source id="easjo"></source></track>
              1. 
                

              2. <bdo id="easjo"><optgroup id="easjo"></optgroup></bdo>
              3. <track id="easjo"><source id="easjo"><em id="easjo"></em></source></track><option id="easjo"><span id="easjo"><em id="easjo"></em></span></option>