当前位置:   article > 正文

android gradle的常见配置_android gradle配置

android gradle配置

1.build.gradle 常见设置

  1. //依赖其他gradle文件
  2. apply from: "config.gradle"
  3. plugins {
  4. //添加使用插件
  5. id 'com.android.application'
  6. id 'kotlin-android'
  7. id 'kotlin-kapt'
  8. }
  9. example = “this is a test message”
  10. android {
  11. compileSdkVersion 30
  12. //冲突文件处理
  13. packagingOptions {
  14. //jar or aar or .so ... ,如有冲突依次优先使用
  15. pickFirst 'lib/arm64-v8a/test_shared.so'
  16. pickFirst 'lib/x86/test_shared.so'
  17. pickFirst '**/test_shared.so' //匹配任意路径
  18. //合并处理
  19. merge ''
  20. //直接排除
  21. exclude ''
  22. }
  23. defaultConfig {
  24. //设置支持的手机架构
  25. ndk {
  26. abiFilters 'armeabi-v7a'
  27. }
  28. //设置java编译的一些参数
  29. javaCompileOptions {
  30. annotationProcessorOptions {
  31. }
  32. }
  33. //cmake 命令参数
  34. externalNativeBuild {
  35. cmake {
  36. // explicitly build libs
  37. targets 'mind'
  38. abiFilters "armeabi-v7a" // 编译出的so库要支持的手机架构
  39. cppFlags "-std=c++11 -fexceptions -frtti"
  40. arguments "-DMY_NAME=ZHOU" //注意:-D是命令,后面是参数的key-value,向cmakeLists传参
  41. }
  42. }
  43. //dex 分包
  44. multiDexEnabled true
  45. }
  46. signingConfigs {
  47. release {
  48. storeFile file("../keystore/test.keystore")
  49. keyAlias "test"
  50. storePassword "test!"
  51. keyPassword "test!"
  52. v1SigningEnabled true
  53. v2SigningEnabled true
  54. }
  55. }
  56. buildTypes {
  57. release {
  58. minifyEnabled false
  59. signingConfig signingConfigs.release
  60. proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
  61. // 可将gradle中的常量编译到BuildConfig.java,在java代码中使用如:BuildConfig.APP_EXAMPLE
  62. buildConfigField "String", "APP_EXAMPLE", "\"${example}\""
  63. }
  64. debug {
  65. signingConfig signingConfigs.debug
  66. buildConfigField "String", "APP_EXAMPLE", "\"${example}\""
  67. }
  68. }
  69. //开启viewBinding 和 dataBinding
  70. buildFeatures {
  71. viewBinding = true
  72. dataBinding = true
  73. }
  74. //设置java版本
  75. compileOptions {
  76. sourceCompatibility JavaVersion.VERSION_1_8
  77. targetCompatibility JavaVersion.VERSION_1_8
  78. }
  79. //设置kotlin版本
  80. kotlinOptions {
  81. jvmTarget = '1.8'
  82. }
  83. //c层编译参数设置
  84. externalNativeBuild {
  85. cmake {
  86. version '3.6.0' //cmake版本
  87. path 'src/main/cpp/CMakeLists.txt' //cmake编译文件的路径
  88. }
  89. }
  90. //源文件路径设置
  91. sourceSets {
  92. main {
  93. def javaPaths = ["src/main/java"]
  94. def assetsPaths = ["src/main/assets"]
  95. def javaPanda = "src/main/javaPanda"
  96. def javaLoin = "src/main/javaLoin"
  97. def javaMonkey = "src/main/javaMonkey"
  98. //根据条件加入源文件
  99. if ( true ) {
  100. javaPaths.add(javaPanda)
  101. }
  102. if (true) {
  103. javaPaths.add(javaLoin)
  104. }
  105. if (true) {
  106. javaPaths.add(javaMonkey)
  107. }
  108. java.srcDirs = javaPaths
  109. assets.srcDirs = assetsPaths
  110. //设置AndroidManifest.xml的路径,在组件化中经常用到
  111. manifest.srcFile(gradle.ext.isGroup != true ? 'src/main/demo/AndroidManifest.xml' : 'src/main/AndroidManifest.xml')
  112. }
  113. //设置so库的路径,不然的话so库不会打进包里
  114. debug {
  115. jniLibs.srcDirs = ['libs']
  116. }
  117. release {
  118. jniLibs.srcDirs = ['libs']
  119. }
  120. }
  121. }
  122. //清除编译生成的缓存文件
  123. task cleanFiles(type: Delete) {
  124. delete file("./build")
  125. delete file("./.externalNativeBuild")
  126. }
  127. //自定义任务
  128. task buildAStart() {
  129. //之前此任务前先执行cleanFiles
  130. dependsOn cleanFiles
  131. //上面任务执行完后执行
  132. doLast {
  133. exec {
  134. println("buildAStart")
  135. workingDir "../../" //脚本文件路径
  136. commandLine 'sh', 'build_start.sh' //执行脚本文件
  137. args('-t',tags) //向执行脚本传参,如:脚本需要此参数进行操作
  138. }
  139. }
  140. }
  141. //执行此gradle的构建任务之前先执行buildAStart任务
  142. preBuild.dependsOn(buildAStart)

