最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android App開發(fā)中Gradle構(gòu)建過程的配置方法

 更新時間:2016年06月18日 17:41:45   作者:hi大頭鬼hi  
這篇文章主要介紹了Android App開發(fā)中Gradle構(gòu)建過程的配置方法,包括在Gradle中配置manifest的方法,需要的朋友可以參考下

在build文件中使用了Android或者Java插件之后就會自動創(chuàng)建一系列可以運行的任務(wù)。
Gradle中有如下一下默認約定的任務(wù):
1. assemble
該任務(wù)包含了項目中的所有打包相關(guān)的任務(wù),比如java項目中打的jar包,Android項目中打的apk
2. check
該任務(wù)包含了項目中所有驗證相關(guān)的任務(wù),比如運行測試的任務(wù)
3. build
該任務(wù)包含了assemble和check
4. clean
該任務(wù)會清空項目的所有的輸出,刪除所有在assemble任務(wù)中打的包
assemble, check 和 build 任務(wù)實際上并不做任何事情,它們其實只是為插件提供了一個鉤子,真正的事情都是由插件來完成的。
這樣的話,開發(fā)人員就不需要關(guān)心我到底運行的是一個java項目還是一個Android項目,也不用關(guān)心我到底使用了哪些gradle插件,因為我都可以調(diào)用這些約定的任務(wù)來完成構(gòu)建。
比如使用findbugs插件會創(chuàng)建一個新的任務(wù),并且使得check任務(wù)依賴于這個新建的任務(wù),這樣每次執(zhí)行check任務(wù)的時候,都會執(zhí)行這個新建的任務(wù)。
在命令行執(zhí)行
  

