1. 程式人生 > >build.gradle文件詳解<三>

build.gradle文件詳解<三>

服務器 mea target rule ttr github -1 ply dot

參考:http://blog.csdn.net/baidu_31093133/article/details/51860637

  1. build.gradle配置參數詳解
  2. //聲明是Android程序
  3. apply plugin: ‘com.android.application‘
  4. android {
  5. //程序在編譯的時候會檢查lint,有任何錯誤提示會停止build,我們可以關閉這個開關
  6. lintOptions {
  7. abortOnError false
  8. //即使報錯也不會停止打包
  9. checkReleaseBuilds false
  10. //打包release版本的時候進行檢測
  11. }
  12. compileSdkVersion 23
  13. //編譯sdk的版本,也就是API Level,例如API-19、API-20、API-21等等。
  14. buildToolsVersion ‘23.0.2‘
  15. //build tools的版本,其中包括了打包工具aapt、dx等等。
  16. //這個工具的目錄位於你的sdk目錄/build-tools/下
  17. aaptOptions.cruncherEnabled = false
  18. aaptOptions.useNewCruncher = false
  19. //關閉Android Studio的PNG合法性檢查的
  20. defaultConfig {
  21. applicationId "com.xiaopao.activity"
  22. //應用包名
  23. minSdkVersion 15
  24. //最小sdk版本,如果設備小於這個版本或者大於
  25. //maxSdkVersion(一般不用)將無法安裝這個應用
  26. targetSdkVersion 22
  27. //目標sdk版本,如果設備等於這個版本那麽android平臺
  28. //就不進行兼容性檢查,運行效率會高一點
  29. versionCode 15
  30. //版本更新了幾次,第一版應用是1,以後每更新一次加1
  31. versionName ‘1.411‘
  32. //版本信息,這個會顯示給用戶,就是用戶看到的版本號
  33. archivesBaseName = "weshare-$versionName"
  34. //指定打包成Jar文件時候的文件名稱
  35. ndk {
  36. moduleName "xiaopaowifisafe" //設置庫(so)文件名稱
  37. ldLibs "log", "z", "m", "jnigraphics", "android"
  38. //引入庫,比如要用到的__android_log_print
  39. abiFilters "armeabi", "x86", "armeabi-v7a" //, "x86" 顯示指定支持的ABIs
  40. cFlags "-std=c11 -fexceptions" // C11
  41. stl "gnustl_static"
  42. }
  43. multiDexEnabled true
  44. //當方法數超過65535(方法的索引使用的是一個short值,
  45. //而short最大值是65535)的時候允許打包成多個dex文件,動態加載dex。這裏面坑很深啊
  46. }
  47. //默認的一些文件路徑的配置
  48. sourceSets {
  49. main {
  50. assets.srcDirs = [‘assets‘] //資源文件
  51. jni.srcDirs ‘src/main/jni‘ //jni文件
  52. jniLibs.srcDir ‘src/main/jniLibs‘ //jni庫
  53. }
  54. }
  55. //multiDex的一些相關配置,這樣配置可以讓你的編譯速度更快
  56. dexOptions {
  57. preDexLibraries = false
  58. //讓它不要對Lib做preDexing
  59. incremental true
  60. //開啟incremental dexing,優化編譯效率,這個功能android studio默認是關閉的。
  61. javaMaxHeapSize "4g" //增加java堆內存大小
  62. }
  63. buildTypes {
  64. release { //release版本的配置
  65. zipAlignEnabled true //是否支持zip
  66. shrinkResources true // 移除無用的resource文件
  67. minifyEnabled true //是否進行混淆
  68. proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
  69. //release的Proguard默認為Module下的proguard-rules.pro文件.
  70. debuggable false //是否支持調試
  71. //ndk的一些配置
  72. ndk {
  73. // cFlags "-std=c11 -fexceptions -O3 -D__RELEASE__" // C11
  74. // platformVersion = "19"
  75. moduleName "xiaopaowifisafe" //設置庫(so)文件名稱
  76. ldLibs "log", "z", "m", "jnigraphics", "android"
  77. //引入庫,比如要用到的__android_log_print
  78. abiFilters "armeabi", "x86", "armeabi-v7a"//, "x86"
  79. cFlags "-std=c11 -fexceptions" // C11
  80. stl "gnustl_static"
  81. }
  82. //采用動態替換字符串的方式生成不同的release.apk
  83. applicationVariants.all { variant ->
  84. variant.outputs.each { output ->
  85. def outputFile = output.outputFile
  86. if (outputFile != null && outputFile.name.endsWith(‘release.apk‘)) {
  87. def timeStamp = new Date().format(‘yyyyMMddHH‘);
  88. def fileName = "WeShare-${defaultConfig.versionName}" + "-" + timeStamp + "-lj-" + ".apk";
  89. output.outputFile = file("${outputFile.parent}/${fileName}")
  90. }
  91. }
  92. }
  93. jniDebuggable false //關閉jni調試
  94. }
  95. debug {//debug版本的配置
  96. minifyEnabled false
  97. zipAlignEnabled true
  98. shrinkResources true // 移除無用的resource文件
  99. proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘
  100. debuggable true
  101. // jniDebuggable true
  102. ndk {
  103. cFlags "-std=c11 -fexceptions -g -D DEBUG" // C11
  104. }
  105. jniDebuggable true
  106. }
  107. }
  108. compileOptions {
  109. //在這裏你可以進行 Java 的版本配置,
  110. //以便使用對應版本的一些新特性
  111. }
  112. productFlavors {
  113. //在這裏你可以設置你的產品發布的一些東西,
  114. //比如你現在一共軟件需要發布到不同渠道,
  115. //且不同渠道中的包名不同,那麽可以在此進行配置;
  116. //甚至可以設置不同的 AndroidManifest.xml 文件。
  117. xiaopao {
  118. }
  119. googlePlay {
  120. }
  121. solo {
  122. }
  123. }
  124. productFlavors.all {
  125. flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
  126. }
  127. //所謂ProductFlavors其實就是可定義的產品特性,
  128. //配合 manifest merger 使用的時候就可以達成在一次編譯
  129. //過程中產生多個具有自己特性配置的版本。
  130. //上面這個配置的作用就是,為每個渠道包產生不同的 UMENG_CHANNEL_VALUE 的值。
  131. }
  132. //一些依賴的框架
  133. dependencies {
  134. compile ‘com.jakewharton:butterknife:7.0.1‘
  135. compile ‘com.android.support:appcompat-v7:23.4.0‘
  136. compile ‘com.android.support:support-v4:23.4.0‘
  137. compile ‘com.github.pwittchen:reactivenetwork:0.1.3‘
  138. compile ‘de.hdodenhof:circleimageview:2.0.0‘
  139. compile ‘com.android.support:design:23.4.0‘
  140. compile ‘pl.tajchert:waitingdots:0.2.0‘
  141. }
  142. //聲明是要使用谷歌服務框架
  143. apply plugin: ‘com.google.gms.google-services‘
  144. //第三方依賴庫的本地緩存路徑
  145. task showMeCache << {
  146. configurations.compile.each { println it }
  147. }
  148. //使用maven倉庫。android有兩個標準的library文件服務器,一個jcenter一個maven。兩者毫無關系。
  149. //jcenter有的maven可能沒有,反之亦然。
  150. //如果要使用jcenter的話就把mavenCentral()替換成jcenter()
  151. repositories {
  152. mavenCentral()
  153. }

build.gradle文件詳解<三>