2. Setting.gradle

  1. //全局(扩展)常量,在其他gradle文件中也能拿到,使用时:$gradle.testValue
  2. gradle.ext.testValue = true
  3. gradle.ext.testHello = 'Hello'
  4. gradle.ext.testInt = 1
  5. //相对于setting.gradle的路径,此为该路径下的一个module
  6. gradle.ext.mFilePath = '../Example/mine/demo1/app'
  7. //局部变量
  8. def max = 5
  9. def file = new File(gradle.ext.mFilePath)
  10. if (file.exists()) {
  11. include ':other-module' //引入一个名为other-module的module
  12. rootProject.name = 'myDemo' //设置根工程名称
  13. project(':other-module').projectDir = file //关联other-module这个module的工程路径
  14. }

3.自定义gradle,如config.gradle,将常用的配置抽取出来统一管理,在其他build.gradle中调用如:

rootProject.ext.android.targetSdkVersion
  1. ext{
  2. android = [
  3. compileSdkVersion: 30,
  4. buildToolsVersion: '30.0.2',
  5. minSdkVersion : 19,
  6. targetSdkVersion : 26,
  7. applicationId : "com.zz.example.testDemo",
  8. versionCode : 1,
  9. versionName : "1.0",
  10. ]
  11. //androidx支持库配置
  12. androidx = [
  13. "androidx.appcompat" : "androidx.appcompat:appcompat:1.1.0",
  14. "androidx.lifecycle" : "androidx.lifecycle:lifecycle-extensions:2.1.0",
  15. "androidx.recyclerview" : "androidx.recyclerview:recyclerview:1.1.0",
  16. "androidx.constraintlayout" : "androidx.constraintlayout:constraintlayout:1.1.3",
  17. "androidx.cardview" : "androidx.cardview:cardview:1.0.0",
  18. "android.material" : "com.google.android.material:material:1.0.0",
  19. "androidx.navigation-fragment" : "androidx.navigation:navigation-fragment:2.1.0",
  20. ]
  21. //依赖第三方配置
  22. dependencies = [
  23. "arouter-compiler" : "com.alibaba:arouter-compiler:1.5.1",
  24. "smartRefresh" : "com.scwang.smartrefresh:SmartRefreshLayout:1.1.2",
  25. "eventbus" : "org.greenrobot:eventbus:3.2.0",
  26. "imagepicker" : "com.github.HuanTanSheng:EasyPhotos:3.0.6",
  27. "immersionbar" : "com.gyf.immersionbar:immersionbar:3.0.0", //状态栏库
  28. "permissionx" : "com.permissionx.guolindev:permissionx:1.4.0",
  29. "rxbinding" : "com.jakewharton.rxbinding4:rxbinding:4.0.0",
  30. "okhttp" : "com.squareup.okhttp3:okhttp:4.9.0"
  31. ]
  32. }

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/269931
推荐阅读
相关标签
  

闽ICP备14008679号