gradle tasks 


 
</pre>會列出所有主要的任務(wù)如果想看到全部的任務(wù)和它們的依賴,可以運行:<pre name="code" class="java">gradle tasks --all 
注意:Gradle會自動檢查一個任務(wù)的輸入和輸出。比如連續(xù)兩次運行build任務(wù)的,Gradle會報告所有的任務(wù)都已經(jīng)是最新剛運行過的了,不需要再次運行。這樣的話,任務(wù)之間就算是有相互依賴,也不會導致重復(fù)的執(zhí)行。
Java項目常用的任務(wù)
Java plugin 主要創(chuàng)建了兩個任務(wù):
1. jar
assemble任務(wù)會依賴jar任務(wù),看名字就知道這是負責打jar包的任務(wù)。jar任務(wù)本身又會依賴很多其他的任務(wù),比如classes任務(wù),classes任務(wù)會編譯java代碼
2. test
check任務(wù)會依賴test任務(wù),這個任務(wù)會運行所有的測試。測試代碼使用testClasses任務(wù)編譯,但是我們基本不用手動運行testClasses任務(wù)因為test任務(wù)已經(jīng)添加了對它的依賴。
通常情況下,我們只要運行assemble和check任務(wù)就夠了。
想查看java插件提供的所有任務(wù)以及他們的依賴可以點這個[鏈接](http://gradle.org/docs/current/userguide/java_plugin.html)
Android項目常用的任務(wù)
和其他gradle插件一樣,Android插件也提供了一些默認的任務(wù),比如assemble,check,build,clean,同時它也提供了一些自己特有的任務(wù),比如:
1. connectedCheck
運行那些需要在真機或者模擬器上執(zhí)行的檢查任務(wù),這些任務(wù)會并行地在所有連接的設(shè)備上運行
2. deviceCheck
使用APIs連接遠程設(shè)備執(zhí)行檢查.主要用于CI(持續(xù)集成)服務(wù)上.
上面兩個任務(wù)都會執(zhí)行 assemble 和 check任務(wù)。新加這兩個任務(wù)是很有必要的,這樣可以保證我們可以運行那些不需要連接設(shè)備的檢查任務(wù)。
注意:build任務(wù)并不依賴于deviceCheck或者connectedCheck
一個Android項目通常至少會有兩種輸出:debug apk和release apk。對應(yīng)的gradle中有兩個任務(wù)可以分別輸出不同的apk:

  • assembleDebug
  • assembleRelease

這兩個任務(wù)又會依賴其他的任務(wù)來構(gòu)建一個apk。assemble任務(wù)依賴這兩個任務(wù),調(diào)用assemble任務(wù)就會生成兩種apk。

小提示: Gradle支持在命令行使用camel風格的縮寫來代替任務(wù)的名字,比如:

gradle aR 

等同于

gradle assembleRelease 

只要沒有其他任務(wù)的縮寫也是'aR'
check相關(guān)的任務(wù)的依賴:

  • check依賴lint
  • connectedCheck依賴 connectedAndroidTest和connectedUiAutomatorTest (還沒有實現(xiàn))
  • deviceCheck依賴于那些實現(xiàn)了test擴展的插件所提供的任務(wù)

最后,Android gradle插件還提供了install和uninstall任務(wù),用來安裝和卸載apk

自定義構(gòu)建過程之配置manifest
Android Gradle插件提供了大量的DSL來自定義構(gòu)建過程,下面就來講解如何在gradle中配置manifest。
DSL提供了配置以下Manifest條目的功能:

  • minSdkVersion
  • targetSdkVersion
  • versionCode
  • versionName
  • applicationId (更加方便有效的包名 -- [參考](http://tools.android.com/tech-docs/new-build-system/applicationid-vs-packagename))
  • 測試app的包名
  • Instrumentation test runner

示例:

android { 
  compileSdkVersion 19 
  buildToolsVersion "19.0.0" 
 
 
  defaultConfig { 
    versionCode 12 
    versionName "2.0" 
    minSdkVersion 16 
    targetSdkVersion 16 
  } 
} 

android元素中的defaultConfig元素就是我們用來配置Manifest的地方。早期版本的Android插件使用packageName來配置manifest中的packageName屬性,從0.11.0開始,使用applicationId來代替packageName。這樣可以消除應(yīng)用的包名(其實就是應(yīng)用的id)和java的包名之間的混淆。

更強大的是build文件中描述的配置可以是動態(tài)的,比如可以從文件或者自定義的邏輯中獲取版本名稱。

def computeVersionName() { 
  ... 
} 
 
 
android { 
  compileSdkVersion 19 
  buildToolsVersion "19.0.0" 
 
 
  defaultConfig { 
    versionCode 12 
    versionName computeVersionName() 
    minSdkVersion 16 
    targetSdkVersion 16 
  } 
} 

 注意:不要使用作用域中的getter方法名作為函數(shù)名,比如在defaultConfig{}作用域中調(diào)用getVersionName()將會自動調(diào)用defaultConfig.getVersionName(),而不會調(diào)用自定義的方法。
如果某個屬性的值沒有使用DSL設(shè)置,這個屬性將會使用某些默認值,下表展示了默認值的處理過程。
屬性名    DSL對象中的默認值   默認值

 Property Name  Default value in DSL object  Default value
 versionCode  -1  value from manifest if present
 versionName  null  value from manifest if present
 minSdkVersion  -1  value from manifest if present
 targetSdkVersion  -1  value from manifest if present
 applicationId  null  value from manifest if present
 testApplicationId  null  applicationId + “.test”
 testInstrumentationRunner  null  android.test.InstrumentationTestRunner
 signingConfig  null  null
 proguardFile  N/A (set only)  N/A (set only)
 proguardFiles  N/A (set only)  N/A (set only) 

如果你想在build腳本中使用自定義的邏輯來查詢這些屬性,第二列中的值就很重要。比如,你可以編寫如下的代碼:

if (android.defaultConfig.testInstrumentationRunner == null) { 
  // assign a better default... 
} 

如果屬性的值仍然是null,那么在構(gòu)建的時候,就會使用第三列的默認值,但是DSL元素中并不包含這些默認值,因此你不能在程序中查詢這些值。這樣做的目的是僅在必要的時候(構(gòu)建時)才會去解析manifest內(nèi)容。

相關(guān)文章

  • Android系統(tǒng)檢測程序內(nèi)存占用各種方法

    Android系統(tǒng)檢測程序內(nèi)存占用各種方法

    這篇文章主要介紹了Android系統(tǒng)檢測程序內(nèi)存占用各種方法,本文講解了檢查系統(tǒng)總內(nèi)存、檢查某個程序的各類型內(nèi)存占用、檢查程序狀態(tài)、檢查程序各部分的內(nèi)存占用等內(nèi)容,需要的朋友可以參考下
    2015-03-03
  • Flutter實現(xiàn)底部導航欄創(chuàng)建詳解

    Flutter實現(xiàn)底部導航欄創(chuàng)建詳解

    ConvexBottomBar是一個底部導航欄組件,用于展現(xiàn)凸起的TAB效果,支持多種內(nèi)置樣式與動畫交互。本文將利用ConvexBottomBar創(chuàng)建漂亮的底部導航欄,感興趣的可以學習一下
    2022-01-01
  • Android實現(xiàn)計時與倒計時的常用方法小結(jié)

    Android實現(xiàn)計時與倒計時的常用方法小結(jié)

    這篇文章主要介紹了Android實現(xiàn)計時與倒計時的常用方法,總結(jié)并對比分析了幾種常用計時方法的特點,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-10-10
  • 怎樣實現(xiàn)android http-post方法實例說明

    怎樣實現(xiàn)android http-post方法實例說明

    android http-post方法在開發(fā)中如何實現(xiàn),具體代碼如下,感興趣的朋友可以參考下哈,希望對大家有所幫助
    2013-06-06
  • Android中的popupwindow進入和退出的動畫效果

    Android中的popupwindow進入和退出的動畫效果

    這篇文章主要介紹了Android中的popupwindow進入和退出的動畫,需要的朋友可以參考下
    2017-04-04
  • Android WebView中圖片瀏覽及縮放效果

    Android WebView中圖片瀏覽及縮放效果

    這篇文章主要為大家詳細介紹了Android WebView中圖片瀏覽及縮放效果,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android使用AlertDialog創(chuàng)建對話框

    Android使用AlertDialog創(chuàng)建對話框

    這篇文章主要為大家詳細介紹了Android使用AlertDialog創(chuàng)建對話框的方法料,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Android實現(xiàn)動態(tài)高斯模糊背景效果

    Android實現(xiàn)動態(tài)高斯模糊背景效果

    在現(xiàn)代 Android UI 中,動態(tài)高斯模糊背景 常見于對話框或彈窗后面的模糊遮罩,相比靜態(tài)模糊圖,動態(tài)模糊可隨著內(nèi)容滾動或變化實時更新,使界面更具層次感與沉浸感,所以本文給大家介紹了Android實現(xiàn)動態(tài)高斯模糊背景效果,需要的朋友可以參考下
    2025-04-04
  • Android.mk文件使用速通手冊

    Android.mk文件使用速通手冊

    本文將簡要介紹 Android.mk 的使用,看完本文,你將學會如何將自己的代碼通過 Android.mk 來編譯到工程中,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-08-08
  • Android代碼塊執(zhí)行順序分析總結(jié)

    Android代碼塊執(zhí)行順序分析總結(jié)

    本篇文章主要介紹了Android代碼塊執(zhí)行順序分析總結(jié),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12

最新評論

海伦市| 顺义区| 湘潭县| 珲春市| 河池市| 美姑县| 贡觉县| 德令哈市| 西峡县| 渑池县| 安乡县| 夏津县| 肇州县| 闵行区| 吉木萨尔县| 汨罗市| 高密市| 通榆县| 临沧市| 高淳县| 昭苏县| 灵宝市| 高雄市| 象州县| 客服| 大新县| 阿鲁科尔沁旗| 普陀区| 公安县| 洛川县| 客服| 蒙山县| 青冈县| 咸宁市| 涿州市| 砀山县| 鄢陵县| 会同县| 伽师县| 股票| 怀宁县|