经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 软件/图像 » Gradle » 查看文章
浅析Android中build.gradle的实用技巧
来源:jb51  时间:2019/3/6 8:57:50  对本文有异议

1.替换符的使用

(1)在 app-android-defaultConfig (或者多渠道打包)下面可以这样使用

  1. android {
  2. defaultConfig {
  3. manifestPlaceholders = [
  4. //高德地图key
  5. GDKEY: "123456789",
  6. ]
  7. }
  8. }

(2)在 AndroidManifest.xml 文件的 application 标签下面这样引用

  1. <!-- 高德地图 -->
  2. <meta-data
  3. android:name="com.amap.api.v2.apikey"
  4. android:value="${GDKEY}" />

2.打包设置appname(启动图标类似,res下面的都可以这样使用)

  1. android {
  2. defaultConfig {
  3. //在string.xml中不能出现app_name这个字段,否则生成报错
  4. resValue "string", "app_name", "app名称"
  5. }
  6. }

3.生成BuildConfig.java字段

在build.gradle中

  1. android {
  2. defaultConfig {
  3. //生成一个boolea类型的变量
  4. buildConfigField "boolean", "IS_TEST_URL", "true"
  5. //生成一个字符串变量
  6. buildConfigField "String", "APP_UPDATE_TIME", "\"${System.currentTimeMillis().toString()}\""
  7. }
  8. }

在java代码

  1. public final class BuildConfig {
  2. // Fields from product flavor: 渠道名
  3. public static final String APP_UPDATE_TIME = "1551754973086";
  4. public static final boolean IS_TEST_URL = false;
  5. }

4.多渠道打包(注意在defaultConfig下面添加flavorDimensions "versionCode")

  1. android {
  2. compileSdkVersion 28
  3. defaultConfig {
  4. minSdkVersion 19
  5. targetSdkVersion 28
  6. testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
  7. flavorDimensions "versionCode"
  8. productFlavors {
  9. name1 {
  10. applicationId "com.test.name"
  11. versionName "0.1.4"
  12. versionCode 5
  13. resValue "string", "app_name", "app名字"
  14. buildConfigField "boolean", "IS_TEST_URL", "false"
  15. buildConfigField "String", "APP_UPDATE_TIME", "\"${System.currentTimeMillis().toString()}\""
  16. }
  17. }

5.设置签名

  1. android
  2. signingConfigs {
  3. release {
  4. keyAlias ''
  5. keyPassword ''
  6. storeFile file('./sign.jks')
  7. storePassword ''
  8. v2SigningEnabled false
  9. }
  10. }
  11. buildTypes {
  12. release {
  13. debuggable false
  14. minifyEnabled true
  15. shrinkResources true
  16. useProguard true
  17. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  18. signingConfig signingConfigs.release
  19. }
  20. debug {
  21. debuggable true
  22. minifyEnabled false
  23. shrinkResources false
  24. useProguard false
  25. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  26. signingConfig signingConfigs.release
  27. }
  28. }

6.更改打包的apk名

  1. android{
  2. android.applicationVariants.all { variant ->
  3. variant.outputs.all {
  4. Date nowTime = new Date()
  5. SimpleDateFormat time = new SimpleDateFormat("MM月dd日HH时mm分")
  6. outputFileName = "${variant.flavorName}(${variant.versionCode}_${variant.versionName})(${time.format(nowTime)}).apk"
  7. }
  8. }
  9. }

7.引入第三方库的时候,剔除某些不需要的包或者重复的包

1.直接在configuration中排除

  1. configurations {
  2. compile.exclude module: 'commons'
  3. all*.exclude group: 'org.gradle.test.excludes', module: 'reports'
  4. }

2.在具体的某个dependency中排除

  1. dependencies {
  2. implementation("com.github.bumptech.glide:glide:4.8.0") {
  3. exclude module: 'appcompat-v7'
  4. }
  5. }

PS:Android Studio开发Build.gradle小技巧

引用版本统一规范

Android开发存在着众多版本的不同,比如compileSdkVersion、minSdkVersion、targetSdkVersion以及项目中依赖第三方库的版本,不同的module及不同的开发人员都有不同的版本,所以需要一个统一版本规范的文件,现在我就来介绍一种方式。

在项目根目录,也就是跟app同一目录下的build.gradle文件,如下图所示


在其最后添加如下groovy代码。

  1. ext {
  2. compileSdkVersion = 25
  3. buildToolsVersion = "25.0.0"
  4. minSdkVersion = 19
  5. targetSdkVersion = 19
  6. supportVersion = '25.3.1'
  7. rxjavaVersion = '1.1.8'
  8. rxandroidVersion = '1.2.1'
  9. glideVersion = '3.6.1'
  10. junitVersion = '4.12'
  11. deps = [
  12. appcompatv7 : "com.android.support:appcompat-v7:$supportVersion",
  13. supportv4 : "com.android.support:support-v4:$supportVersion",
  14. recyclerviewv7: "com.android.support:recyclerview-v7:$supportVersion",
  15. rxjava : "io.reactivex:rxjava:$rxjavaVersion",
  16. rxandroid : "io.reactivex:rxandroid:$rxandroidVersion",
  17. glide : "com.github.bumptech.glide:glide:$glideVersion",
  18. junit : "junit:junit:$junitVersion"
  19. ]
  20. }

有了这个规范,那么我们在app下的build.gradle文件就可以这样来引用了

  1. android {
  2. compileSdkVersion rootProject.compileSdkVersion
  3. buildToolsVersion rootProject.buildToolsVersion
  4. defaultConfig {
  5. applicationId "com.ecarx.thememanager"
  6. minSdkVersion rootProject.minSdkVersion
  7. targetSdkVersion rootProject.targetSdkVersion
  8. versionCode 1
  9. versionName "1.0"
  10. }
  11. ...
  12. }
  13. dependencies {
  14. compile fileTree(include: ['*.jar'], dir: 'libs')
  15. compile deps.supportv4
  16. compile deps.appcompatv7
  17. compile deps.recyclerviewv7
  18. compile deps.rxjava
  19. compile deps.rxandroid
  20. compile deps.glide
  21. testCompile deps.junit
  22. }

是不是一劳永逸了,今后修改版本只需要修根目录下的build.gradle文件即可把所有依赖版本都修改

对资源进行分包

我们可以对每个页面的资源都进行具体分类,不只是layout,还有drawable及value,是不是心动了,赶紧照着如下配置试一试吧,别再让资源文件们“混为一潭”了。

方法很简单,配置我们的app文件夹下的build.gradle文件,比如我的

  1. android {
  2. ...
  3. sourceSets {
  4. main {
  5. res.srcDirs =
  6. [
  7. 'src/main/res',
  8. 'src/main/res/layouts',
  9. 'src/main/res/layouts/home',
  10. 'src/main/res/layouts/hot_sale',
  11. 'src/main/res/layouts/amuse',
  12. 'src/main/res/layouts/delicacy',
  13. 'src/main/res/layouts/food_management',
  14. 'src/main/res/layouts/settings',
  15. ]
  16. }
  17. }
  18. }

新建相关文件夹,配置完之后,sync project一下就成功了

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持w3xue。

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号